![]() |
Form automatisch beenden
Ich habe eine Anfänger Frage:
Ich wechsle von Fox auf Delphi deshalb beschreibe ich kurz, wie ich es in Fox gelöst habe: Ueber das Menu ein Programm aufgerufen, die gewünschten Arbeiten erledigt, Progamm schliesst automatisch. Meine Lösung in Delphi: Form erstellt, im Header die Bearbeitung gemacht Anzeige auf der Form in Label : Arbeit läuft, danach sollte die Form automatisch geschlossen werden, doch mein Close Befehl wird nicht ausgeführt. Frage: Wie muss ich den Close setzen oder gibt es die Möglichkeit ein Prozedurales Programm zu schreiben, dass man am Schluss mit Close schliessen kann. Vielen Dank für die Hilfe. Peter |
Re: Form automatisch beenden
Wo steht dein Close Befehl?
|
Re: Form automatisch beenden
Salu Michael
Hier der Code von Form2, da siehst Du wo mein Close steht: (Wie gesagt, bin ein Anfänger!)
Delphi-Quellcode:
MfG
procedure TForm2.FormCreate(Sender: TObject);
begin {Hier ist das Prg. das abgearbeitet werden muss.} close; end; end. Peter [edit=r_kerber]Delphi-Tags einegfügt. Das nächste Mal bitte selbst machen! Mfg, r_kerber[/edit] |
Re: Form automatisch beenden
Im FormCreate geht kein Close!
Probier folgendes
Delphi-Quellcode:
PostMessage(self.Handle, WM_CLOSE, 0, 0);
|
Re: Form automatisch beenden
Du kannst das Formular nicht schon im OnCreate schließen ;)
(Du schlägtst ja auch nicht die Autotür zu, während du noch einsteigst ...) Versuch mal ein .Release, oder einen Timer, der das Formular schließt ;) |
Re: Form automatisch beenden
... oder einfach im OnActivate-Event des Formulares die ganzen Dinge abarbeiten. IMHO funktioniert dann auch der Close-Befehl.
SCRaT |
Re: Form automatisch beenden
Hallo Peter,
mit
Delphi-Quellcode:
sollte es direkt im OnCreate auch funktionieren.
Application.Terminate;
Wichtig wäre hierbei, dass es erst aufgerufen wird, wenn wirklich alles abgearbeitet ist. Ansonsten müsste noch ein
Delphi-Quellcode:
verwendet werden.
Application.Terminate;
Exit; |
Re: Form automatisch beenden
im oncreate ein terminate bzw. close?
das ist wie gelber schnee - nämlich :kotz: |
Re: Form automatisch beenden
Leider funktioniert keiner der Vorschläge:
Application.Terminate schliesst das ganze Programm und die anderen Vorschläge funktionieren nicht oder ich wende diese flasch an. Wenn es im oncreate nicht geht, dann wo. Ihr müsst wissen, ich bin ein Anfänger. Im Fox habe ich einfach ein PRG geschrieben, das habe ich aufgerufen und dann am Schluss mit Return beendet. Ganz einfach. Ich möchte nur eine Routine laufen lassen und dann zu meinem Formular zurückkehren. Ganz einfach. Peter |
Re: Form automatisch beenden
Hi, das Problem kenn ich,
ich löse das immer so: Ich ziehe die Timer komponente aus der Sparte System aufs Formular und stelle timer1.interval auf 1 und timer1.enabled vorerst auf false. Dann im OnActivate (Oder oncreate) dann einfach timer1.enabled:=true setzen und im timer dann den Code schreiben und am Ende von diesem OnTimer Code dann schliesslich form2.close. Sollte so funktionieren, is halt (wahrscheinlich) nicht die schönste Lösung, klappt aber. Ach ja: Vergess nicht im OnTimer Ereignis am Ende vom Code noch Timer1.enabled:=false zu setzen, sonst wird der Code jede Millisekunde ausgeführt, wäre nicht so schön!^^ Schönen Gruss PigfaceJoe |
Re: Form automatisch beenden
Hallo,
siehe mein Posting here ![]() Noch interessant wäre das hier (auch mein Posting) das gilt für Forms generell, ich habe damit eine allgemein verwendbares Status-Form. ![]() Heiko |
Re: Form automatisch beenden
Also irgendwie scheint Dein Problem nicht zu unseren LÖsungen zu passen :gruebel:
Wenn Du im OnActivate-Event Deiner Form Deine Prozeduren / Funktionen ausführst und zum Schluß ein Close; eingibst, dann sollte das Formular geschlossen werden, nachdem alles gewünschte ausgeführt wurde. Wolltest Du das denn nicht genau so??? Oder willst Du vielleicht aus Deinem Programm eine andere Anwendung starten und Dein Programm schließen, wenn die aufgerufene Anwendung beendet wurde? Das wäre eine ganz andere Situation. Die Lösung findest Du in diesem Falle auch hier im Forum oder bei Google ("Delphi Anwendung starten auf Ende warten" o.ä.). Aber auch da würde ich Dir wiederum das OnActivate-Ereignis empfehlen. Grüße, SCRaT //EDIT: Evtl. musst Du auch noch im OnActivate-Ereignis folgendes verwenden, um die Form zu schließen - ich glaube aber nicht:
Delphi-Quellcode:
PostMessage(self.Handle, WM_CLOSE, 0, 0);
|
Re: Form automatisch beenden
Zitat:
![]() |
Re: Form automatisch beenden
Vielleicht würde es uns ja auch was bringen, wenn Du uns einen Code-Ausschnitt posten würdest. Evtl. ist da ja der Hund begraben :zwinker:
SCRaT |
Re: Form automatisch beenden
Ja klappt aber ;-)
Und ist leicht verständlich ^^ Gruss PigfaceJoe |
Re: Form automatisch beenden
Halloo,
ohne meinen 2. Link geht es einfach ohne Time mit FormActivate begin Application.ProcessMesages; Label-Dingens Application.ProcessMesages; ProgressBarDinges; PostMessage(Handle, WM_CLOSE, 0, 0); end; ein Close geht nicht !, da irgendwas noch nicht initialisiert ist. (hat was mit ModalResult zu tun) Heiko |
Re: Form automatisch beenden
Liebe Delphianer
Vielen Dank für Eure Vorschläge, kann einiges gebrauchen. Dank Euer Hilfe und Euren Fragen bin ich auf die Lösung gekommen. Nachdem ich darüber geschlafen habe, ist mir klar geworden, dass ich das Problem nach FoxPro Art lösen wollte, doch ich muss ja in Delphi denken. Nix prozuderal sondern objektorientiert! Die Frage ob mein Problem zu Delphi passt war völlig richtig! Ich habe es nun wie folgt gelöst: Anstatt mit einem Button ein Form aufzurufen und dort die Bearbeitung zu machen, mache ich es gleich im Button. Während es arbeitet steht auf dem Button, ich bin am Bearbeiten, und wenn es fertig ist, steht auf dem Button, Fertig. So weiss der User, dass es bearbeitet worden ist. Bitte seit mir nicht böse, wenn ich auch in Zukunft etwas fragen werde, nur werde ich Zukunft vorher genauer überlegen. So unter uns, Delphi ist wirklich toll. Je mehr ich lerne, desto begeisterter bin ich. Habe schon viele Ideen, nur leider noch keine Ahnung wie ic diese lösen soll. Euer Peter |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:04 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