我正在尝试访问表单数组中的一个全局变量,我尝试过使用它:
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;
以上显然不起作用。任何帮助将不胜感激。
答案 0 :(得分: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
,它提供了一个活动表格列表。这可能比自定义列表更适合。
答案 1 :(得分:1)
更改您的代码以使用表单的Tag属性...它是一个便笺簿,用于存储整数值...或来自对象的任何内容(.tag:=整数(MyObject))和整数... < / p>
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;