Label Frage + eine Weitere
-
Sagen wir mal ich habe 2 Labels untereinander
Label1
Label2
Nun, wenn ich VK_DOWN drücke wird Label1 Rot.
Wenn ich nochmal VK_DOWN drücke wird Label1 wieder die Farbe wie am Anfang und
Label 2 Rot.Wie geht das?
nun meine weitere Frage.
Wie kann ich allgemein solche dinge machen.
Wie geht der Code dass ich zweimal etwas drücken kann ohne 2 Buttons zu brauchen oder so?lg h4xter
-
kann man ganz einfach machen:
if(c==0) { Label1->Color=clRed; c++;} else{ Label1->Color=clBlue; c--;}
und da sbekommt man auch ohne wissen von ireghdwelchen funktionen hin .. einfach mal sufu nutzen
-
guck dir mal (in der BcB-Hilfe) bei TButton die Eigenschaft 'Tag' an
-
Was ist dieses c-- und c++.
Bei mir ist immer undefiniert.
Wie geht das GENAU?
-
c ist ein Integer(int) (muss bei dir dann auch im quelltext initialiesiert sein 'int c;'
)
und ++ ist der inkrement und -- ist dekrement
da er erhöht einen wert um eins(++) oder vermindert es (--)
ein bisschen literatur (also ganz grob und kurz):
es gibt die vorläufer von C++ und zwar C davor gabs B davor A
so eigentlich hätten die C++ auch D nennen können aber *zwinker* der wert wird ja um eins erhöht also ist C++ D (im übertragenen Sinne geht nur mit Zahlen also Integer)
und zur eigentlichen Frage:
da: http://www.c-plusplus.net/forum/viewtopic-var-t-is-217250.html
hast du doch schon fast die selbe Frage gestellt mit selben Hintergrund
-
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