Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Formular anzeigereihenfolge (https://www.delphipraxis.net/88954-formular-anzeigereihenfolge.html)

HarryHarry123 23. Mär 2007 15:15


Formular anzeigereihenfolge
 
Hallo!

wenn ich in einer durch das onShow-Ereignis ausgelösten Prozedur eine Operation durchführe, die z.B. 5 Sek. lang rechnet, dann wird das Formular erst nach diesen 5 Sekunden angezeigt. Gibt es keine einfache Möglichkeit das zu umgehen bzw, gibt es kein Event was ausgelöst wird wenn das Formular wirklich angezeigt wird?
Danke,
derHarry!

Klaus01 23. Mär 2007 15:34

Re: Formular anzeigereihenfolge
 
Hallo Harry,

wenn von der Berechnung keine Abhängigkeiten zu der Form bestehen
dann lager die Berechnung doch in einen Thread aus.

Grüße
Klaus

shmia 23. Mär 2007 15:41

Re: Formular anzeigereihenfolge
 
Es gibt eine Möglichkeit, die aber nicht ganz einfach ist.
Du musst deinem Formular eine selbstdefinierte Windows-Message schicken.
Delphi-Quellcode:
const
   UM_AUTOSTART = WM_USER + 100;

Txxxx=class(TForm)

  procedure UMAutostart(var msg: TMessage); message UM_AUTOSTART;

end;

procedure Txxxx.FormShow();
begin
   PostMessage(Self.Handle,UM_AUTOSTART, 0, 0);
end;

procedure Txxxx.UMAutostart(var msg: TMessage);
begin
   // hier der länger dauernde Code
end;

bitsetter 23. Mär 2007 18:19

Re: Formular anzeigereihenfolge
 
Hallo,

du kannst ja mal folgendes versuchen:

Delphi-Quellcode:
procedure TForm1.FormShow(Sender: TObject);
begin
  ShowWindow(self.Handle, SW_SHOW);
  application.ProcessMessages;

   //rechnen...
end;
Bei meinem Testprogramm zumindest, hat es funktioniert.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:21 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz