Autor |
Beitrag |
boozzz
      
Beiträge: 66
Win XP, Win 2000, SuSe Linux
|
Verfasst: Fr 06.01.06 20:42
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
      
Beiträge: 2195
XP
D3Prof, D6Pers.
|
Verfasst: 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
      
Beiträge: 1094
Win XP SP2, Win 2000 SP4
Delphi 7, 2k5
|
Verfasst: Fr 06.01.06 20:54
_________________ Theorie ist wenn man alles weiß, aber nichts funktioniert. Praxis ist wenn alles funktioniert, aber niemand weiß warum.
Microsoft vereint Theorie und Praxis: Nichts funktioniert und niemand weiß warum.
|
|
boozzz 
      
Beiträge: 66
Win XP, Win 2000, SuSe Linux
|
Verfasst: 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.
Wie könnte ich das mit einem Timer realisieren?  (Bin noch Anfänger in Delphi)
|
|
Born-to-Frag
      
Beiträge: 1094
Win XP SP2, Win 2000 SP4
Delphi 7, 2k5
|
Verfasst: 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 
_________________ Theorie ist wenn man alles weiß, aber nichts funktioniert. Praxis ist wenn alles funktioniert, aber niemand weiß warum.
Microsoft vereint Theorie und Praxis: Nichts funktioniert und niemand weiß warum.
Zuletzt bearbeitet von Born-to-Frag am Sa 07.01.06 03:50, insgesamt 1-mal bearbeitet
|
|
Calyptus
      
Beiträge: 386
Win Xp Prof
D3, D6 Pers, D7 Ent
|
Verfasst: 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)
_________________ Luft- und Raumfahrtechnik an der Uni Stuttgart
|
|
Born-to-Frag
      
Beiträge: 1094
Win XP SP2, Win 2000 SP4
Delphi 7, 2k5
|
Verfasst: 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
_________________ Theorie ist wenn man alles weiß, aber nichts funktioniert. Praxis ist wenn alles funktioniert, aber niemand weiß warum.
Microsoft vereint Theorie und Praxis: Nichts funktioniert und niemand weiß warum.
|
|
Blackheart666
      
Beiträge: 2195
XP
D3Prof, D6Pers.
|
Verfasst: 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
      
Beiträge: 385
Win XP
D7 PE, D2k5 Trial
|
Verfasst: So 08.01.06 01:43
ich würde da lieber
if Zaehler>11 then Timer1.Enabled:=false;
hinmachen
|
|
Blackheart666
      
Beiträge: 2195
XP
D3Prof, D6Pers.
|
Verfasst: So 08.01.06 01:48
Ist aber nicht nötig weil 11 höchstwarscheinlich kommt (wenn nichts schiefgeht...)
|
|
LH_Freak
      
Beiträge: 385
Win XP
D7 PE, D2k5 Trial
|
Verfasst: So 08.01.06 02:03
sicher ist sicher 
|
|
boozzz 
      
Beiträge: 66
Win XP, Win 2000, SuSe Linux
|
Verfasst: 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
      
Beiträge: 1094
Win XP SP2, Win 2000 SP4
Delphi 7, 2k5
|
Verfasst: 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 
_________________ Theorie ist wenn man alles weiß, aber nichts funktioniert. Praxis ist wenn alles funktioniert, aber niemand weiß warum.
Microsoft vereint Theorie und Praxis: Nichts funktioniert und niemand weiß warum.
|
|
0xCC
      
Beiträge: 150
|
Verfasst: So 08.01.06 18:03
tu einfach zum sleep ein application.processmessages
|
|
boozzz 
      
Beiträge: 66
Win XP, Win 2000, SuSe Linux
|
Verfasst: Mi 11.01.06 20:08
Die Fehlermeldung beim compilieren kommt leider trotzdem.
|
|
0xCC
      
Beiträge: 150
|
Verfasst: Mi 11.01.06 20:38
|
|
Mister X-Ray
      
Beiträge: 41
Win XP, Win 2000
D7 Pers, D2005 Pers
|
Verfasst: Do 12.01.06 16:43
du hast hoffentlich
Delphi-Quelltext
und nicht nur
Delphi-Quelltext
oder?
Gruß
Mister X-Ray
_________________ Wissen ist Macht, aber nichts wissen macht nichts !
|
|
Born-to-Frag
      
Beiträge: 1094
Win XP SP2, Win 2000 SP4
Delphi 7, 2k5
|
Verfasst: Do 12.01.06 17:40
_________________ Theorie ist wenn man alles weiß, aber nichts funktioniert. Praxis ist wenn alles funktioniert, aber niemand weiß warum.
Microsoft vereint Theorie und Praxis: Nichts funktioniert und niemand weiß warum.
|
|
Born-to-Frag
      
Beiträge: 1094
Win XP SP2, Win 2000 SP4
Delphi 7, 2k5
|
Verfasst: 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..
_________________ Theorie ist wenn man alles weiß, aber nichts funktioniert. Praxis ist wenn alles funktioniert, aber niemand weiß warum.
Microsoft vereint Theorie und Praxis: Nichts funktioniert und niemand weiß warum.
|
|
Aya
      
Beiträge: 1964
Erhaltene Danke: 15
MacOSX 10.6.7
Xcode / C++
|
Verfasst: 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
_________________ Aya
I aim for my endless dreams and I know they will come true!
|
|