gpt4 book ai didi

forms - Delphi onshow 主窗体/模态窗体

转载 作者:行者123 更新时间:2023-12-03 14:46:55 26 4
gpt4 key购买 nike

我有一个项目,有一个主窗体和一些其他窗体。当应用程序加载时,它需要执行一些任务并在主窗体顶部以模式形式显示结果。我遇到的问题是,如果我调用函数来执行任务/创建并在主窗体 onshow 事件中显示模态窗体,则模态窗体会出现,但主窗体不会出现,直到模态窗体关闭,即我期望发生什么。为了解决这个问题,我在主窗体中添加了一个计时器,并在主窗体 onshow 事件上启动它,计时器调用函数来执行任务/创建并显示模式窗体。所以现在主窗体出现在模态窗体之前。

但是我不认为这是最好的解决方案,并且想知道是否有人可以提供更好的解决方案。

我使用的是Delphi 7

科林

最佳答案

一个常用的选项是在表单的 OnShow 中向自己发布消息。像这样:

const
WM_SHOWMYOTHERFORM = WM_USER + 0;

type
TMyMainForm = class(TForm)
procedure FormShow(Sender: TObject);
protected
procedure WMShowMyOtherForm(var Message: TMessage); message WM_SHOWMYOTHERFORM;
end;

...


procedure TMyMainForm.FormShow(Sender: TObject);
begin
PostMessage(Handle, WM_SHOWMYOTHERFORM, 0, 0);
end;

procedure TMyMainForm.WMShowMyOtherForm(var Message: TMessage);
begin
inherited;
with TMyOtherForm.Create(nil) do begin
try
ShowModal;
finally
Free;
end;
end;
end;

关于forms - Delphi onshow 主窗体/模态窗体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8926615/

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