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/)
-   -   Delphi einfaches lauflicht? (https://www.delphipraxis.net/5053-einfaches-lauflicht.html)

Chriss 22. Mai 2003 08:51


einfaches lauflicht?
 
hi @ all!!

ich hab ein einfaches lauflicht programmiert. es arbeitet mit 10 labels, wovon immer nur 3 "rot leuchten".
ich hab es schon hinbekommen, dass das lauflicht von links nach rechts und wieder zurück funktioniert, aber dann geht es nicht weiter... warum nicht!?

damit zähle ich ein label hoch, woran sich das lauflicht orientieren soll:

Code:
Label1.Caption := IntToStr(i+1);
i := i+1;
und mit diesem teil "leuchten" die label auf:

Code:
if label1.caption='20' then
begin
label12.color:=clblack;
label15.color:=clred;
end;
(da ist es bereits an der 4. "lampe")

der rückweg geht gleich:

Code:
if label1.caption='85' then
begin
label15.color:=clblack;
label12.color:=clred;
end;

alles schön und gut... aber wenn ich jetzt das label auf '0' setzte, geht es nicht weiter, aber er sollte doch eigentlich wieder hochzählen, oder?

thx

Chriss

[Flox]Cauchy 22. Mai 2003 08:55

Kannst Du bitte erst mal posten, wie diese 10 Labels angeordnet sind bzw. wie das mit dem Lauflicht aussehen soll? Irgendwie peile ich die Quelltextteile, die Du geschrieben hast, nämlich (noch) nicht. ;-)

Chriss 22. Mai 2003 09:01

also, die label sind horizontal angeordnet, also in einer reihe:

:arrow: :arrow: :arrow: :arrow: :arrow: :arrow: :arrow: :arrow: :arrow: :arrow:

nach den quelltextausschnitten, leuchtet gerade (beide male einmal von links nach rechts und auf dem rückweg von rechts nach links):

:arrow: :idea: :idea: :idea: :arrow: :arrow: :arrow: :arrow: :arrow: :arrow:


ich hoffe, dass das die anordnung verdeutlicht...

der timer ist übrigends auf 0001 gestellt, damit ein laufender übergang erfolgen kann

[Flox]Cauchy 22. Mai 2003 09:09

Warum machst Du denn nicht so etwas?:
Delphi-Quellcode:
var
  Position: Byte;
  Labels: array[0..9] of TLabel;

procedure Initialize;
  var
    i: Byte;
  begin
    for i := 0 to 2 do
      Labels[i].Color := clRed;
    for i := 3 to 9 do
      Labels[i].Color := clBack;
    Position := 1;
  end;

procedure MoveRight;
  begin
    Labels[(Position+9) mod 10].Color := clBlack;
    Position := (Position+1) mod 10;
    Labels[(Position+1) mod 10].Color := clRed;
  end;

procedure MoveLeft;
  begin
    Labels[(Position+1) mod 10].Color := clBlack;
    Position := (Position+9) mod 10;
    Labels[(Position+9) mod 10].Color := clRed;
  end;
In "Position" steht gerade die Nummer des mittleren der drei Labels, die gerade leuchten.

Chriss 22. Mai 2003 15:02

ähm, sorry, aber dann tut sich gar nichts!
sicher, dass ich nicht noch was brauche?!
timer oder so?!

flomei 22. Mai 2003 16:34

Du brauchst natürlich noch deinen Timer! Der muss ja die Prozeduren ausführen.
Die Labels bewegen sich ja nicht weil es ihnen Spaß macht sondern weil der Timer ihnen in den Ar*** tritt! ;)

MfG Florian :hi:

Chriss 22. Mai 2003 18:29

entweder bin ich jetzt total durch den wind, oder ich bin zu blöd dazu!!!

ich muss die prozeduren da nehmen und sie mit dem timer starten, oder?!
wie mache ich das denn, wenn ich die in den timer setze, gibts nen fehler (wegen dem wort "prozedur" hinter "begin") *schäm*

:oops: :oops:

Stanlay Hanks 22. Mai 2003 18:59

das wort procedure is ja nur bei der eigentlichen Prozedur. Wenn du sie aufrufst musst du das nich mehr schreiben. wenn du z.B. ein Procedur

Delphi-Quellcode:
procedure TForm1.Hallosagen;
begin
ShowMessage('Hallo')
end;
hast, dann musst du beim aufrufen z.B. in einem ButtonClick nur noch schreiben:

Delphi-Quellcode:
begin
Hallosagen
end;

flomei 23. Mai 2003 16:15

Ich schließ mich da jetzt mal Satanly (;)) an. Du nimmst einen Timer, doppelklickst auf ihn nachdem du alle Einstellungen gemacht hast und dann schreibst du hinter das begin der Prozedur:
Delphi-Quellcode:
Labels[(Position+9) mod 10].Color := clBlack;
    Position := (Position+1) mod 10;
    Labels[(Position+1) mod 10].Color := clRed;
Dann kommt schon das end; der Prozedur und gut is.

MfG Florian :hi:

Chriss 23. Mai 2003 17:12

Feherl: unkompatible typen...
denke, dass bezieht sich auf die labels!


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:21 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