![]() |
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! |
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 |
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; |
Re: Formular anzeigereihenfolge
Hallo,
du kannst ja mal folgendes versuchen:
Delphi-Quellcode:
Bei meinem Testprogramm zumindest, hat es funktioniert.
procedure TForm1.FormShow(Sender: TObject);
begin ShowWindow(self.Handle, SW_SHOW); application.ProcessMessages; //rechnen... end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz