我想通过单击另一个表单Delphi 7上的按钮来更改一个表单上标签的标题

Qui*_*n96 0 forms delphi

我必须为学校开展预测游戏.为了让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;
Run Code Online (Sandbox Code Playgroud)

在第二个表格中,我有以下内容:

procedure TfrmAdminInput.FormCreate(Sender: TObject);
begin
rbT1.Caption := sTeam1;
rbT2.Caption := sTeam2;
end;
Run Code Online (Sandbox Code Playgroud)

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;
Run Code Online (Sandbox Code Playgroud)

表单1是frmUserInput,表单2是frmAdminInput,表单4是frmWinners.

因此,修改我想要做的是通过单击表单4上的按钮更改表单1和表单2上的标签和单选按钮的标题(此按钮也将隐藏表单4并显示表单1).

Dav*_*nan 5

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

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

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

也就是说,我希望表格提供一种公共方法来完成工作,而不是让所有人和其他人玩私人部分.