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 SubDa 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 wundervollUnd hätte eigentlich schon nach Jansens Hinweis und einer adäquaten Recherche in der FAQ selbst ermittelt werden können. Stichwort "Sendernamen identifizieren"...