Label Frage + eine Weitere
-
Bei sowas einfachen kannste:
if(Label1->Color == clRed) { Label1->Color = clBlue; Label2->Color = clRed; } else { Label1->Color = clRed; Label2->Color = clBlue; }
Wen zum Beispiel ein Button zwei verschiedene Arten von Ereignissen nacheinander machen soll:
Header:
void __fastcall Button1Click(TObject *Sender); void __fastcall Button1Click2(TObject *Sender);
CPP:
void __fastcall TForm1::Button1Click(TObject *Sender) { Button1->OnClick = Button1Click2; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click2(TObject *Sender) { Button1->OnClick = Button1Click; } //---------------------------------------------------------------------------
mfg
-
@ Multi
Wie geht das denn?
**
Label1
Label2**ALSO:
Wenn ich nun VK_DOWN klicke wird Label1 Rot.
Wenn ich nochmal VK_DOWN klicke wird Label1 wieder wie vorhin und label2 wird RotIch krieg es einfach net hin
-
oh sind ja Labels
genau so wie mit den Buttons
TLabel hat auch 'Tag'
-
wie soll das denn genau sein?
variante 1:
1 2
1 2
1 2
1 2
1 2oder variante 2:
1 2
1 2
1 2
1 2
1 2
?bei variante 2 guck dir das mit den Tags an und + eine if-else-Bedingung
bei variante 1 " " " " " " " " + 1-2Zeilen mehr schreiben
-
Also ich meine es so:
z.B
Label1
Label2
Label3
Label4Nun habe ich einmal VK_DOWN gedrückt.
Label1
Label2
Label3
Label4Nochmal VK_DOWN gedrückt.
Label1
Label2
Label3
Label4Nochmal VK_DOWN gedrückt.
Label1
Label2
Label3
Label4So meine ich das. Nur dass es statt "fett" dann rot ist
-
Ach sooooo
ja dann mach das mit einem Inkrement (das mit dem ++
)
und dann am besten eine switch-Bedingung die deine erhöhte Zahl überprüft (die ++ wird)
und in den einzelnen case dann die farbige gestalltung und beim letzten (dh bei dir 3) nicht vergessen die Variabel (also den Integer) wieder auf 0 setztenalso:
int deineZahl = 0; switch(deinZahl) { case 0: //code für farbige Labels (hier für Label1) deineZahl++; break; case 1: //code für Farbe des Label2 ... usw deineZahl++; break; case n: /*also dein letztes case .. *code* */ deineZahl = 0; }
-
Geht nicht.
Also meine Form sieht so aus:
http://img3.imagebanana.com/img/0ov61s0y/Unbenannt.bmp.pngUnd das habe ich in einen Timer gepackt:
{ int deineZahl = 1; switch(3) { case 0: if(GetAsyncKeyState(VK_DOWN))Label1->Font->Color=clRed; deineZahl++; break; case 1: if(GetAsyncKeyState(VK_DOWN))Label3->Font->Color=clRed; deineZahl++; break; } }
-
Hi,
switch(3)
mfg, Micha
-
kA wie es geht. Pls schreibt ma den Code rein :S
-
Lies dir besser mal eine Erklärung dazu durch, besser noch das ganze Tutorial.
http://tutorial.schornboeck.net/switch.htm
-
Also ich fasse mal zusammen:
Du weißt nicht was ein Inkrement/Dekrement ist.
Das heißt du kennst auch keine for-Schleife (da ist das fast sozusagen ein Hauptbestandteil)Zudem weißt du auch nichts von eine switch-Bedingung.
Bei recht einfachen Sachen kommst du nicht weiter.
Da gab es mal sonn schönen Satz von akari (hab den Beitrag nicht gefunden):
Einen Programmierer mit OOP und GUI anfangen zu lassen, ist als wenn man einen Nichtschwimmer bei Sturm ins Wasser stürzt. (oder so ähnlich)Ich würde dir Raten erstmal programmieren in einer Konsole zu lernen,
sodass dir nachher die ganzen Schleifen/Bedingungen usw ein Name ist.Und zu deinem Problem:
In einem Timer das hineinzumachen ist eigentlich (für die CPU (obwohl die packt das dann wie in den L2Cache rein)) recht zeitaufwendig, also immer in einem gewissen Zeitinterval das zu überprüfen.
Es gibt da eine andere Möglichkeit, guck mal in der FAQ