0

我必须为学校做一个预测游戏。为了让 2 个随机团队互相比赛,我在表格 1 上完成了以下代码:

procedure TfrmUserInput.FormCreate(Sender: TObject);
const
arrT1 : array[1..6] of string = ('Blue Bulls','Griquas','EP Kings','Sharks','Cheetahs','Valke');
arrT2 : array[1..6] of string = ('Lions','Pumas','Leopards','Western Province','Kavaliers','Eagles');
begin
Randomize;
sTeam1 := arrT1[Random(5)+1];
Randomize;
sTeam2 := arrT2[Random(5)+1];
lblT1Pred.Caption := (sTeam1 + ' predicted score :');
lblT2Pred.Caption := (sTeam2 + ' predicted score :');
rbTeam1.Caption := sTeam1;
rbTeam2.Caption := sTeam2;
end;

在第二种形式中,我有以下内容:

procedure TfrmAdminInput.FormCreate(Sender: TObject);
begin
rbT1.Caption := sTeam1;
rbT2.Caption := sTeam2;
end;

sTeam1 和 sTeam2 是全局变量。

现在在第 4 个表格中,我单击一个按钮开始预测下一场比赛 - 因此我需要选择另外 2 个随机团队,起初我只想创建重复数组并使用以下代码,但这给了我一个问题'Undeclared identifier : lblT1Pred' - 这个问题对于 lblT2Pred 和第二个表单上的标签(rbT1.Caption 和 rbT2.Caption)以及表单 1 上的单选按钮标题是相同的。代码如下:

sTeam1 := arrT1[Random(5)+1];
sTeam2 := arrT2[Random(5)+1];
frmUserInput.lblT1Pred.Caption := (sTeam1 + ' predicted score :');
frmUserInput.lblT2Pred.caption := (sTeam2 + ' predicted score :');
frmUserInput.rbTeam1.Caption := sTeam1;
frmUserInput.rbTeam2.Caption := sTeam2;
frmAdminInput.rbT1.Caption := sTeam1;
frmAdminInput.rbT2.Caption := sTeam2;

表格 1 是 frmUserInput,表格 2 是 frmAdminInput,表格 4 是 frmWinners。

所以只是为了修改我想要做的是通过单击表单 4 上的按钮来更改表单 1 和表单 2 上的标签和单选按钮的标题(此按钮也将隐藏表单 4 并显示表单 1)。

4

1 回答 1

5

如果您在 Unit1 中定义了一个名为 Form1 的全局变量,并且该表单有一个名为 Label1 的标签,那么您可以从另一个单元访问它,如下所示:

  • 将 Unit1 添加到另一个单元的 uses 子句中。
  • 将标签称为 Form1.Label1。

为避免循环引用,您可能需要将 Unit1 添加到其他单元的实现部分的使用子句中。

也就是说,我更希望表单提供一种公共方法来完成工作,而不是让所有和杂乱无章的人玩弄它的私密部分。

于 2013-10-26T10:20:52.523 回答