Parent eines (dynamisch erstellten) Objekts herausfinden
-
Hallo zusammen!
Ich versuche schon die ganze Zeit herauszufinden, wie man auf den Parent eines Objekts zugreift:objEdit_Bez = new TEdit(objTabSheet); objEdit_Bez->Parent = objTabSheet; objEdit_Bez->OnChange = EditChange; vecEdit_Bez.push_back(objEdit_Bez); void __fastcall TForm1::EditChange(TObject *Sender) { TEdit *Edit_Geklickt = dynamic_cast<TEdit*>(Sender); if(NULL != Edit_Geklickt) { //Jetzt möchte ich hier den Parent von Edit_Geklickt ausfindig machen, um darauf zugreifen zu können } }
Es ist wahrscheinlich verdammt einfach, aber ich komm einfach nicht drauf. Könntet ihr mir auf die Sprünge helfen?
Bis bald
-
Die Antwort hast du dir doch schon mit der Zeile
objEdit_Bez->Parent = objTabSheet;
selbst gegeben.
Edit_Geklickt->Parent;
-
Ich erstelle die objTabSheets aber auch zur Laufzeit und füge diese auch in einen Vector ein. Dann muss ich mir ja genau den TabSheet raussuchen, auf dem der gedrückte Button liegt!
Grüße
-
Ääh?!?
Bin mir trotz der verwirrenden Beschreibung sicher, dass das die richtige Anwort war:
VergissEs schrieb:
Edit_Geklickt->Parent;
-
Uff, danke. Dann muss ich mich nochmal genauer mit Pointern beschäftigen, weils zwar so funktioniert, ich aber trotzdem keine Ahnung habe, warum er sich das richtige TabSheet (wo das jeweilige Editfeld draufliegt) heraussucht..
void __fastcall TForm1::E_BezChange(TObject *Sender) { TEdit *Edit_Geklickt = dynamic_cast<TEdit*>(Sender); if(NULL != Edit_Geklickt) objTabSheet->Caption = Edit_Geklickt->Text; }
Danke und bis dann
-
kiki26 schrieb:
void __fastcall TForm1::E_BezChange(TObject *Sender) { TEdit *Edit_Geklickt = dynamic_cast<TEdit*>(Sender); if(NULL != Edit_Geklickt) objTabSheet->Caption = Edit_Geklickt->Text; }
Hast du objTabSheet als Membervariable deiner Klasse eingerichtet ?
Dürftest du eigentlich nicht brauchen wenn du alles in einen Vector hast.Wenn du wirklich mehrere TabSheet in den Vector gespeichert hast/willst
dann caste Edit_Geklickt->Parent auf einen TTabSheet dann bist du sicher
das du den richtigen TabSheet hast.void __fastcall TForm1::E_BezChange(TObject *Sender) { TEdit *Edit_Geklickt = dynamic_cast<TEdit*>(Sender); if(Edit_Geklickt) { TTabSheet *TS = dynamic_cast<TTabSheet*>(Edit_Geklickt->Parent); if (TS) { TS->Caption = Edit_Geklickt->Text; } } }
-
VergissEs schrieb:
Hast du objTabSheet als Membervariable deiner Klasse eingerichtet ?
Nein. Ich erstelle auf Button-Click einfach ein neues TabSheet mit ein paar Elementen drauf, die alle einzeln in ihre Vectoren eingefügt werden.
Danke! Mit deinem Code hab ich genau das, was ich gesucht hatte!
Bis bald