Label zugreifen mit aus dem Programm generierten Namen (war: Schaut's euch einf...
-
Also ich hab folgendes Problem:
Sagen wir ich hätte jetzt ein paar labels:
labA1, labA2, labA3 usw.
labB1, labB2, labB3 usw.so, und nun möchte ich den Buchstaben von lab sounso in x Speichern
und die Zahl in y.bei labC4 wäre zB. x=C und y=4.
Ok, das war meine erste Frage, nun kommt die zweite:
ich habe für x nun einen Buchstaben zB. B und für y eine Zahl zB. 5
Ok, jetzt soll damit die Farbe von labB5 zB. blau werden.
ich stell mir den Befehl so irgendwie vor: lab(x)(y)->Color=clBlue;also falls ihr mir helfen könnt (da bin ich ziemlich sicher) und
es euch nicht zu langweiilig mir zu antworten, dann tut das!!!mfg., FrozenBox
<edit>Bitte aussagekräftige Überschriften verwenden! Danke.</edit>
[ Dieser Beitrag wurde am 07.06.2003 um 12:14 Uhr von junix editiert. ]
-
In der FAQ steht glaub ich irgendwo, wie du die Komponentennamen (Komponentennamen finden) zu einem String casten kannst. Der Rest ist dann reines Stringhandling. Siehe dazu auch hier: http://bcb-tutorial.c-plusplus.net/
-
Mach doch 'n array von TLabel*'s
Speicher darin die Adressen deiner Labels (im CTor)
Greif mit Index auf Array- Elemente zu!
(Oder probier's mit Tlist.)
-
Also das geht über arrays von pointer hier ein kleines Beischbiel wenn du das ganze von der IDE verwalten lassen willst :
also du hast LabA1,... u. LabB1,...TLabel *MyLabels[2][3]; MyLabels[0][0] = LabA1; MyLabels[0][1] = LabA2; MyLabels[0][2] = LabA3; MyLabels[1][0] = LabB1; MyLabels[1][1] = LabB2; MyLabels[1][2] = LabB3;
-
Es gibt auch die Möglichkeit das jeweilige Label zu suchen. Ist vielleicht ein wenig umständlich, aber so muß Du nicht über ein Array arbeiten und kannst die Labels direkt über deine Buchstaben und Zahlen verändern.
Benutze hierzu den WinApi-Befehl dynamic_cast.Kleines Beispiel:
(Sucht das Label:LabA1 und setzt die Schrift auf Rot)AnsiString Label,x,y; x="A"; y="1"; Label="Lab"+x+y; dynamic_cast<TLabel*>(FindComponent(Label))->Font->Color=clRed;
[ Dieser Beitrag wurde am 06.06.2003 um 20:11 Uhr von DirtyCat editiert. ]
-
DirtyCat: Zwar nett die Lösung aber einen Schönheitsfehler hat das Ganze noch: Man sollte nicht direkt das Resultat von dynamic_cast verwenden um einen Zugriff auf Eigenschaften zu realisieren. Hier sollte man unbedingt das Resultat zwischenspeichern und vor der Verwendung noch auf NULL zu prüfen.
AnsiString Label,x,y; x="A"; y="1"; Label="Lab"+x+y; TLabel *Label_Lbl = dynamic_cast<TLabel*>(FindComponent(Label)) if (Label_Lbl) { Label_Lbl->Font->Color=clRed; }
-junix