Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - CanClose nach Timer auf True setzen
walter_b - Di 18.03.08 22:21
Titel: CanClose nach Timer auf True setzen
Hallo zusammen
Habe ein ähnliches Problem, wie es auch schon vorgekommen ist, allerdings habe ich keine passende Lösung für mich gefunden.
Folgende Situation:
Ich möchte, dass wenn man auf close klickt, dann der Timer auf true gesetzt wird, danach die procedure TForm1.Timer3Timer ausgeführt wird, und danach das Programm beendet wird.
Der aktuelle Programmcode:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| procedure TForm1.Timer3Timer(Sender: TObject); begin if (form1.Width > 2) AND (form1.Height > 2) then begin form1.Width:=form1.Width-2; form1.Left:=form1.Left+1; form1.Top:=form1.Top+1; form1.Height:=form1.Height-2; end; if (form1.Top>800) then begin schliessen:=true; end; end;
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin CanClose:=false; form1.Timer3.Enabled:=true; CanClose:=true; end; |
Wie schaff ich es, dass das CanClose:=true; wartet, bis der Timer auf false gesetzt ist?
Mit
if (form1.timer3.enabled=false) hat es nicht funktioniert.
Xentar - Di 18.03.08 22:24
1. Schreib nicht überall form1. davor
2. Im CloseQuery setzt du CanClose auf False und startest den Timer. Wenn der Timer abgelaufen ist, setzt du dir eine Hilfvariable auf true, und rufst wieder ein close auf. Wenn diese Hilfvariable auf true steht, lässt due CanClose auf true.
walter_b - Di 18.03.08 22:42
Xentar hat folgendes geschrieben: |
1. Schreib nicht überall form1. davor
2. Im CloseQuery setzt du CanClose auf False und startest den Timer. Wenn der Timer abgelaufen ist, setzt du dir eine Hilfvariable auf true, und rufst wieder ein close auf. Wenn diese Hilfvariable auf true steht, lässt due CanClose auf true. |
Ah, cool, vielen Dank.
Noch kurz wegen dem form1: wenn ich gesamthaft 3 forms habe, dann brauche ich doch das form1, damit er erkennt, welches form ich meine, nicht?
Xentar - Di 18.03.08 22:44
Nope.
Die Prozedur, wo das drinsteht, gehört ja schon zu Form1
Damit greift er automatisch auf das Formular zu.
Kannst es dir also wieder abgewöhnen, da du damit an manchen Stellen sogar Probleme bekommen kannst.
wulfskin - Di 18.03.08 23:44
Xentar hat folgendes geschrieben: |
| Kannst es dir also wieder abgewöhnen, da du damit an manchen Stellen sogar Probleme bekommen kannst. |
Beispiel bitte?
Xentar - Di 18.03.08 23:51
wulfskin hat folgendes geschrieben: |
Xentar hat folgendes geschrieben: | | Kannst es dir also wieder abgewöhnen, da du damit an manchen Stellen sogar Probleme bekommen kannst. | Beispiel bitte? |
Wenn man mehrere Objekte einer Klasse hat, aber innerhalb der Klasse auf ein bestimmtes Objekt zugreift, statt das "aufrufende".
Kommt bei Formularen wohl seltener vor, aber bei Frames / normalen Klassen.
Weiß grad nicht, wie ich das ausdrücken soll..
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!