gpt4 book ai didi

delphi - Delphi中的FormCreate问题

转载 作者:行者123 更新时间:2023-12-03 15:20:28 25 4
gpt4 key购买 nike

我正在使用其他人的代码,并且正在添加新表单

所以,我已经创建了表单,我可以打开它,使用按钮和列表等,但我在 formcreate 上执行操作时遇到问题。

我通过这样做来制作表格:

procedure TModelForm.RepeatOpen(Sender: TObject);
var
DefForm : TForm5;
begin
DefForm := TForm5.Create(Self);

Self.Visible := False;
try
DefForm.ShowModal;
finally
Self.Visible := True;
DefForm.Release;
end;
end;

在我的 TForm5 中,我有一个程序

procedure TForm5.FormCreate(Sender: TObject);
begin
inherited;
RunList := CModelList.Create;
RunList.ReadData;
RunList.FillList(ListBox1.Items);
end;

但它没有做任何事情

我也有

procedure TForm5.PopulateListClick(Sender: TObject);
begin
RunList := CModelList.Create;
RunList.ReadData;
RunList.FillList(ListBox1.Items);
end;

它被分配给一个按钮,这实际上可以工作并填充我的列表框

我一直在网上查找它,似乎没有 OnCreate 函数,有一种方法可以覆盖它,但似乎应该有一种方法来定义首次创建框架时发生的情况

另外,我使用 FormCreate 的原因是因为这就是我正在使用的代码正在做的事情,而且它似乎正在工作

谢谢!

最佳答案

您可能忘记将 FormCreate 分配给 OnCreate。就我个人而言,我会通过重写构造函数来实现这一点,这样就不会妨碍 .dfm 表单。

顺便说一句,我想对您编写的代码发表评论:

DefForm := TForm5.Create(Self);
Self.Visible := False;
try
DefForm.ShowModal;
finally
Self.Visible := True;
DefForm.Release;
end;

您不需要为 DefForm 分配所有者,因为您正在承担清理任务,尽管分配所有者通常没有什么坏处。更重要的是,try/finally 尝试做两项工作,但实际上只能做一项。不需要调用Release,您只需调用Free即可。

我会这样写:

DefForm := TForm5.Create(nil);
try
Self.Visible := False;
try
DefForm.ShowModal;
finally
Self.Visible := True;
end;
finally
DefForm.Free;
end;

关于delphi - Delphi中的FormCreate问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5981625/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com