![]() |
Formular schliessen im "OnActivate"
Wie kann ich mein Formular schließen im OnActivate?
|
Re: Formular schliessen im "OnActivate"
Mit Close?
|
Re: Formular schliessen im "OnActivate"
Warum willst du im OnActivate ein Form schliessen :gruebel: Dann zeigs doch gar nicht erst an :thumb:
|
Re: Formular schliessen im "OnActivate"
@ Luckie: sry, hatte ich nicht erwähnt: So gehts nicht ;)
@ Jelly: Er soll ja den Download einer Datei anzeigen (dauert auch ein bisschen, man sieht die Form also), aber sich auch automatisch schliessen wenn er fertig ist. Deshalb habe ich den Downloadcode in "OnActivate" geschrieben, weil "OnShow" zu früh ist, und Timer zwar geht, aber irgendwie doch unelegant ist... |
Re: Formular schliessen im "OnActivate"
ACHTUNG: OnActivate kann imho öfter ausgelöst werden. z.b. wenn das fenster den fokus verliert und ihn dann wieder erhaltet
|
Re: Formular schliessen im "OnActivate"
Erzeug doch die Form immer dynamisch (wenn Du sie öfters brauchen solltest) und nimm dann das Release.
|
Re: Formular schliessen im "OnActivate"
Zitat:
Zitat:
|
Re: Formular schliessen im "OnActivate"
Das ist irgend wie Unsinnig.
Schribe eine extra Downloadprocedue oder Function. Am Ende Dieser schliesst du dein Formular einfach mit Close. |
Re: Formular schliessen im "OnActivate"
Das ist jetzt aber irgendwie seltsam :|
Im Test (ohne irgendetwas), schloss sich das Fenster wie erwartet, aber so nicht:
Delphi-Quellcode:
Und er springt auch in das Close; rein :|
procedure TfrmInstall.FormActivate(Sender: TObject);
var lStream: TFileStream; fileData, extract : string; write : Boolean; begin if status = NOT_STARTED then begin status := STARTED; item := 0; while status = STARTED do begin ind(item); if item > High(data) then status := FINISHED; end; bFinalize.Caption := 'Finalize'; end; if (status = FINISHED) and (autoclose) then <!--- close; <!--- end; |
Re: Formular schliessen im "OnActivate"
Zitat:
:dp: |
Re: Formular schliessen im "OnActivate"
Und was soll mir das jetzt sagen?
PS: Könnte es an ShowModal liegen? |
Re: Formular schliessen im "OnActivate"
Was ist zu "bequem" daran, eine saubere und wirklich funktionierende Lösung mit einem minimalen Mehraufwand zu schaffen?
Empfehle dir auch, die Form einfach dynamisch zu erzeugen, eine Downloadfunktion aufzurufen und diese nach Abschluss wieder mit Free zu schließen.
Delphi-Quellcode:
Das kannst du auch in eine Prozedur hauen und dann per Parameter einfach die zu ladende Datei angeben. Damit hast du auch nicht mehr als eine Zeile zum Aufrufen der Funktion.
with TMyDownloadForm.Create (Self) do
begin {...} Show; DownloadFile ({...}); Free; end; |
Re: Formular schliessen im "OnActivate"
Aber das löst mein Problem nicht!
Weil wie kann ich nach "Showmodal" bei Aufrufer Code ausführen, ohne das ShowModal zu beenden... PS: Anscheind ist da irgendwo ein bug drinne, weil es eigentlich ja funzt... |
Re: Formular schliessen im "OnActivate"
Zitat:
|
Re: Formular schliessen im "OnActivate"
Hi,
wenn es denn unbedingt modal sein muss, dann setze im OnCreatein der Form Application.OnIdle. In der Methode setzt du erst OnIdle wieder auf nil, dann führst du deinen Download aus und zum Schluss das Close. Damit startet der Download erst, wenn das Form angezeigt wird etc. Cu, Frank [EDIT]
Delphi-Quellcode:
[/EDIT]
procedure TForm1.FormCreate(Sender: TObject);
begin Application.OnIdle := ApplicationIdle; end; procedure TForm1.ApplicationIdle(Sender: TObject; var Done: Boolean); begin Application.OnIdle := nil; // Dowloadroutine Application.ProcessMessages; Close; end; |
Re: Formular schliessen im "OnActivate"
Zitat:
Zitat:
Zitat:
Zu dataspiders lösung: So müsste es gehen... |
Re: Formular schliessen im "OnActivate"
Zitat:
Du kannst doch was dynamisch erstellen, ausführen, und zu deiner Hauptprozedur zurückkehren. Dein Showmodal wartet doch darauf bis das Form geschlossen wird. Oder versteh ich da jetzt alles verkehrt? |
Re: Formular schliessen im "OnActivate"
Wenn es unbedingt Modal sein muss, dann mach die Downloadroutine in einen Thread (Forumssuche nach TThread oder Google) und rufe diese vor ShowModal auf.
Delphi-Quellcode:
with TMyDownloadForm.Create (Self) do
begin {...} DownloadFile ({...}); // Startet einen Thread zum DL ShowModal; Free; end; |
Re: Formular schliessen im "OnActivate"
Zitat:
|
Re: Formular schliessen im "OnActivate"
Hallo Fabian,
schau dir doch einmal ![]() Gruß Hawkeye |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:00 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-2025 by Thomas Breitkreuz