Suche befehl(in delphi FindComponent)
-
Hi,
ich suche einen Befehl der den gleichen effekt hat wie FindComponent bei delphi
die c++ hilfe hat micht geholfen, es gibt den eintrag zwar aber in den steht nichts über den befehl odder ich bin zu blöd das zusehen
ich wollte damit mehrere buttons ändern, da das
Buttonx->Caption = "bla";(x die nr des buttons, zb Button1, Button2,etc)
nicht geht und die hilfe auch nichts bringt hoffe ich das ihr mir helfen könnt
die suchfunktion hat zwar einige ergebnisse gebracht, aber ich kann c++ leider noch nit genug um es umsetzen zu können

ich hoffe ihr könnt mir helfen
Mfg Mistery
-
Hallo,
Dieser FAQ-Beitrag hat dir wirklich nicht geholfen?
-
danke
hat mir geholfenhatte den nicht gefunden da ich ja nicht wusste wo nach ich suchen muss bzw ich nur nach FindComponent gesucht hab
geht das auch wenn der buttonx_y zb Button1_1, Buttton2_2 heißt ?
Mfg Mistery
-
Mistery86 schrieb:
geht das auch wenn der buttonx_y zb Button1_1, Buttton2_2 heißt ?
Der "Name" eines objekts ist auch nur ein AnsiString.
kurz gesagt "ja, das geht auch".
-
Kurze Anmerkung zum o.g. FAQ-Beitrag: TComponent hat schon die Eigenschaft Name, muss also nicht erst noch gecastet werden. Das beeinflusst nur unnötig die Performance

- Windoof
-
hab nu ein prob

bekomm immer eine exception wenn ich die funktion ausführe(die dick geschriebene zeile, gibt der builder an)
void __fastcall TForm1::setze(vert,hor) { for(int i=0; i < 10 ; i++) { for(int t=0; t < 10; t++) { name_weg="Feld"+IntToStr(i)+"_"+IntToStr(t); if (dynamic_cast<TLabel*>(Form1->Components[i])->Name == name_weg) dynamic_cast<TLabel*>(Form1->Components[i])->Color = clMedGray; } } name1 = "Feld"+IntToStr(vert)+"_"+IntToStr(hor); for(int i=0; i < Form1->ComponentCount; i++) { [b]if (dynamic_cast<TLabel*>(Form1->Components[i])->Name == name1)[/b] dynamic_cast<TLabel*>(Form1->Components[i])->Color = clRed; verti=vert+1; name_2 = "Feld"+IntToStr(verti)+"_"+IntToStr(hor); if (dynamic_cast<TLabel*>(Form1->Components[i])->Name == name_2) dynamic_cast<TLabel*>(Form1->Components[i])->Color = clRed; } }aufgerufen wird die funktion mit
setze(1,1);die labels sind Feld1_1 bis Feld10_10, ich hoffe ihr könnt mir helfen

und das beste ist ja dabei das er die felder einfärbt

Mfg Mistery
-
Hallo
naja, in Variante 1 läßt du dir die Labels nach Namen suchen. Im zweiten aber gehst du alle Componenten durch und zwingst denen den Cast nach TLabel auf. Wenn aber eine Komponente im Form kein Label ist, kommt NULL beim Cast raus und der Zugriff auf Name verursacht eine Exception.
Schreib mal lieber
TLabel *CurrLabel; ... CurrLabel = dynamic_cast<TLabel*>(Form1->Components[i]); if ((CurrLabel != NULL) && (CurrLabel->Name == name1)) CurrLabel->Color = clRed;bis bald
akari
-
dank dir hat geholfen

kenn mich halt noch nit so gut mit c++ aus

wenn ich weitere fragen hab meld ich mich

Mfg Mistery