【问题标题】:Delphi form minimise issueDelphi表单最小化问题
【发布时间】:2010-11-19 07:37:23
【问题描述】:

目前我面前有一个 delphi 7 项目,该软件的原始创建者所做的是将主窗体用作另一个窗体的启动板,该窗体包含整个应用程序背后的实际控件和逻辑。所以基本上,form1 会加载,设置为不可见,然后创建并显示另一个表单(具有所有 UI 控件和逻辑的表单),这是一种奇怪的做事方式,但他们就是这样做的。

现在我不熟悉 delphi 7 处理其表单的方式,但是第二个窗口,所有控件都打开的窗口,每当我单击最小化按钮时,表单不会像人们那样下拉到任务栏期望,而是调整大小,以便只有最小化、最大化和关闭按钮可见,然后将自身放置在屏幕的左下角,就在开始菜单的上方。

第二个窗口的创建是:

frmPlatform := TfrmPlatform.Create(frmMain);
ModalResult := frmPlatform.ShowModal;

其中 frmMain 是不可见的表单。

我的问题是,为什么第二个窗口没有像预期的那样最小化并放到任务栏上?以及如何让它工作,

谢谢

【问题讨论】:

    标签: delphi


    【解决方案1】:

    表单的标准行为恐怕是因为 mainform 默认情况下是 Delphi 在任务栏上显示的唯一表单。但是,您也可以将其他表单设置为显示在任务栏上:

    procedure TForm1.CreateParams
       (var Params: TCreateParams);
    begin
      inherited CreateParams(Params);
      Params.ExStyle := Params.ExStyle
                        or WS_EX_APPWINDOW;
    end;
    

    当然,您也可以隐藏您当前的主要形式,请参阅:http://delphi.about.com/od/adptips1999/qt/hidefromtaskbar.htmhttp://delphi.about.com/od/delphitips2008/qt/hide_taskbutton.htm 用于 D2007 及更高版本。

    【讨论】:

      【解决方案2】:

      我想您会发现,在标准的 Delphi 应用程序中,任务栏中只会显示主(第一个)表单。由于您的主要形式是不可见的,这就是您的问题。最小化可能是由于第二种形式被调用显示模式而不是简单地显示。

      您可以删除第一个表单或更改哪个表单是主表单吗?这可以从项目设置页面完成。

      【讨论】:

      • 如果您通过项目的选项更改主窗体,新的主窗体将由 dpr 创建,这可能不是 OP 想要的。
      • 实际上是在考虑这样做,但由于我今天才开始查看系统,所以我还没有足够的知识知道这会产生什么影响。所以我希望暂时能快速修复
      • @Marjan - 可能,但 mainform 暗示它是在 dpr 中创建的,因为它不是 mainform。
      • @Toby:实际上,主窗体是通过 Application.CreateForm 创建的第一个窗体,无论调用在哪里。只是将其放入 dpr 的 IDE...
      • @Marjan - 通常由 Application.CreateForm 创建的第一个表单将在 dpr 中。我想如果您非常晦涩,可以在 .pas 文件中创建它。我了解项目选项如何与 .dpr 文件交互,我不明白您的意思是什么?
      猜你喜欢
      • 2014-03-18
      • 2010-11-14
      • 2023-03-17
      • 2014-05-24
      • 2014-06-10
      • 1970-01-01
      • 1970-01-01
      • 2011-06-10
      • 2012-08-06
      相关资源
      最近更新 更多