Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何调用DELPHI中任何单元的初始化块中的任何过程或函数_Delphi_Initialization_Pascal - Fatal编程技术网

如何调用DELPHI中任何单元的初始化块中的任何过程或函数

如何调用DELPHI中任何单元的初始化块中的任何过程或函数,delphi,initialization,pascal,Delphi,Initialization,Pascal,我试图在我的单元的初始化块中调用一个过程,因为我希望该过程在应用程序启动时执行,而不是执行其他任何操作。 编译器显示此错误: [dcc32 Error] Unit2.pas(152): E2076 This form of method call only allowed for class methods or constructor 这就是我的程序 procedure TForm2.initilize() ; begin ListBox2.Items.Add('Mohi

我试图在我的单元的初始化块中调用一个过程,因为我希望该过程在应用程序启动时执行,而不是执行其他任何操作。 编译器显示此错误:

[dcc32 Error] Unit2.pas(152): E2076 This form of method call only allowed for class methods or constructor
这就是我的程序

procedure TForm2.initilize()   ;
      begin
  ListBox2.Items.Add('Mohit');
  ListBox2.Items.Add('Raghav');
  ListBox2.Items.Add('Maninder');
  ListBox2.Items.Add('Tanya');
      end;
这就是初始化中调用的地方

initialization
begin
     TForm2.initilize();
end;

我更喜欢经典的构造函数。优点是,即使对于帧,也可以使用相同的方法,因为帧的类型没有OnCreate

interface
...
type
TForm2 = class(TForm)
private
  procedure initialize;
  ...
public
  constructor Create(AOwner: TComponent); override;
  ...
end;

implementation

constructor TForm2.Create(AOwner: TComponent);
begin
  inherited;
  initialize;
end;

在创建列表框之前,不能向列表框中添加项目。表单的OnCreate就是这样做的。不管怎样,错误消息是说您需要“初始化”成为类方法。但是这样做没有帮助,因为类方法没有访问类实例的权限(想想你的场景,还没有实例)。你当然不想在单元初始化中这样做。你提供的代码应该在表单的
OnCreate
事件中,或者,应在设计时使用对象检查器将项目添加到列表框中。您所做的尝试永远不会起作用,因为您无法将项添加到创建表单之前不存在的列表框中。即使是自动创建表单,
初始化
也会在创建表单之前运行,这意味着表单仍然不存在。您还试图添加到表单类本身,而不是表单的实例,这(同样)永远不会起作用。