AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Formular schliessen im "OnActivate"

Ein Thema von xZise · begonnen am 10. Mär 2007 · letzter Beitrag vom 11. Mär 2007
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#11

Re: Formular schliessen im "OnActivate"

  Alt 10. Mär 2007, 13:10
Und was soll mir das jetzt sagen?
  • Öffnen des Fensters - NOT_STARTED
  • Activate - STARTED
  • Deaktivted - STARTED
  • Wieder Activated - STARTED
  • Fertig - FINISHED
  • => Close?!

PS: Könnte es an ShowModal liegen?
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Nuclear-Ping
(Gast)

n/a Beiträge
 
#12

Re: Formular schliessen im "OnActivate"

  Alt 10. Mär 2007, 15:53
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:
with TMyDownloadForm.Create (Self) do
  begin
    {...}
    Show;
    DownloadFile ({...});
    Free;
  end;
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.
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#13

Re: Formular schliessen im "OnActivate"

  Alt 10. Mär 2007, 17:55
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...
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#14

Re: Formular schliessen im "OnActivate"

  Alt 10. Mär 2007, 18:22
Zitat von xZise:
Weil wie kann ich nach "Showmodal" bei Aufrufer Code ausführen, ohne das ShowModal zu beenden...
Gar nicht. Und im OO Sinne ist das auch nicht ratsam. Dein 2. Form, das du anzeigst, ist nichts anderes wie eine Klasse, und diese Klasse soll sich um den Download alleine kümmern, und nicht die aufrufende Klasse. Übergib deinem Downloadformular den URL Link im constructor, und definiere eine public property im Downloadform, in der nach Beenden des Downloads der Dateiname oder sonst was drin steht wie z.B. Stream o.ä. Dann noch ein Statuscode, und Du kannst das Downloadformular universell einsetzen, auch in anderen Projekten.
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.350 Beiträge
 
Delphi 11 Alexandria
 
#15

Re: Formular schliessen im "OnActivate"

  Alt 10. Mär 2007, 18:33
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:
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;
[/EDIT]
Frank Reim
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#16

Re: Formular schliessen im "OnActivate"

  Alt 10. Mär 2007, 18:57
Zitat von dataspider:
wenn es denn unbedingt modal sein muss
Ja muss es

Zitat von Jelly:
Zitat von xZise:
Weil wie kann ich nach "Showmodal" bei Aufrufer Code ausführen, ohne das ShowModal zu beenden...
Gar nicht. Und im OO Sinne ist das auch nicht ratsam.
Und genau deshalb funktioniert das dynamische Erstellen nicht!

Zitat von Jelly:
Dein 2. Form, das du anzeigst, ist nichts anderes wie eine Klasse, und diese Klasse soll sich um den Download alleine kümmern, und nicht die aufrufende Klasse. Übergib deinem Downloadformular den URL Link im constructor, und definiere eine public property im Downloadform, in der nach Beenden des Downloads der Dateiname oder sonst was drin steht wie z.B. Stream o.ä. Dann noch ein Statuscode, und Du kannst das Downloadformular universell einsetzen, auch in anderen Projekten.
Und genau das kann mein Formular (Zwar soll es nicht umbedingt universell sein... Aber es ist eine netter Nebeneffekt)

Zu dataspiders lösung: So müsste es gehen...
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#17

Re: Formular schliessen im "OnActivate"

  Alt 10. Mär 2007, 21:19
Zitat von xZise:
Und genau deshalb funktioniert das dynamische Erstellen nicht!
Ich muss mich mal grad am Kopf kratzen, denn das muss ich jetzt irgendwie verstehen.

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?
  Mit Zitat antworten Zitat
Nuclear-Ping
(Gast)

n/a Beiträge
 
#18

Re: Formular schliessen im "OnActivate"

  Alt 10. Mär 2007, 22:42
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;
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#19

Re: Formular schliessen im "OnActivate"

  Alt 11. Mär 2007, 08:22
Zitat von Jelly:
Zitat von xZise:
Und genau deshalb funktioniert das dynamische Erstellen nicht!
Du kannst doch was dynamisch erstellen, ausführen, und zu deiner Hauptprozedur zurückkehren.
Genau das war der Plan... ABER er macht es nicht! Und da ändert auch kein dynamisches Erstellen...
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#20

Re: Formular schliessen im "OnActivate"

  Alt 11. Mär 2007, 09:02
Hallo Fabian,

schau dir doch einmal diesen Thread an, hoika zeigt dort eine Lösung für dein Problem.

Gruß Hawkeye
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:49 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