如何调用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
事件中,或者,应在设计时使用对象检查器将项目添加到列表框中。您所做的尝试永远不会起作用,因为您无法将项添加到创建表单之前不存在的列表框中。即使是自动创建表单,初始化
也会在创建表单之前运行,这意味着表单仍然不存在。您还试图添加到表单类本身,而不是表单的实例,这(同样)永远不会起作用。