所有模态窗体都显示在屏幕的左上角,而设置为
BorderIcons = [biSystemMenu]
BorderStyle = bsSingle
Position = poOwnerFormCenter
之前它曾经按照设置显示,但最近我做了一些导致问题的更改
让我进一步解释,以便建议适当的解决方案。
我的应用程序有近50种以上的表单,我将它们打开为CustomerForm.Show/ShowModal。 所有表单都是继承来自一个根表单,其中包含以下代码以在任务栏上显示图标
procedure TBaseForm.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.ExStyle := Params.ExStyle or WS_Ex_AppWindow;
Params.WndParent := GetDesktopwindow;
end;
有一个问题是,无论何时从任何表单打开文件打开或文件保存对话框(无论是否为模态形式),主表单都在顶部,为了解决这个问题,我制作了一个虚拟主表单和
将Application.ShowMainForm := false;
放在项目文件中,这样可以正常工作,但这会启动所有模态窗体出现在屏幕的左上角。
你能否就此提出建议?
答案 0 :(得分:0)
当您为所有窗口使用相同的祖先时,可以使用参数Parent:TYourForm添加自己的公共函数ShowModal。
在此方法中,您将获得父级的位置,计算中心,并将模态窗口移动到其中心。之后,你可以用自己的方式调用真正的ShowModal ......
答案 1 :(得分:0)
将其添加到主表单的创建中:
SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or
WS_EX_TOPMOST);