Autor Beitrag
20:30
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 27



BeitragVerfasst: Di 31.07.12 13:15 
So, jetzt komm ich mit einer völligen Anfänger-Frage.
Ich möchte beim Klicken zwischen zwei Timer hin und her wechseln. Ich Voll-Noob bekomm das irgendwie nicht ganz auf die Reihe... :oops:

i ist ein globaler boolean

(MouseDown:)
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
  if i = false then
    begin
      Timer1.Enabled := false;
      Timer2.Enabled := true;
      i := true;
    end;
  if i = true then
    begin
      Timer2.Enabled := false;
      Timer1.Enabled := true;
      i := false;
    end;


Zuletzt bearbeitet von 20:30 am Di 31.07.12 13:39, insgesamt 1-mal bearbeitet
Webo
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 577
Erhaltene Danke: 14

Win 7, Debian
C# (Visual Studio 2013), PHP, C, C++ (Eclipse, KDevelop)
BeitragVerfasst: Di 31.07.12 13:18 
Wenn du die erste if-Abfrage durchlaufen hast und Timer 1 deaktiviert hast, dann setzt du i auf true und dann kommt die zweite if-Abfrage, die dann natürlich auch erfüllt ist - merkste was? :D Ich würde hier ganz einfach statt dem zweiten if ein if-else aus dem ersten machen.

_________________
Man kann nur das aus dem Ärmel schütteln, was man auch vorher reingesteckt hat.

Für diesen Beitrag haben gedankt: 20:30
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 31.07.12 13:20 
Und davon abgesehen wäre es sinnvoller gleich nur einen Timer zu benutzen und in dessen Event zu entscheiden was gerade passieren soll.

Zudem ist der Vergleich mit Booleanwerten (z.B. if i = true then) so nicht sinnvoll. Hier habe ich mal ein kleines Beispiel gebastelt, wann das schief geht:
www.delphi-forum.de/....php?p=548760#548760
Mehr dazu steht hier:
www.delphi-treff.de/...che-anfaengerfehler/
Und warum das auch vollkommen unlogisch ist:
www.delphi-forum.de/....php?p=560637#560637

Für diesen Beitrag haben gedankt: 20:30
IhopeonlyReader
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 600
Erhaltene Danke: 23


Delphi 7 PE
BeitragVerfasst: Di 31.07.12 22:09 
Wennn du umbedingt 2 Timer haben möchtest dann schreib
ausblenden Delphi-Quelltext
1:
2:
Timer1.Enabled := not Timer1.Enabled;
Timer2.Enabled := not Timer2.Enabled;

aber besser wäre 1 Timer.. in dem machst du das dann so: (ist ist dann immer aktiv)

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
//Prozedure vom Timer
if Normal then
 begin
 //schreibste das vom ehemlaigen Timer1.
 end
else 
 begin
 //schreibste das vom Timer2 rein
 end;

//Auf Klick passiert dann (dein ehemaliger Timerwechsel)
Normal := not Normal


Fertig :)

_________________
Sucht "neueres" Delphi :D
Wer nicht brauch was er hat, brauch auch nicht was er nicht hat!
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 01.08.12 13:10 
Man könnte dafür auch die tag Eigenschaft der Schaltfläche für die Unterscheidung nutzen. Wobei die Lösung mit dem Not am elegantesten und übersichtlichsten ist.