Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Mit Button-Click Alle Timer ausschalten?
BoerseMan79 - Fr 14.12.12 18:17
Titel: Mit Button-Click Alle Timer ausschalten?
Gibt es eine Möglichkeit auf alle Komponente eines Typs zu zugreifen ohne es mit Findcomponent und for-Schleife zu realisieren?
Also ich habe 17 Timer mit verschiedenen Namen: (Timer1, Timer2, Timer3, AutoSetTimer, LeftTimer, RightTimer, ...)
Ich will die auf einen Schlag alle ausschalten (Pause-Button) und dann wieder starten (Resume-Button)
Moderiert von
Narses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Fr 14.12.2012 um 23:00
Gausi - Fr 14.12.12 18:41
17 Timer sind vermutlich eh zuviel. ;-)
Ansonsten: pack die Timer im FormCreate in ein Array of TTimer und mach dann eine for-Schleife über dieses Array.
hansa - Fr 14.12.12 19:05
Einfacher gehts wohl kaum :
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| procedure TForm1.Button1Click(Sender: TObject); var i : integer; begin for i := 0 to Componentcount - 1 do begin if Components [i] is TTimer then (Components [i] as TTimer).enabled := false; end; end; |
Aber ohne For-Schleife oder gar Variablen geht mit Delphi nix. Doch : "Hallo Welt" - Programm. Das kriegt man fast ohne alles hin. :mrgreen:
WasWeißDennIch - Sa 15.12.12 08:57
Doppelt gemoppelt :), as enthält bereits die is-Prüfung, daher kann man auch hart casten, wenn man schon weiß, was man vor sich hat.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| procedure TForm1.Button1Click(Sender: TObject); var i : integer; begin for i := 0 to Componentcount - 1 do begin if Components [i] is TTimer then TTimer(Components[i]).enabled := false; end; end; |
Man muss aber dabei auch bedenken, dass man damit
alle Timer, deren Owner man ist, deaktiviert. Will man gezielt nur eine bestimmte Gruppe ansprechen, empfiehlt es sich, diese in ein Array oder eine Liste zu packen und dann darüber zu iterieren, wie Gausi bereits erwähnt hat.
bummi - Sa 15.12.12 12:43
Ich bin ja keine Freund von den Jedi's und von vielen Timern, wenn es bei Dir anders ist kannst Du auch eine JvTimerlist verwenden.
Delphi-Quelltext
1: 2: 3: 4:
| procedure TForm6.Button1Click(Sender: TObject); begin JvTimerList1.Active := not JvTimerList1.Active; end; |
Moderiert von
Martok: Delphi-Tags hinzugefügt
Der Schreckliche - So 16.12.12 20:13
Fehler! von mir
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!