Entwickler-Ecke
Multimedia / Grafik - Image blinken lassen
boozzz - Fr 06.01.06 20:42
Titel: Image blinken lassen
Hi,
im folgenden möchte ich Image1 blinken lassen (An-Aus-An-Aus...). Kann mir jemand sagen, wieso das nicht funktioniert?
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| procedure TForm1.Button1Click(Sender: TObject); begin Form1.Image1.Visible:=false; sleep(500); Form1.Image1.Visible:=true; sleep(500); Form1.Image1.Visible:=false; sleep(500); Form1.Image1.Visible:=true; sleep(500); Form1.Image1.Visible:=false; sleep(500); end; |
Blackheart666 - Fr 06.01.06 20:52
Probiers mal So.
Delphi-Quelltext
1: 2: 3: 4:
| procedure TForm1.Button1Click(Sender: TObject); begin Image1.Visible:= not Image1.Visible; end; |
Born-to-Frag - Fr 06.01.06 20:54
Titel: Re: Image blinken lassen
boozzz hat folgendes geschrieben: |
Hi,
im folgenden möchte ich Image1 blinken lassen (An-Aus-An-Aus...). Kann mir jemand sagen, wieso das nicht funktioniert?
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| procedure TForm1.Button1Click(Sender: TObject); begin Form1.Image1.Visible:=false; sleep(500); Form1.Image1.Visible:=true; sleep(500); Form1.Image1.Visible:=false; sleep(500); Form1.Image1.Visible:=true; sleep(500); Form1.Image1.Visible:=false; sleep(500); end; | |
WAS funktioniert nicht? Es sollte eigendlich funktionieren, obwohl es in einem Timer wesentlich schöner währe :?
greetz
boozzz - Sa 07.01.06 00:58
Zitat: |
WAS funktioniert nicht? Es sollte eigendlich funktionieren, obwohl es in einem Timer wesentlich schöner währe |
Es tut sich nichts, wenn ich auf den Button klicke, nur dass nach ca. 2 Sekunden das Image verschwindet. Blinken tut da nichts.
Blackheart's Möglichkeit funktioniert leider auch nicht. :cry:
Wie könnte ich das mit einem Timer realisieren? :roll: (Bin noch Anfänger in Delphi)
Born-to-Frag - Sa 07.01.06 01:15
Mach mal vor jedem Sleep ein Repaint; ;)
greetz
EDIT: Und warum hast du was gegen Timer? Ist doch wesentlich eleganter und während dem blinken schläft das Programm nicht..
EDIT2: Frage überlesen :oops:
Calyptus - Sa 07.01.06 01:38
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| procedure TForm1.Timer1Timer(Sender: TObject); begin if Image1.Visible = true then Image1.Visible := false else Image1.Visible := true; end; |
Die Geschindigkeit kannst du in Timer1.Interval festlegen (in ms)
Born-to-Frag - Sa 07.01.06 03:49
Calyptus hat folgendes geschrieben: |
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| procedure TForm1.Timer1Timer(Sender: TObject); begin if Image1.Visible = true then Image1.Visible := false else Image1.Visible := true; end; |
Die Geschindigkeit kannst du in Timer1.Interval festlegen (in ms) |
Mhhh Calyptus.. das geht wohl noch eleganter:
Delphi-Quelltext
1: 2: 3: 4:
| procedure TForm1.Timer1Timer(Sender: TObject); begin Image1.Visible := not Image1.Visible; end; |
;)
die Alternative zu Sleep.
greetz
-B2F
Blackheart666 - Sa 07.01.06 10:46
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| 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:=500; if Zaehler=11 then Timer1.Enabled:=false; Image1.Visible := not Image1.Visible; end; |
LH_Freak - So 08.01.06 01:43
ich würde da lieber
if Zaehler>11 then Timer1.Enabled:=false;
hinmachen
Blackheart666 - So 08.01.06 01:48
Ist aber nicht nötig weil 11 höchstwarscheinlich kommt (wenn nichts schiefgeht...)
LH_Freak - So 08.01.06 02:03
sicher ist sicher :D
boozzz - So 08.01.06 17:29
bin gerade beim rumprobieren.
Was soll die Fehlermeldung:
"Datei.pas(407): Undefinierter Bezeichner: 'Repaint'" ??
Repaint ist doch ein Delphi-Befehl, oder? Oder muss ich da wat deklarieren?
Born-to-Frag - So 08.01.06 17:55
boozzz hat folgendes geschrieben: |
bin gerade beim rumprobieren.
Was soll die Fehlermeldung:
"Datei.pas(407): Undefinierter Bezeichner: 'Repaint'" ??
Repaint ist doch ein Delphi-Befehl, oder? Oder muss ich da wat deklarieren? |
Zeig mal ein bisschen mehr Code ;)
0xCC - So 08.01.06 18:03
tu einfach zum sleep ein application.processmessages
boozzz - Mi 11.01.06 20:08
Die Fehlermeldung beim compilieren kommt leider trotzdem.
0xCC - Mi 11.01.06 20:38
das repaint lass weg
Mister X-Ray - Do 12.01.06 16:43
du hast hoffentlich
und nicht nur
oder?
Gruß
Mister X-Ray
Born-to-Frag - Do 12.01.06 17:40
Mister X-Ray hat folgendes geschrieben: |
du hast hoffentlich
und nicht nur
oder?
Gruß
Mister X-Ray |
Schwachsinn -.- Repaint allein geht auch, das ist dann nähmlich wie FormX.Repaint und das wird genauso funktieren, da dann alles auf der Form repainted wird ;)
Aber wenn die Fehlermeldung "Unbekannter Bezeichner 'Repaint'" auch kommt wenn du Repaint; weglässt, stimmt da was nicht :lol:
greetz
Born-to-Frag - Do 12.01.06 17:45
Also ich weiß nicht was für ein
RIESIGES Brett du vorm Kopf hast, aber hier noch mal so wie du es machen sollst:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| image1.Visible := not image1.Visible; repaint; sleep(500); image1.Visible := not image1.Visible; repaint; sleep(500); image1.Visible := not image1.Visible; repaint; sleep(500); |
Und damit du es auch ganz sicher schaffst, hier mal ein Projekt zum testen
greetz
EDIT: Und noch mal als Timer ein Projekt -.- (wesendlich besser, da kann man in der zeit auch noch was machen am prog und es friert nicht ein ;) )
Jetzt sollte es wirklich klar sein, oder?
EDIT2: Du kannst natürlich auch immer statt
not auch True bzw. False benutzen, im Timer ist es aber einfacher so, außer du machst es so wie es weiter oben steht:
Delphi-Quelltext
1: 2: 3:
| if Timer1.Enabled = True then Timer1.Enabled := False else Timer1.Enabled := True; |
Das war jetzt aber ausführlich genug..
Aya - Do 12.01.06 20:49
Hi,
nur um nochmal darauf zurückzukommen warum es mit Sleep nicht geht... ;)
Du gibst dem programm keine chance irgendwo neue Messages zu verarbeiten.. daher pack einfach vor jedes sleep ein Application.ProcessMessages; und schon sollte es gehen (auch ohne repaint)
Au'revoir,
Aya
Born-to-Frag - Do 12.01.06 21:51
Aya hat folgendes geschrieben: |
Hi,
nur um nochmal darauf zurückzukommen warum es mit Sleep nicht geht... ;)
Du gibst dem programm keine chance irgendwo neue Messages zu verarbeiten.. daher pack einfach vor jedes sleep ein Application.ProcessMessages; und schon sollte es gehen (auch ohne repaint)
Au'revoir,
Aya |
Hast du dir den Thread wenigstens 10% durchgelesen? :shock:
Er hats anscheinend schon mit beidem probiert und Application.ProcessMessages wurde schon erwähnt :shock:
Aber irgendwie versteht er es nicht.. :rofl:
Ich würde Repaint vor ProcessMessages vorziehen..
greetz
Blackheart666 - Do 12.01.06 21:57
Dann schieb Ich noch einen nach...
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| procedure TForm1.Button1Click(Sender: TObject); begin Form1.Image1.Visible:=false; sleep(500); Refresh; Form1.Image1.Visible:=true; sleep(500); Refresh; Form1.Image1.Visible:=false; sleep(500); Refresh; Form1.Image1.Visible:=true; sleep(500); Refresh; Form1.Image1.Visible:=false; sleep(500); end; |
Born-to-Frag - Do 12.01.06 23:00
:rofl: Wenigstens was neues ;)
EDIT: Sollte das Refresh nicht VOR dem Sleep :gruebel: ?
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!