【问题标题】:Hide the Main Form in a Delphi 2009 Application在 Delphi 2009 应用程序中隐藏主窗体
【发布时间】:2010-10-15 11:04:35
【问题描述】:

以下代码在 Delphi 7 中运行良好。但是,在 Delphi 2009 中,表单确实保持隐藏状态,但任务栏上的按钮现在出现了。

ShowWindow(Handle, SW_HIDE);
SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW );
ShowWindow(Handle, SW_SHOW);

上面的代码是在FormCreate方法中调用的。

【问题讨论】:

  • 表格不会在 D2007 和 D2009 中为我隐藏,并显示您的确切代码。无论出于何种原因,这似乎都是您想要的: ShowWindow(Handle, SW_SHOW);在我看来,您想显示它而不是隐藏它。请更新并准确您的问题,因为您似乎想要相反的结果..
  • 上面的代码用于从2009年之前的任务栏中删除表单按钮。目标只是让表单的任务栏按钮停止出现。我编写了一个小型测试应用程序,该代码似乎运行良好。然而,在这个特定的例子中,它似乎是应用程序隐藏表单。
  • 删除了我的答案,因为它似乎不起作用...

标签: delphi delphi-2009 vcl


【解决方案1】:

原来我们在任务栏上看到应用程序窗口的原因是一个简单的设置,类似于 stukelly 的回答,但不完全是。

要让主窗体出现在任务栏上并隐藏您应用的应用程序菜单:

Application.MainFormOnTaskbar := True;
Application.ShowMainForm := False;

表单创建后无需任何代码或任何必需的代码。

【讨论】:

  • 感谢您在堆栈溢出问题上发布您的解决方案。我以为你想隐藏任务栏按钮和主窗体。
  • 如果您在 FormActivate() 中有代码,这将不起作用。表单永远不会显示,因此 FormActivate() 永远不会被调用。
  • @TheSteven 完全有道理,表单永远不应该变得活跃......它是隐藏的。如果您在 FormActivate 中有隐藏表单的代码,那么它显然是错误的地方。
【解决方案2】:

您需要在创建表单之前将ShowMainFormMainFormOnTaskBar 属性设置为False。

在创建表单之前,打开您的项目源并将 MainFormOnTaskBarShowMainForm 设置为 False。

Application.Initialize;
Application.MainFormOnTaskbar := false;
Application.ShowMainForm := false;
Application.CreateForm(TForm1, Form1);

然后在您的主窗体上将以下代码添加到 FormActivateFormShow 事件。

procedure TForm1.FormActivate(Sender: TObject);
begin
 // hide taskbar button
 ShowWindow(Application.Handle, SW_HIDE);
end;
procedure TForm1.FormShow(Sender: TObject);
begin
 // hide taskbar button
 ShowWindow(Application.Handle, SW_HIDE);
end;

我已经使用 Dephi 2007 和 2009 进行了测试。更多信息可在 here 获得。

【讨论】:

    猜你喜欢
    • 2014-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多