Einzelnen Beitrag anzeigen

Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#9

AW: Eingabefenster automatisch anzeigen lassen

  Alt 20. Nov 2021, 09:02
Moin...
Zitat:
Das Hauptfenster sollte schon zu sehen sein und wenn das fertig aufgebaut ist, sollte das Eingabefenster aufpoppen.
1. OnActivate ist das gaaanz falsche Event. Lies dir mal die Hilfe dazu durch.
2. OnShow ist fast das richtige Event. Das Problem ist, wenn du das Popup Form hier erzeugst ist das Hauptfenster noch nicht sichtbar weil durch den Dialog das OnShow nicht durchlaufen.

Lösung:
Im OnShow eine Message absetzen und eine "AfterShow" procedure erstellen und aufrufen.
Delphi-Quellcode:
const
  MessageAfterShow = WM_USER + 1;
...
private
procedure AfterShow(Sender: TObject);
procedure AfterShowMessage(var Msg: TMessage); message MessageAfterShow;
...
procedure TMyForm.FormShow(Sender: TObject);
begin
  PostMessage(Self.Handle, MessageAfterShow, 0, 0);
end;
...
procedure TMyForm.AfterShowMessage(var Msg: TMessage);
begin
  AfterShow(Self);
end;
...
procedure TMyForm.AfterShow(Sender: TObject);
begin
  Dialog.Execute; // sinngemäß
end;

Geändert von haentschman (20. Nov 2021 um 09:04 Uhr)
  Mit Zitat antworten Zitat