0

我正在尝试访问表单数组中的一个表单上的全局变量,我尝试过使用它:

max_forms := 3

setlength(form_array, max_forms);

form_array[1] := frm1;
form_array[2] := frm2;

if current_form > 0 then
begin
  form_array[current_form].fNumber := Number;
  form_array[current_form].ShowModal;
end;

以上显然不起作用。任何帮助将不胜感激。

4

2 回答 2

2

我想问题是fNumber具有私人访问权限。

根据该字段的用途,一种解决方案可能是创建一个属性来获得写访问权限:

property Number: Integer read FNumber write FNumber;

然后你可以做任务:

form_array[current_form].Number := Number;

关于全局变量:

如果这实际上是问题所在并且FNumber是您正在谈论的“全局”变量,那么您使用了错误的词。FNumber是一个字段,属于一个表单。表单成员不是全局的。

查看表单的来源。如果它是由 Delphi IDE 生成的,你会在它下面找到一个变量声明:

end; // End of TForm1

var
  Form1: TForm1;

implementation

Form1是一个真正的全局变量,因为它存在于单元的接口中和任何类之外,并且您可以从任何地方访问(通常不是一件好事),因为FNumber您首先需要访问表单实例。

PS:我不知道您到底想达到什么目标,但也许您可以看看Screen.Forms哪个提供了活动表单的列表。这可能比自定义列表更适合。

于 2009-08-25T09:06:58.893 回答
1

更改您的代码以使用表单的 Tag 属性...它是您存储整数值的便笺簿...或来自对象(.tag := integer(MyObject)) 和整数的任何内容...

max_forms := 3

setlength(form_array, max_forms);

form_array[1] := frm1;
form_array[2] := frm2;

if current_form > 0 then
begin
  form_array[current_form].Tag:= Number;
  form_array[current_form].ShowModal;
end;
于 2012-05-04T12:47:32.947 回答