模态窗体与非模态窗体

来源:互联网 发布:淘宝店铺信用级别 编辑:程序博客网 时间:2024/05/16 23:42

区别

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

 

实现

   在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
原创粉丝点击