Function deklarieren
-
Hi,
Wie oder wo muss ich eine Funktion deklarieren, um in der Funktion auf Steuerelemente zuzugreifen zu können? Hab meine Function im Header und auch schon in der Quelltextdatei deklariert. Aber wenn ich z.B. etwas in eine ListBox einfügen will, kommt ein Fehler dass es die nich giebt (undef. Sympol "ListBox1").
Danke schonmal
Matthias
-
Klick einfach beim BCB Objektinspektor auf Ereignisse.
Dort gibt es für die ListBox1 z.B. das Ereigniss OnClick. Einfach mal rechts daneben ein Doppeltklick und schon kannste im Quellcode Editor deine Anweisungen für die Funktion einfügen
-
Naja, mit dem On... Ereignissen is schon klar. Aber ich hab da eine etwas umfangreichere Funktion die ich von mehreren verschiedenen Ereignissen aus mit Parametern aufrufen wollte. Die Funktion funzt ja auch - nur dass ich mit ihr nicht auf Steuerelemente zugreifen kann.
Matthias
-
Geschickterweise übergibst du der Funktion die entpsrechenden Zeiger auf die zu verarbeitenden Steuerelemente beim Aufruf.
-junix
-
Hmm,
so ganz habe ich es jetzt nicht Verstanden, ob du aus einer eigenen
Funktion auf ListBox1 zugreifen möchtest oder ob du ListBox1 zur
Laufzeit erstellt hast.Wenn du aus einer eigenen Funktion auf ListBox1 zugreifen möchtest, welche
bei der Entwurfzeit entstand und von der IDE Verwaltet wird, so giebts du in deiner Funktion als Zeiger "Form1->ListBox1->..." an, oder wie Junix
schon sagte übergiebst du einen Zeiger darauf beim Aufruf:Rueckgabe = DeineFunktion(ListBox1); //-- *** DeineFunktion(TListBox *Lbox) { Lbox->..... }
Wird die ListBox zur Laufzeit erstellt, brauchst du diese ansich
nur unter Private im Header zu Deklarieren und wärend der Laufzeit
erstellen.Denke ich mal so auf der Schnelle, wenn ich Falsch liege mögen man
mich verbessern!gruß Micha
-
Wobei dein Vorschlag über FormX->Bla zuzugreifen a) Probleme bringt und b) die Funktion Projektabhängig macht und die Wiederverwendbarkeit in den Wind schiesst.
-junix
-
-
Genau, deswegen habe ich deinen Vorschlag nochmals mit Erwähnt und dazu
ein MiniCodeSchnipsel gezeigt.@Mati
So wie es Junix meint ist vollkommen Richtig, aber diese "Form1->...."
Zugriffsart soll dir auch Zeigen wie du mittels Zeiger durch die Ebenen
wanderst, da deine Funktion nicht unter Form1 steckt, muß diese praktisch
von oben Anfangen, also mit Form1->..blabla. Sicherlich kann dies zu Problemen
in einigen Anwendungen führen und die Copy-Paste Funktion zu anderen Projekten
wird hier ehr Nutzlos, aber du mußt auch die Hirachie der Komponenten Verstehen!Wenn du in einer eigenen Funktion Form1-> eingiebts, siehst du alle Komponenten,
welche zu TForm::Form1 gehören und kannst daruaf zugreifen, auch wenn diese
Methode ehr unangebracht ist, dient sie zum Verständis der Objekt-Hirachie.gruß Micha