我正在使用Delphi 7.当我尝试在FormCreate中创建一个对象时,它失败了(实际上它只是挂起)。当我尝试在FormShow中做同样的事情时,它的工作原理。请注意,我不是在谈论创建像TEdit这样的可视组件。它是一个数据库抽象对象。任何想法为什么会这样?是否有关于此主题的指南?
答案 0 :(得分:2)
我的第一个猜测是你正在访问尚未创建的DataModule。如果项目的来源如下所示:
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TDataModule1, DataModule1);
Application.Run;
end.
您的TForm1.FormCreate
如下所示:
begin
DataModule1.AddUsersToStringList(Self.ComboBox1.Items);
end;
然后FormCreate
将失败,因为它是作为Application.CreateForm(TForm1, Form1);
行的一部分运行的,而您的数据模块尚未创建。
有两种解决方案:
TCustomForm
创建的第一个Application.CreateForm
后代,而不是第一个对象。答案 1 :(得分:2)
1)原因是因为在FormCreate上,还没有创建Form的句柄。
如果您的数据库对象需要表单句柄,请执行以下操作:
Self.HandleNeeded; //在FormCreate上。
2)另一个原因可能是您的数据库组件需要连接并且它只在DFM上连接?