如何在OnTop窗体上面显示一个模态窗体

  • 主题发起人 主题发起人 import
  • 开始时间 开始时间
I

import

Unregistered / Unconfirmed
GUEST, unregistred user!
应该这样显示模态窗体:
application.NormalizeAllTopMosts;
ModalForm.ShowModal;
Application.RestoreTopMosts;
使用Delphi本身提供的切换OnTop的属性,可能造成窗体闪烁,可以用API来代替:
SetWindowPos(handle,hwnd_topmost,0,0,0,0,swp_nomove or swp_nosize);//Set
SetWindowPos(handle,hwnd_notopmost,0,0,0,0,swp_nomove or swp_nosize);//Unset
但是这个方法不适合于二级窗体。
OnTop窗体的一个问题:
Kingron:
例如一个Form1,Form2,Form1中调用Form2:
Hide;
form2.ShowModal;// or Show
这个时候,Form2是不能OnTop的。必须修改代码如下:
try
Hide;
Application.NormalizeAllTopMosts;
LitterWin.ShowModal;
Application.RestoreTopMosts;
finally
show;
end;
而且,在Form2的OnShow中,必须添加代码:
SetWindowPos(handle, hwnd_topmost, 0, 0, 0, 0, swp_nomove or swp_nosize);
 
后退
顶部