【问题标题】:Embarcadero C++ Builder XE, form order and form groupsEmbarcadero C++ Builder XE,表单顺序和表单组
【发布时间】:2012-06-24 09:32:26
【问题描述】:

我正在 Builder XE2 中构建多个表单应用程序,但我遇到了表单排序问题。

假设我使用 IDE GUI 创建表单,例如 Form1 和 Form2(Form1 是自动创建的),当我运行我的应用程序时,Form2 始终位于 Form1 之上(即使我可以访问 Form1、使用它的控件等)如果我以编程方式创建另一个表单,它与 Form2 具有相同的优先级(我可以在它们之间切换,并将它们带到前面/发送到后面),但 Form1 仍然留在后面。

如何在不使用 fsStayOnTop 的情况下解决此问题,以便项目中的每个表单都具有相同的优先级?表单顺序在哪里定义?

【问题讨论】:

    标签: c++ forms c++builder c++builder-xe2


    【解决方案1】:

    查看 Application.MainFormOnTaskbar 的 dproj 文件源代码 := True;

    这会影响主窗体(Options 中定义为主窗体的窗体...)的 ZOrder,并且还会导致它停留在该应用程序中创建的其他窗体之后。

    Embarcadero 会说这是“按预期工作”,尽管它与流行的主窗体/非模态子窗体应用程序(如 Outlook)的工作方式不同。

    【讨论】:

      【解决方案2】:

      了解TFormPopupModePopupParent 属性。听起来您的 MainForm 正在设置为辅助表单的 PopupParent

      【讨论】:

      • 是的,谢谢,我做到了,但事实并非如此,它们在 popupmode 和 popupparent 中都有 pmNone 和 nothing 。既然我了解了谷歌有关的内容,我阅读了以下内容:winapi.freetechsecrets.com/win32/WIN32Z_Order00000014.htm 然后我做了这个(newOp 是一个我想分叉进行操作的窗口,TOpWindow 它是我想要使用的模型): TOpWindow* 新操作;应用程序->CreateForm(__classid(TOpWindow),&newOp) ; SetWindowPos(CryptWindow->Handle,newOp->Handle,0,0,0,0,SWP_NOSIZE | SWP_NOMOVE);情况仍然是一样的......
      猜你喜欢
      • 2011-09-04
      • 1970-01-01
      • 2023-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-24
      • 1970-01-01
      相关资源
      最近更新 更多