Событие FormShow не запускается после FormCreate и Hide;не скрывает значок на панели задач - PullRequest
2 голосов
/ 20 июля 2011

Я только что обнаружил странную ошибку в моем приложении 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, который тоже не помог.

Ответы [ 2 ]

1 голос
/ 20 июля 2011

WindowState был установлен на wsMinimized , и редактор каким-то образом делает это случайным образом. Мне просто нужно было установить wsNormal , и все было хорошо. Обе проблемы решены.

0 голосов
/ 15 апреля 2019
frm_login.hide;
Application.MainFormOnTaskbar := false;
ShowWindow(Application.Handle, SW_SHOW);

frm_login - это моя основная форма. frm_menu не создает. он будет создан по коду после.

...