加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Delphi在加载时禁用表单

发布时间:2020-12-15 09:50:01 所属栏目:大数据 来源:网络整理
导读:在我的应用程序中,我有一个主窗体,能够在数据库中加载一些图像. 在加载图像时,我想显示一个带有进度指示器的表单(带有bsNone边框样式). 但是,如果我使用ShowModal显示表单,主表单的执行会停止,所以我不能这样做. 如果我调用Show,则用户可以访问所有其他表单
在我的应用程序中,我有一个主窗体,能够在数据库中加载一些图像.
在加载图像时,我想显示一个带有进度指示器的表单(带有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;

这模拟了howShowModal()对用户的行为(MainForm在进度表打开时不是用户交互的),但没有阻止代码.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读