Shape mit Variable



  • Hallo an alle,

    ich habe mal eine Frage. In meinem Formular habe ich mehrere Shapes. Ist es denn möglich diese mit Variablen anzusprechen z.B. Shape[i].

    grüße seven



  • klar, siehe FAQ -> Komponenten benutzen -> "Zugriff, aber nicht durch Namen" oder "Dynamische Arrays von Komponenten oder Objekten"



  • Hey vielen Danke für deine schnelle Antwort.
    Aber irgendwie so ganz verstehen tuh ich des leider nich 😞



  • Hallo

    Das ist schade.

    bis bald
    akari



  • Tja, ich hab dies nun mit einem Switch case gemacht sin dann zwar viele Fälle aber naja. Trotzdem danke an alle

    grüße seven



  • Du gibst aber schnell auf.
    Hättest du gepostet, was du nicht verstehst...



  • Hallo

    In dem genannten FAQ-Beitrag steht alles notwendige. Selbstverständlich kannst du immer noch Nachfragen stellen. Konkrete Antworten aber bekommst du nur mit konkreten Fragen. "versteh ich nicht" ist keine konkrete Frage.

    bis bald
    akari



  • ja des stimmt schon, ich wollt des gestern unbedingt lösen und habs irgendwie so in der eile nich kapiert. Hab mich jetzt nomal in Ruhe hingesetzt und es funktioniert. Also nochmal vielen dank ihr beiden.
    So habe ich es gelöst:

    dynamic_cast<TShape*>(Form2->Components[i+2])->Visible = True;
    dynamic_cast<TShape*>(Form2->Components[i+2])->Left = koordinate_x + 350;
    dynamic_cast<TShape*>(Form2->Components[i+2])->Top = koordinate_y + 325;
    

    grüße seven



  • Besser ist es, wenn du nur einmalig den "dynamic_cast" aufrufst, also:

    TShape shape = dynamic_cast<TShape*>(Form2->Components[i+2]); // <- aber warum hier "Form2->"?
    
    shape->Visible = true;
    shape->Left = koordinate_x + 350;
    shape->Top = koordinate_y + 325;
    

    Wenn du innerhalb einer Event-Methode auf die eigene Form-Instanz zugreifen willst, dann reicht "this->" (bzw. ganz weglassen -).



  • Eine Prüfung gegen 0 ist bei dynamic_casts mit Zeigern auch ganz hilfreich, um zu prüfen, ob der cast fehlschlägt.

    TShape shape = dynamic_cast<TShape*>(Form2->Components[i+2]); 
    
    if( shape )
    {
       shape->Visible = true;
       shape->Left = koordinate_x + 350;
       shape->Top = koordinate_y + 325;
    }
    

Anmelden zum Antworten