Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   "Disco" (oder Countdown) in Delphi möglich? (https://www.delphipraxis.net/58613-disco-oder-countdown-delphi-moeglich.html)

Informatik_Doppelstundler 9. Dez 2005 15:19


"Disco" (oder Countdown) in Delphi möglich?
 
Hi! Verzeiht meine vermeintlich doofe Frage, aber ich fange eben grade erst mit Delphi an, angefangen durch den Informatik Unterricht aber auch privat viel spaß dran.
Also, meine Frage lautet:

Gibt es die möglichkeit in delphi einen countdown laufen zu lassen, bzw. "form1.color" von farbe grün zu rot, zu lime, zu orange...usw. wechseln zu lassen? Also praktisch eine disco ablaufen zu lassen? Natürlich gibt es das, aber ich hab halt keine ahnung wies geht. :stupid:

Ich habe genau diese letzte "disco"-idee mit einer for-schleife und einer while-schleife probiert, aber keine der beiden funktioniert. Er wechselt immer nur von der grundfarbe, die von vorneherein eingestellt ist, auf die letzte Farbe in der schleife. Dabei liegt es nicht daran, dass die schleife so schnell durchlaufen wird, dass man es nicht sieht (i in der for-schleife hab ich von 1 bis 7000000 laufen lassen!!) Naja wie gesagt, ich bin ratlos. Könnt ihr mir helfen?


P.S.: Das Problem liegt auch nicht in der Procedure, ich lass das unter edit1.change laufen, unter der bedingung, dass man "disco" eingibt.

faux 9. Dez 2005 15:25

Re: "Disco" (oder Countdown) in Delphi möglich?
 
Hallo!

Mit einer Schleife wird es nicht gehen, da das Programm wärend deren Ausführung zuzusagen "gesperrt" ist, also keine Paint-Ereignisse auslöst.
Jetzt gibt es zwei Möglichkeiten.
Entweder du schreibst in deine Schleife Application.HandleMessage; um Delphi dazuzubringen, auch wären deiner Schleife das Formular neu zu zeichnen, oder du benutzt einen Delphi-Referenz durchsuchenTimer.
Ich würde den Timer bevorzugen.

Einfach einen Timer auf die Form (Reiter System) und auf Enabled:= True setzen, sowie das Intervall in millisekunden einstellen und dann doppelklicken und den Code eingeben.
Einfach mal probieren oder in der DP suchen.

Grüße
Faux

EDIT: Das Wort System hervorgehoben

FriFra 9. Dez 2005 15:27

Re: "Disco" (oder Countdown) in Delphi möglich?
 
Mit einer Schleife wirst Du IMHO nicht glücklich werden, da diese viel zu schnell läuft. Nimm lieber einen Timer ;)

z.B.:
Delphi-Quellcode:
procedure TForm1.Timer1Execute(Sender: TObject);
begin
  if Color = clBtnFace then
    Color := clRed
  else if Color = clRed then
    Color := clGreen
  else if Color = clGreen then
    Color := clBlue
  else if Color = clBlue then
    Color := clLime
  else if Color = clLime then
    Color := clBtnFace;
end;

Informatik_Doppelstundler 9. Dez 2005 15:43

Re: "Disco" (oder Countdown) in Delphi möglich?
 
Wow :shock: das ging ja schnell! So fixe antworten hätte ich nicht erwartet :) DankeDanke. Nu zum Problem:

Also ich hab euch verstanden, hab jetzt nur noch ein Problem:

Da ich delphi 5 leider auf englusch habe und die deutsche version nur in der schule, kann ich mit dem index eintrag zum "timer" net viel anfangen. Deswergen wärs klasse wenn ihr mir nochmal erklären könntet, wie man "einen timer setzt". :stupid:

faux 9. Dez 2005 15:46

Re: "Disco" (oder Countdown) in Delphi möglich?
 
Im prinzip musst du diesen nur auf die Form setzen, und dann doppelt anklicken.
Alles was du dann in die erschienene Procedure schreibst, wird dann alle 1000ms (jede Sekunde) ausgeführt, es sei denn, du hast in der Eigenschaft Intervall einen anderen Wert.

Grüße
Faux

Airblader 9. Dez 2005 15:47

Re: "Disco" (oder Countdown) in Delphi möglich?
 
@FriFra
:shock: Noch nie von Delphi-Referenz durchsuchencase gehört? ;)

@Informatik_Doppelstundler
Einfach einen TTimer auf dein Formular ziehen und bei "Interval" die Millisekunden angeben.
Bei den Prozeduren dazu kannst du das Event OnTimer definieren, dass jeden Timerdurchlauf ausgeführt wird ;)

"Enables" sagt dir, ob der Timer läuft (TRUE) oder nicht (FALSE)

air

Interceptor 9. Dez 2005 15:48

Re: "Disco" (oder Countdown) in Delphi möglich?
 
Der Timer is ne Komponente, befindet sich im Reiter 'System', wenn mich nicht alles täuscht.
Zieh ihn auf die Form, klicke doppelt drauf und du bist im On_Timer event, da schreibst du dann den Code rein.

Und nicht vergessen ihn vorher auf enabled := true zu setzen.

etom291272 9. Dez 2005 15:48

Re: "Disco" (oder Countdown) in Delphi möglich?
 
timer aufs formular ziehen property interval einstellen enabled auf true und im ereignis on timer den code rein -> fertig :mrgreen:

Informatik_Doppelstundler 9. Dez 2005 15:53

Re: "Disco" (oder Countdown) in Delphi möglich?
 
Ja genau das war das problem (wo ich TTimer finde)

1000 Dank :-D


UUUND: Es funzt!!!!!! :-D :-D :-D :-D Fett! (Wofür werden Informatik-Lehrer bezahlt, wenn sie einem solche dinge net erklären können :twisted:

Also nochmal dankedankedanke :dp:

FriFra 9. Dez 2005 16:00

Re: "Disco" (oder Countdown) in Delphi möglich?
 
Zitat:

Zitat von Airblader
@FriFra
:shock: Noch nie von Delphi-Referenz durchsuchencase gehört? ;)

Doch, aber ich bevorzuge trotzdem if, da man damit auch komplexere Abfragen realisieren kann... wenn einem mal irgendwann noch eine weitere Bedigung "einfällt", dann hat es sich ohnehin "ausgecased" ;)

Zitat:

Zitat von faux
Wo liegt bloß der Sinn, wenn vier Leute exakt das Selbe schreiben? :roll:

Den gibt es nicht :zwinker: ...


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:11 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz