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

字体大小: 中小 标准 ->行高大小: 标准
应该这样显示模态窗体:

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);

此文章由 http://www.ositren.com 收集整理 ,地址为: http://www.ositren.com/htmls/68197.html