【问题标题】:FormShow event not fired after FormCreate, and Hide; does not hide the icon on taskbarFormCreate 和 Hide 后未触发 FormShow 事件;不隐藏任务栏上的图标
【发布时间】:2011-10-09 13:18:51
【问题描述】:

我刚刚在我的 Delphi 应用程序中发现了一个奇怪的错误。当我运行应用程序时,任务栏会显示图标,但我必须按下它才能显示表单。通过在 OnShow 事件中设置断点,我发现当我点击任务栏上的图标时,正在触发 OnShow 事件。

另外,当我使用Hide;时,表单隐藏了,但任务栏图标没有消失,但是当我点击它时,表单不再显示(这是重点,但任务栏图标不应该隐藏时在那里)。

这是我的项目文件源,以防可能与它有关:

var
  PreviousHandle : THandle;
begin

  PreviousHandle := FindWindow('TfrmMain',APP_CAPTION);
  if PreviousHandle = 0 then
  Begin
  Application.Initialize;
  // So my Log and Mainform can overlap each other
  Application.MainFormOnTaskbar := False;
  Application.Title             := 'MyApp';
  Application.CreateForm(TfrmMain, frmMain);
  Application.CreateForm(TfrmLog, frmLog);
  Application.Run;
  End else
      begin
        SetForegroundWindow(PreviousHandle);
      end;

end.

我还尝试禁用我的皮肤引擎,但也没有用。

【问题讨论】:

    标签: forms delphi vcl show-hide


    【解决方案1】:

    WindowState 被设置为 wsMinimized,而编辑器会以某种方式随机执行此操作。我只需将其设置为 wsNormal 就可以了。两个问题都解决了。

    【讨论】:

      【解决方案2】:
      frm_login.hide;
      Application.MainFormOnTaskbar := false;
      ShowWindow(Application.Handle, SW_SHOW);
      

      frm_login 是我的主要形式。 frm_menu 没有创建。之后会通过代码创建。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-11-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-01
        相关资源
        最近更新 更多