Zugriff auf Form-inhalte von selbstdefinierter Funktion
-
hallo nochmal
danke erstmal.
aber ein problem habe ich noch: wenn ich das gesamte form übergebe, wie kann ich dann auf die elemente in dem form zugreifen?
Form->Element->Eigenschaft funktioniert nicht.
-
zeig mal genau was du versucht hast
-
Linnea schrieb:
void TuEtwas(TForm *MyForm) {}
Für das TForm musst Du natürlich den konkreten Klassennamen von Deinem Forumular angeben. Ich vermute mal TForm1.
Grüße Joe_M.
-
hallo
also, ich habe ein form, auf dem sind 9 verschiedene edits.
jetzt soll meine eigene funktion diese edits auslesen können, da habe ich also an das übergeben des ganzen forms gedacht, weil ich es unpraktisch fände, die neun edits einzeln reinzupacken.
@Joe_M.: bei mir heißt es Form3//deklaration sieht so aus: void PCTurn (TForm *Form); //die funktion sieht (bisher) so aus: void PCTurn (TForm *Form) { Application->MessageBoxA(Form->Edit1->Text, "bla", 0);//ein zugriffsversuch } //so wird sie aufgerufen: void __fastcall TForm3::Edit1Click(TObject *Sender) { if (Label2->Caption == "m" && Label1->Caption == "1") { Edit1->Text = "X"; Label2->Caption = "p"; PCTurn(Form3); } }
Edit: Probleme mit c/c++ tags beheben
-
nix mit parameter, du musst deine funktion methode der klasse form werden lassen, damit du auf die form inhalte zu greifen kannst. dazu öffnest du die headerdatei deiner unit1.cpp und schreibst folgendes rein:
class TForm1 : public TForm { __published: // Von der IDE verwaltete Komponenten TEdit *Edit1; TEdit *Edit2; TEdit *Edit3; TEdit *Edit4; TEdit *Edit5; TEdit *Edit6; TEdit *Edit7; TEdit *Edit8; TEdit *Edit9; private: // Anwenderdeklarationen void PCTurn(); // deine funktion wird methode von TForm1 und kann // nun auf die form objekte zugreifen public: // Anwenderdeklarationen __fastcall TForm1(TComponent* Owner); };
und in deiner quelltextdatei definierst du die funktion dann so:
void TForm1::PCTurn() { //... }
-
void PCTurn (TForm *Form) { if (!Form->ClassNameIs("TForm3")) return; TForm3* pfrm = dynamic_cast<TForm3*>(Form); if (pfrm) { ShowMessage(pfrm->Edit1->Text); } }
-
vielen dank, funktioniert bestens. habe kreaters lösung benutzt.
-
könnt jemand das von Vergiss es nen bisschen erläutern oO das sieht echt interessant aus
-
Hallo
Was willst du denn dazu wissen? Zu dynamic_cast findest du sicher genug Threads hier im BCB-Forum und im C++ Forum.
bis bald
akari
-
Diese Zeile hier ist dabei aber überflüssig.
if (!Form->ClassNameIs("TForm3")) return;