我的应用程序完成初始化并创建主窗体后,我便具有要执行的功能。我确实在表单OnShow事件中有代码(称为ProcedureX),但是我刚刚注意到它被调用了两次,因为OnShow触发了两次。当主程序DPR调用时触发:
Application.CreateForm(TMainForm, MainForm) ;
正如我所期望的。但是之后,当我从包含屏幕上的表格位置的INI文件中读取内容时,我会打个电话:
MainForm.position := poScreenCenter ;
这样,它将再次触发OnShow事件。
我在哪里可以调用ProcedureX,它只能被调用一次,并且需要先创建主窗体才能执行它。
最佳答案
首次调用该过程时,可以测试并设置标志。像这样:
type
TForm1 = class(TForm)
procedure FormShow(Sender: TObject);
private
FRunOnce: Boolean;
public
[...]
[...]
procedure TForm1.FormShow(Sender: TObject);
begin
if not FRunOnce then begin
FRunOnce := True;
ProcedureX;
end;
end;