模态窗体与非模态窗体

区别

    模态与非模态窗体的主要区别是窗体显示的时候是否可以操作其他窗体。模态窗体不允许操作其他窗体,非模态窗体可以操作其他窗体。

 

实现

   在Delphi中,window.show 实现非模态窗体,window.showModel创建的是非模态窗体

   有时为了让非模态窗体一直显示着,就需要将窗体的formStyle设置为StayOnTop.如果这种方式不行的话,可以采用CreateParams函数实现,如下:

例如

procedure TGCLSearchEdoForm.CreateParams(var Params: TCreateParams);
begin
  inherited;
  With Params do
  begin
    //给窗体设置总显示在前方  form的stayontop有时会混乱
    WndParent := Application.MainForm.Handle;
    //Params.ExStyle := WS_EX_TOPMOST;  

  end;
end;

 

其他收获

①delphi读取硬盘的空间大小等数据可以采用GetDiskFreeSpaceEx函数,原型如下:

  GetDiskFreeSpaceEx: function (Directory: PChar; var FreeAvailable,
    TotalSpace: TLargeInteger; TotalFree: PLargeInteger): Bool stdcall = nil;

 第一个参数表示磁盘路径,第二个参数是返回的可用磁盘空间大小,第三个参数返回的是总共磁盘大小,第四个参数表示剩余空间大小。

举例说明:

   GetDiskFreeSpaceEx(PChar('C:\'),iFreeDiskSpace, iTotalDiskSpace, @iTotalSpace)

 

②ShellExecute(0, 'open', PChar(ABackupRootPath), nil, nil, SW_NORMAL)即采用shell命令打开一个目录

 

经历

    将选择图元删除窗体从模态窗体变为非模态窗体;

    同步钢筋代码:磁盘满后提示

 

今日遗留问题

   非模态窗体被focus的时候数据没有及时刷新,请问如何刷新?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值