Dynamische Array - OnMouseDown
-
Hallo,
das ist etwas schwierig zu erklären. Ich habe eine dynamische Array von TShapes erzeugt. Diesen möchte ich jetzt OnMouseDown zuweisen.
Bei diesem OnMouseDown soll bei dem angeklickten Shape das Brush->Style verändert werden. Aber wie soll ich herausfinden, welches Shape ich geklickt habe. Mit Sender krieg ich ja nur den Namen.
Ich hoffe ihr habt mich verstanden und danke im vorraus
-
Hallo
Da du ja schon den namen des Senders herausbekommst, hast du ja schon gecastet. Dann ist es ganz einfach, dafür die freie Eigenschaft Tag zu nehmen. Beim Erstellen der dynamischen Cotnrols schreibst du für jedes dort einen eindeutigen selbstgewählten Integerwert rein. Dieses kannst du dann im Event wieder auslesen udn auswerten.
/Edit : wobei ich mich grad frag warum du nicht einfach gleich auf TShape castest, dann kannst du deine Änderung gleich am konkreten Control vornehmen.
bis bald
akari
-
Hallo,
Wieso sollte man durch Sender nur den Namen bekommen? Hast du diesen FAQ-Beitrag richtig durchgelesen?
http://www.c-plusplus.net/forum/viewtopic-var-t-is-39207.html
Du bekommst so Zugriff auf dein ShapeTShape* shape = dynamic_cast<TShape*>(Sender); if( shape != 0) { ...Oder brauchst du unbedingt den Index deines Arrays?
-
ich bin noch ein ziemlicher anfänger.das mit dem namen der komponente meinte ich diesen FAQ-Beitrag. Aber das
if (dynamic_cast<TLabel*>(Form1->Components[i])->Name == "Label1")bringt ja nichts, da ich um die 400 Shapes habe. Und da jedes mal abzufragen ist ein bisschen viel. ich brauche den index des arrays um die komponente direkt anzusprechen.
also sowas in etwa
shape[i]->Brush->Style = bsSolid;und dabei soll i der wert der angeklickten komponente sein.
-
sry... hatte ebn ein knoten im kopf!
hat sich jetzt alles geklärt!
vieln dank nochmal
-
Ja, dann sag auch bitte, wie es sich geklärt hat.
-
TShape* shape = dynamic_cast<TShape*>(Sender);
so.^^
-
Naja, aber deinen Index hast du dadurch immer noch nicht.
-
doch mit string replace. n bischn umständlich aber funktioniert.
-
Hmmm? String Replace? Verstehe ich nicht.
-
Hallo
er benutzt StrignReplace anscheind um den Index aus dem namen zu bekommen.
Halte ich aber für definitiv für zu umständlich. Hier noch mal mein Hinweis auf die Tag-Eigenschaft, wo ihr jeden beliebeigen Index oder ID an ein Control hängen könnt.bis bald
akari