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/)
-   -   Form automatisch beenden (https://www.delphipraxis.net/97241-form-automatisch-beenden.html)

Kuster Peter 7. Aug 2007 16:06


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

Luckie 7. Aug 2007 16:07

Re: Form automatisch beenden
 
Wo steht dein Close Befehl?

Kuster Peter 7. Aug 2007 17:24

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:
procedure TForm2.FormCreate(Sender: TObject);
begin
{Hier ist das Prg. das abgearbeitet werden muss.}
close;
end;

end.
MfG
Peter

[edit=r_kerber]Delphi-Tags einegfügt. Das nächste Mal bitte selbst machen! Mfg, r_kerber[/edit]

Bernhard Geyer 7. Aug 2007 17:25

Re: Form automatisch beenden
 
Im FormCreate geht kein Close!

Probier folgendes

Delphi-Quellcode:
PostMessage(self.Handle, WM_CLOSE, 0, 0);

jfheins 7. Aug 2007 17:26

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 ;)

scrat1979 7. Aug 2007 18:00

Re: Form automatisch beenden
 
... oder einfach im OnActivate-Event des Formulares die ganzen Dinge abarbeiten. IMHO funktioniert dann auch der Close-Befehl.

SCRaT

juergen 7. Aug 2007 19:36

Re: Form automatisch beenden
 
Hallo Peter,

mit
Delphi-Quellcode:
Application.Terminate;
sollte es direkt im OnCreate auch funktionieren.
Wichtig wäre hierbei, dass es erst aufgerufen wird, wenn wirklich alles abgearbeitet ist.
Ansonsten müsste noch ein
Delphi-Quellcode:
Application.Terminate;
Exit;
verwendet werden.

semo 7. Aug 2007 20:19

Re: Form automatisch beenden
 
im oncreate ein terminate bzw. close?
das ist wie gelber schnee - nämlich :kotz:

Kuster Peter 7. Aug 2007 20:53

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

PigfaceJoe 7. Aug 2007 21:06

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

hoika 7. Aug 2007 21:09

Re: Form automatisch beenden
 
Hallo,

siehe mein Posting here

http://www.delphipraxis.net/internal...tivate+beenden

Noch interessant wäre das hier (auch mein Posting)
das gilt für Forms generell,
ich habe damit eine allgemein verwendbares Status-Form.

http://www.delphipraxis.net/internal...ht=tformstatus


Heiko

scrat1979 7. Aug 2007 21:45

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);

Luckie 7. Aug 2007 21:53

Re: Form automatisch beenden
 
Zitat:

Zitat von PigfaceJoe
Hi, das Problem kenn ich,
ich löse das immer so:

Ich ziehe die Timer komponente

Gibt es auch irgendetwas, was du nicht mit einem Timer löst: http://www.delphipraxis.net/internal...=760005#760005 :mrgreen:

scrat1979 7. Aug 2007 22:14

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

PigfaceJoe 8. Aug 2007 00:16

Re: Form automatisch beenden
 
Ja klappt aber ;-)
Und ist leicht verständlich ^^

Gruss
PigfaceJoe

hoika 8. Aug 2007 00:17

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

Kuster Peter 8. Aug 2007 11:10

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