Object Sender ? Identifizieren des Objects



  • Ich hab mir schon etliche Threads angeguckt und scheine der Antwort nah und doch fern...

    und deswegen werd ich gar nicht erst mit Fackwörtern anfangen sondern nur ein Beispiel sagen welches ich haben möchte, dadurch werds ichs dann wohl verstehen.

    Also ganz simpel:

    Ich möchte zur Laufzeit 5 Shapes erzeugen (Eigenschaften könnt ihr auch aussuchen) nur sollte es halt den parent->this haben, visible sein und ->Brush->Color = crBlack

    so

    und nun soll man wenn man auf EINES der shapes klickt DAS GEKLICKTE ->Brush->Color = crWhite werden.

    irgendwie bin ich krank und bekomms nich hin...

    weil der Sender nur ne Klasse und kein objektname gibt... ka... jedenfalls son beispiel wär perfekt ^^

    danke 🙂



  • Siehe FAQ, Abschnitt "Komponenten benutzen".
    Den Namen brauchst du nicht, der Sender ist die jeweils angeklickte Komponente.



  • mir fehlt irgendwo die simpelheit, daher blick ich nicht durch wie man an das objekt kommt

    in Visual Basic beispielsweise erstelle ich 5 PictureBoxen mit einem Steuerelement PictureBox(0) bis PictureBox(4), ähnlich halt einem Array...

    und dann einfach

    Private Sub PictureBox_Click(Index As Integer)
    
    PictureBox(Index).BackColor = vbBlack
    
    End Sub
    

    Da der Index bei einer steuerelement komponente übergeben wird beim ereignis

    aber bei borland gibts nur sender, den ich net verstehe da er nur übergibt welche klasse das object ist welches ein ereignis erfuhr. irgendwie undurchsichtig für mich



  • WÄRE Sender das Objekt würde ich es nämlich so verstehen

    Sender->Brush->Color = clBlack;
    

    was natürlich vollkommen falsch ist, aber ich möchte eine simple Lösung.



  • Divine schrieb:

    was natürlich vollkommen falsch ist

    Eigentlich liegst du gar nicht so daneben. Sender ist ein Basisklassenzeiger auf das TShape-Objekt; um ihn als TShape verwenden zu können, mußt du ihn hochcasten:

    TShape* shape = dynamic_cast <TShape*> (Sender);
    if (shape) // Cast erfolgreich? Wenn nicht, ist der Sender kein TShape...
    {
        shape->Brush->Color = clBlack;
        ...
    }
    


  • jaaaa
    das ist wundervoll
    vielen dank
    🙂



  • Divine schrieb:

    jaaaa
    das ist wundervoll

    Und hätte eigentlich schon nach Jansens Hinweis und einer adäquaten Recherche in der FAQ selbst ermittelt werden können. Stichwort "Sendernamen identifizieren"...


Anmelden zum Antworten