Autor |
Beitrag |
V!P3R
      
Beiträge: 151
|
Verfasst: So 25.11.07 16:07
das programm lässt sich nur noch über den Taskmanager beenden
gibt es noch ne andere möglichkit auser:
Delphi-Quelltext
oder
Delphi-Quelltext
oder
Delphi-Quelltext
bitte helft. das prog an sich ist gut geworden, nur wenn mans nicht schließen kann...
EDIT: Ich habe bei Form1 bei Ereignisse OnCloseQuery benutzt, aber jez kann mans GAR nicht mehr schließen.
MfG
Zuletzt bearbeitet von V!P3R am So 25.11.07 16:28, insgesamt 1-mal bearbeitet
|
|
Herr Bananerama
      
Beiträge: 130
|
Verfasst: So 25.11.07 16:27
Hi,
Destroy ist nicht zum schließen geeignet sonder ist der Destruktor der Form.
Zitat: | CloseQuery wird automatisch aufgerufen, wenn versucht wird, das Formular zu schließen. CloseQuery gibt true zurück, wenn das Formular geschlossen werden kann. Andernfalls wird das Formular durch Rückgabe von false am Schließen gehindert. {Delphi Hilfe!!!) |
-> ist also auch nicht geeignet
Close weiß ich nicht was macht aber ist aufjedenfall auch nicht geeignet^^
Du kannst aber aufjedenfall HALT benutzen
mfg Herr Bananerama
|
|
V!P3R 
      
Beiträge: 151
|
Verfasst: So 25.11.07 17:11
|
|
Sinspin
      
Beiträge: 1335
Erhaltene Danke: 118
Win 10
RIO, CE, Lazarus
|
Verfasst: So 25.11.07 17:14
Im Hauptfenster Close aufrufen ist normalerweise alles was du machen musst.
Eine nicht ganz so Tolle, aber immernoch verwendbare Lösung ist Application.Terminate.
Wenn du was für den Ereignisshandler von OnCloseQuery geschrieben hast solltest du das erstmal auskommentieren.
_________________ Wir zerstören die Natur und Wälder der Erde. Wir töten wilde Tiere für Trophäen. Wir produzieren Lebewesen als Massenware um sie nach wenigen Monaten zu töten. Warum sollte unser aller Mutter, die Natur, nicht die gleichen Rechte haben?
|
|
Gausi
      
Beiträge: 8548
Erhaltene Danke: 477
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: So 25.11.07 17:24
Herr Bananerama hat folgendes geschrieben: |
Close weiß ich nicht was macht aber ist aufjedenfall auch nicht geeignet^^
Du kannst aber aufjedenfall HALT benutzen |
Was ist an Close auszusetzen? Soweit ich weiß, gar nichts. Und HALT ist ne genz tolle Sache. Wenn mein Auto anhalten soll, such ich mir auch ne schöner Mauer und fahr dagegen...
Ist die Form, die mit Close geschlossen werden soll, die Hauptform deiner Anwendung?
_________________ We are, we were and will not be.
|
|
Popov
      
Beiträge: 1655
Erhaltene Danke: 13
WinXP Prof.
Bei Kleinigkeiten D3Pro, bei größeren Sachen D6Pro oder D7
|
Verfasst: So 25.11.07 17:32
Close ist der übliche Weg um ein Programm oder Fenster zu schließen.
Ist das Fenster das Mainfenster, also das Hauptfenster der Applikation, dann wird bei Close auch das Programm beendet. Ist es ein normales Fenster, wird bei Close nur das Fenster geschlossen.
Es ist möglich das Mainfenster neu zuzuordnen.
Application.Terminate ist in etwa gleich mit Close des Hauptfensters. Hier wird auch der Speicher freigegeben.
Halt ist bei reinem Pascal ohne OOP eine Möglichkeit, aber nicht in einem Fenster.
_________________ Popov
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: So 25.11.07 17:50
Popov hat folgendes geschrieben: | Es ist möglich das Mainfenster neu zuzuordnen. |
Kannst Du mir zeigen, wie das (elegant) geht? Oder muss man Tricks anwenden?
_________________ Na denn, dann. Bis dann, denn.
|
|
Popov
      
Beiträge: 1655
Erhaltene Danke: 13
WinXP Prof.
Bei Kleinigkeiten D3Pro, bei größeren Sachen D6Pro oder D7
|
Verfasst: So 25.11.07 18:33
Man muß etwas tricksen. Hab es bisher auch nur einmal gemacht. Geht aber.
_________________ Popov
|
|
jaenicke
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 25.11.07 18:43
V!P3R hat folgendes geschrieben: | EDIT: Ich habe bei Form1 bei Ereignisse OnCloseQuery benutzt, aber jez kann mans GAR nicht mehr schließen. |
Kann es sein, dass du CanClose auf false setzt dort? Weil dann lässt sich das Fenster natürlich nicht schließen. Und wenn es das Hauptfenster ist, eben auch die Anwendung nicht.
Um diese zu schließen kann man zwar auch Application.Terminate benutzen, wenn man das Hauptfenster nicht direkt ansprechen möchte, aber wenn das Hauptfenster mit CanClose in OnCloseQuery unschließbar ist, nutzt das alles nix.
Popov hat folgendes geschrieben: | Man muß etwas tricksen. Hab es bisher auch nur einmal gemacht. Geht aber. |
Tricksen? Das kannst du in den Projektoptionen festlegen.
|
|
Popov
      
Beiträge: 1655
Erhaltene Danke: 13
WinXP Prof.
Bei Kleinigkeiten D3Pro, bei größeren Sachen D6Pro oder D7
|
Verfasst: So 25.11.07 18:54
jaenicke hat folgendes geschrieben: | Popov hat folgendes geschrieben: | Man muß etwas tricksen. Hab es bisher auch nur einmal gemacht. Geht aber. | Tricksen? Das kannst du in den Projektoptionen festlegen. |
Ich nehme an er will wissen wie es zur Laufzeit geht.
_________________ Popov
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: So 25.11.07 20:25
Popov hat folgendes geschrieben: | Ich nehme an er will wissen wie es zur Laufzeit geht. |
Stimmt, das will er, aber egal.
_________________ Na denn, dann. Bis dann, denn.
|
|
jaenicke
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mo 26.11.07 10:11
Na gut, das geht allerdings auch recht einfach: Delphi-Quelltext 1:
| Pointer((@Application.MainForm)^) := Form2; | Schließt du nach dieser Zeile die zweite Form, wird die ganze Anwendung geschlossen. Das basiert darauf, dass MainForm zwar eine ReadOnly Eigenschaft ist, dabei aber direkt auf die dahinterliegende Variable zugreift und keine Getter-Methode benutzt.
Allerdings ist das Anwendungskonzept IMHO (vorsichtig ausgedrückt) nicht sinnvoll, wenn man das Hauptfenster zur Laufzeit ändern muss. Aber funktionieren tut es, auch wenn saubere Programmierung etwas anderes ist. (Wie gesagt, das ist meine persönliche Meinung.)
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: Mo 26.11.07 10:15
 Aua. Gut, was dazugelernt, ich werde es aber nicht anwenden.
_________________ Na denn, dann. Bis dann, denn.
|
|
V!P3R 
      
Beiträge: 151
|
Verfasst: Fr 30.11.07 18:00
Titel: RE
dieser Thred wird immer größer und größer, aber ich habe ne weie rumprobiert, und ich kann nur folgendes empfehlen:
wenn ihr auf den [X] klick im Frm1 klickt, soll sich das programm nicht sofort beenden. also macht ihr folgendes:
Delphi-Quelltext 1: 2: 3: 4: 5:
| procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin CanClose:=False; Form2.Show; end; |
Form2 ist das zweite formular, indem zum beispiel stehen kann: " wollen sie das dokument speicher? "
Klick auf 'nein'
Delphi-Quelltext 1: 2: 3: 4:
| procedure TEnde.Button2Click(Sender: TObject); begin Application.Terminate; end; |
klick auf ja...und weiter gehts.
vielen dank für die hilfe.
MfG
|
|
Marc.
      
Beiträge: 1876
Erhaltene Danke: 129
Win 8.1, Xubuntu 15.10
|
Verfasst: Fr 30.11.07 18:42
Da finde ich diese Lösung deutlich eleganter:
Delphi-Quelltext 1: 2: 3: 4:
| procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin canclose := (MessageDlg('Wollen Sie das Programm wirklich beenden ?',mtConfirmation, [mbYes, mbNo], 0) = mrYes); end; |
Grüße
Marc
|
|
V!P3R 
      
Beiträge: 151
|
Verfasst: Fr 30.11.07 19:02
Ansichts - und Geschmackssache
|
|
Timosch
      
Beiträge: 1314
Debian Squeeze, Win 7 Prof.
D7 Pers
|
Verfasst: Fr 30.11.07 20:25
V!P3R hat folgendes geschrieben: | Ansichts - und Geschmackssache |
Ähm, mit Marcs Methode brauchst du das gesamte zweite Formular nicht...
Aber das hatten wir doch schonmal irgendwo in einem Thread heute, oder?
_________________ If liberty means anything at all, it means the right to tell people what they do not want to hear. - George Orwell
|
|
V!P3R 
      
Beiträge: 151
|
Verfasst: Sa 01.12.07 13:54
könnte mal bitte einer diesen Thred schließen,
DIE FRAGE IST DOCH SCHON LÄNGST BEANTWORTET
|
|
Marc.
      
Beiträge: 1876
Erhaltene Danke: 129
Win 8.1, Xubuntu 15.10
|
Verfasst: Sa 01.12.07 13:56
V!P3R hat folgendes geschrieben: | könnte mal bitte einer diesen Thred schließen,
DIE FRAGE IST DOCH SCHON LÄNGST BEANTWORTET |
Mäßige bitte deinen Tonfall!
Was spricht denn dagegen, über alternative Lösungsvorschläge weiter zu diskutieren?
cu
Marc
|
|
Atreyu
      
Beiträge: 137
Delphi 7 Enterprise
|
Verfasst: Sa 01.12.07 14:05
Davon abgesehen, dass Marcs Lösung tatsächlich wesentlich eleganter ist...
|
|