gpt4 book ai didi

Delphi 在加载时禁用表单

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

在我的应用程序中,我有一个主窗体,能够在数据库中加载一些图像。加载图像时,我想显示一个带有进度指示器的表单(带有 bsNone 边框样式)。

但是,如果我用 ShowModal 来显示表单,主表单的执行就会停止,所以我不能这样做。

如果我调用 Show,用户可以访问所有其他表单组件,这可能很危险,而照片未完全加载。

我需要找到方法,在加载未完成时禁用主表单上的所有内容。

请告诉我,这怎么可能。

最佳答案

MainForm 设置为进度表单的 PopupParent,以便 MainForm 永远不会出现在进度表单的顶部。然后,只需在进度表单打开时设置 MainForm.Enabled := False 并在进度表单关闭时设置 MainForm.Enabled := True 即可。

procedure TMainForm.ShowProgressForm;
begin
with TProgressForm.Create(nil) do
begin
PopupParent := Self;
OnClose := ProgressFormClose;
Show;
end;
Enabled := False;
end;

procedure TMainForm.ProgressFormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
Enabled := True;
end;

这模拟了ShowModal()对用户的行为方式(当进度表单打开时,MainForm不是用户交互的),但不会阻塞代码。

关于Delphi 在加载时禁用表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17504679/

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