Alo*_*mer 5 delphi delphi-2006
为了防止新创建的模态窗口隐藏在其模态父窗口下,我习惯于PopupParent
在调用时始终进行设置ShowModal
(如此处,此处和此处所建议):
function TMyForm.ShowModal(ParentForm: TCustomForm): Integer;
begin
PopupParent := ParentForm;
Result := inherited ShowModal;
end;
Run Code Online (Sandbox Code Playgroud)
但是,当进行调试时(在FormCreate中设置表单时丢失了表单放置的问题),我意识到设置PopupParent
会导致对的调用ReCreateWindow
,从而破坏并重新创建基础的Windows屏幕对象。
我的问题:
PopupParent
-可能导致什么问题?是否存在可行的替代方案?编辑:
我认为以上所有链接的问题都可以解决相同的问题,第三个链接可以最好地描述这个问题:
[使用ShowModal打开一个窗体],此窗体使用ShowModal打开另一个窗体,因此我们已堆叠了模态窗体。有时存在一个问题,当我们以新形式调用ShowModal时,它将隐藏在以前的形式之后,而不是显示在顶部。按alt + tab后,表单返回顶部[...]
这个问题很老了,但仍然相关。有关此问题的最佳信息来源来自 Allen Bauer 本人:\n http://blog.therealoracleatdelphi.com/2004/02/popupmode-and-popupparent_10.html
\n\n(回溯:\n https://web.archive.org/web/20160324062228/http://blogs.embarcadero.com/abauer/2004/02/10/295)
\n\n您会发现:\n“如果您在 ShowModal 之前明确将 PopupMode 属性设置为 pmAuto,就像在设计时一样,则不需要重新创建。”
\n\n这样你的代码应该是:
\n\nfunction TMyForm.ShowModal(ParentForm: TCustomForm): Integer;\nbegin\n PopupMode := pmAuto;\n PopupParent := ParentForm;\n Result := inherited ShowModal;\nend;\n
Run Code Online (Sandbox Code Playgroud)\n
归档时间: |
|
查看次数: |
1750 次 |
最近记录: |