在FormCreate之后没有触发FormShow事件,并隐藏;不会隐藏任务栏上的图标

时间:2011-07-20 16:14:38

标签: forms delphi vcl show-hide

我刚刚在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.

我也试过禁用我的Skinning Engine,但这也没有帮助。

2 个答案:

答案 0 :(得分:1)

WindowState 设置为 wsMinimized ,编辑器以某种方式随机执行。我只需要将它设置为 wsNormal ,这一切都很好。这两个问题都解决了。

答案 1 :(得分:0)

frm_login.hide;
Application.MainFormOnTaskbar := false;
ShowWindow(Application.Handle, SW_SHOW);

frm_login是我的主要形式。 frm_menu未创建。它将在之后通过代码创建。