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 geholfen

    hatte 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


Anmelden zum Antworten