Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Panel zum blinken durch Timer bekommen
chriss1988 - Do 08.12.05 10:32
Titel: Panel zum blinken durch Timer bekommen
als erstes ma guten morgen an ale
wie ihr aus der überschrift bestimmt schon gelesen habt möchte ich es hinbekommen das mein panel blink :roll: ,da er immoment nur nach links läuft und mir das ziemlich öde ist :eyecrazy: .
ich hab mal ein teil meines codes kopiert könnt ihr mir bei der sache ma bitte helfen, da in der hilfe von delphi5 leider net mehr drin steht.
Delphi-Quelltext
1: 2: 3: 4: 5:
| procedure TForm2.Timer1Timer(Sender: TObject); begin Timer1.Interval := 100; if panel1<> nil then panel1.Left := panel1.Left + 1; |
naturlich soll der panel nur ne bestimmte zeit blinken und dan aufhörn z.B (5 ma blinken)
also brauch ich da auch en bissl hilfe
schon ma danke für jede antwort
mfg.
diddi
Moderiert von
Gausi: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Do 08.12.2005 um 10:29
azubi_20 - Do 08.12.05 10:47
Rezept zum blinken lassen :
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| - variable zähler mit 0 initialisieren - in den timer einbauen : - zähler = zähler +1 - in den timer ne bedingung : - wenn panel.farbe = rot dann panel.farbe = grün sonst panel.farbe = rot - und noch ne bedingung : - wenn zähler = 10 dann timer = aus |
und dann musst du nor noch den timer starten und dein panel blinkt lustig in rot und grün
chriss1988 - Do 08.12.05 10:52
aha und nun bitte auf deutsch ich bin neu im programmieren
azubi_20 - Do 08.12.05 11:00
chriss1988 hat folgendes geschrieben: |
aha und nun bitte auf deutsch ich bin neu im programmieren |
meiner Meinung ist mein Beitrag in Deutsch :?
was verstehst du denn nicht ?
chriss1988 - Do 08.12.05 11:04
wenn ich ehrlich bin ich versteh nur bahnhof
Blackheart666 - Do 08.12.05 11:04
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30:
| var Form1: TForm1; Zaehler:Integer; implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); begin Timer1.Enabled:=True; end;
procedure TForm1.Timer1Timer(Sender: TObject); begin Inc(Zaehler); Timer1.Interval:=1000; if Zaehler=1 then Label1.Color:=clGreen; if Zaehler=2 then Label1.Color:=clYellow; if Zaehler=3 then Label1.Color:=clRed; if Zaehler=4 then Label1.Color:=clBtnFace; if Zaehler=5 then Zaehler:=0; if Zaehler=5 then Timer1.Enabled:=False; end;
procedure TForm1.FormCreate(Sender: TObject); begin Timer1.Enabled:=False; end;
end. |
chriss1988 - Do 08.12.05 11:08
Blackheart666 hat folgendes geschrieben: |
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29:
| var Form1: TForm1; Zaehler:Integer; implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); begin Timer1.Enabled:=True; end;
procedure TForm1.Timer1Timer(Sender: TObject); begin Inc(Zaehler); Timer1.Interval:=1000; if Zaehler=1 then Label1.Color:=clGreen; if Zaehler=2 then Label1.Color:=clYellow; if Zaehler=3 then Label1.Color:=clRed; if Zaehler=4 then Label1.Color:=clBtnFace; if Zaehler=5 then Timer1.Enabled:=False; end;
procedure TForm1.FormCreate(Sender: TObject); begin Timer1.Enabled:=False; end;
end. | |
aha das formcreat bekomm ich bei ereignisse bei der form1
Blackheart666 - Do 08.12.05 11:13
Den Timer Interval und das False im Create hab Ich jetzt nur der Übersicht halber gesetzt, das kannst Du auch über den OB tun.
chriss1988 - Do 08.12.05 12:17
ok danke das hab ich jetzt nun öchte ich das das nur kommt wenn ich
kein radiobutton anklick
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46:
| procedure TForm2.BitBtn1Click(Sender: TObject); begin
Tauschgeld:=strtofloat(edit1.text);
If radiobutton1.checked then Betrag:=Tauschgeld/Dollar;
If radiobutton2.checked then Betrag:=Tauschgeld/Kronen;
If radiobutton3.checked then Betrag:=Tauschgeld/1000;
if (not radioButton1.checked) and (not radioButton2.checked) and (not radioButton3.checked) then betrag:=0; panel1.caption:='error'; panel1.visible:=true; Timer1.Enabled:=True;
edit2.text:=floattostrf(Betrag,fffixed,9,2);
end;
procedure TForm2.Timer1Timer(Sender: TObject); begin Inc(Zaehler); Timer1.Interval:=1000; if Zaehler=1 then panel1.Color:=clGreen; if Zaehler=2 then panel1.Color:=clYellow; if Zaehler=3 then panel1.Color:=clRed; if Zaehler=4 then panel1.Color:=clBlue; if Zaehler=5 then panel1.Color:=clBtnFace; if Zaehler=6 then Timer1.Enabled:=False;
end;
procedure TForm2.FormCreate(Sender: TObject); begin Timer1.Enabled:=False; end; |
also wie mach das nun weil immoment bringt er mir immer die fehlermeldung.
petergensfeld - Do 08.12.05 15:12
Hallo,
ich würde Blackhearts Code noch dahin ändern, dass die Laufvariable nicht global, sondern statisch innerhalb der Routine definiert wird. Das Interval braucht nur einmal im FormCreate gesetzt zu werden (oder eben im OI). Die Timer-Routine könnte dann so aussehen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| procedure TForm1.Timer1Timer(Sender: TObject); const Zaehler: Integer=0; begin inc(Zaehler); case Zaehler of 1: Label1.Color:=clGreen; 2: Label1.Color:=clYellow; 3: Label1.Color:=clRed; 4: Label1.Color:=clBtnFace; else begin Timer1.Enabled:=False; Zaehler:=0; end; end; end; |
Du solltest mal ein begin...end um Dein If setzen!
Gruß Dirk
Blackheart666 - Do 08.12.05 15:39
Ich Denke mal man sollte zu seinem Problem, immer dazu sagen was habe Ich denn überhaupt vor ! (Die Idee wird schon keiner Klauen)
"Weil" - aus dem einem Problem ergibt sich das andere, und wenn man weiss worauf der Fragesteller hinauswill (was manchmal nicht so einfach ist) lässt sich das eigentliche Problem doch schon ziehmlich genau eingrenzen und eventuell auch ziehmlich einfach beantworten.
(Sonst ist meistens alles geraten, der Thread wird lang und das Ergebnis ist naja...)
Ich muss dazu sagen das es mir auch schon öfter so ging, das Ich zwar mein Problem kannte aber es mir ziehmlich schwer gefallen ist es auch irgendwie rüberzubringen.
Die ganze Sache mit Case usw. ist alles richtig, aber man weiss eben nie genau wie weit ist der Fragesteller !
Ich denke drei Codezeilen zum Anfang sind nicht viel mehr Arbeit, aber eben zum Anfang besser zu verstehen.
Ivo@CoMRoK - Fr 09.12.05 22:05
Also ich finde das ist jetzt irgendwie nicht eindeutig:
Willst su dass das Panel immerwieder mal blinkt und dann wieder nicht?
Dann würd ich das so machen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| procedure Timer1.Timer(Sender: TObject) begin Timer1.Interval := 100; Label1.Color:= clGreen; sleep(10); ... end; |
Oder willst du auf eine Aktion etwas ausführen?
Dann so:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| procedure Button1.Click(Sender: TObject) begin Label1.Color := clGreen; sleep(10); ... end; |
mfg Ivo
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 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!