Einzelnen Beitrag anzeigen

Benutzerbild von ralfiii
ralfiii

Registriert seit: 30. Mai 2007
489 Beiträge
 
Delphi 2010 Professional
 
#1

MainFormOnTaskbar verursacht bizarres Verhalten

  Alt 27. Nov 2012, 09:45
Ich hab hier ein Projekt das sich wirkich sehr sehr seltsam verhält.

Hier mal ein Dummyprojekt (auch im Anhang):

Delphi-Quellcode:
dpr:
begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;

  frmSplash := TfrmSplash.Create(nil);
  frmSplash.Show;
  frmSplash.Refresh;

  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.


MainForm:
procedure TForm1.FormShow(Sender: TObject);
begin
     ShowMessage('Test!');
end;


Splash-Form:
procedure TfrmSplash.FormClose(Sender: TObject; var Action: TCloseAction);
begin
     Action:=caFree;
end;
procedure TfrmSplash.Timer1Timer(Sender: TObject);
begin
     Close;
end;

Wenn man die Anwendung startet ist erstmal nur das ShowMessage-Fenster aus dem MainForm.OnShow zu sehen.
Wenn sich nun das Splash-Formular selbst freigibt, dann wird auch der Message-Dialog inklusive Taskbar-Eintrag unsichbar und man hat eine unerreichbare Programmleiche im Taskmanager liegen.

Any ideas woher das kommt?
Ich glaub ich hab einen Workaround gefunden (siehe unten), aber ich würde gern das Problem verstehen.
Hier der Workaround:
Delphi-Quellcode:
procedure TForm1.FormShow(Sender: TObject);
begin
     PostMessage(self.handle, WM_AfterShow, 0,0); // Dadurch kommt das ShowMessage erst nachdem das MainForm sichtbar ist
end;
procedure TForm1.WMAfterShow(var Message: TWMChar);
begin
     ShowMessage('Test!');
end;
Angehängte Dateien
Dateityp: zip SplashBug.zip (2,0 KB, 4x aufgerufen)
  Mit Zitat antworten Zitat