TObject *Sender - Bedeutung / Nutzung

jupp2oo8

Mitglied
HI.
Kann mir jemand sagen, ob man irgendwie Informationen erhalten kann über den "Aufrufer" einer Funktion?
zb wird TestFunction(TObject *Sender ) {...} doch von diesem TSender aufgerufen oder nicht?
Ich würde gerne unterscheiden können, von welchem Objekt eine Funktion aufgerufen wird. Geht das überhaupt?
Danke für eure Tipps!
Jupp
 
ja das geht, du schreibst einfach eine Funktion für jede Klasse

TestFunction(TObject *Sender ) {...}
TestFunction(klasse2 *Sender ) {...}
...
immer den gleichen namen, aber anderen parameter

Wenn du den Aufruf selber verändern kannst, gehts noch einfacher:
einfach einen zweiten parameter, zb int dazu, so zirka 1 bedeutet von TObjekt, 2 vom klass2 ...

Gruß
 
Das versteh ich noch nicht so ganz. Ich meine zB die vom Borland Builder selbst erzeugten Funktionsaufrufe wie eben TestFunction(TObject *Sender) {...} zB ButtonClick oder so. Da schreibt er ja selbst (TObject *Sender) hinter.
Wenn ich das Programm Zeile für Zeile durchlaufen lasse, dann kann ich mir ja eine Parameter Liste angucken zB welchen Wert bestimmte Variablen haben. Und da wird auch Sender aufgeführt. Aber dahinter steht nur eine Adresse, nicht welches Objekt denn nun wirklich die Funktion aufgerufen hat.

Die Erklärung oben verstehe ich noch zu wenig (Da ich noch relativ Anfängerin bin).
Vielleicht noch mal genauer oder Bsp?
Das wär sehr nett
 
Ich hab den eindruck da kommt was durcheinander

das TObject muss die Funktion nicht zwingend aufrufen, wird nur wie int etc als Parameter übergeben

Und die Adresse ist die, wo das eben übergebene TObjekt im Speicher halt zu finden ist

Nocheinmal: Es gibt keine GArantie, dass die Funktion auch davon aufgerufen wird!
 
Das ist ja schade, dass man nicht rauskriegen kann, von wo aus bzw von wem eine Funktion aufgerufen wurde.
Ich fänd das irgendwie sehr praktisch.
Wüsste nicht, wie ich sonst rauskriegen könnte, ob ein Button manuell per Hand mit der Maus angeklickt wurde, oder zb durch eine ankommende Message mit dem Befehl Button->Checked=true;

Oder fällt jemandem etwas ein dazu? Bin leider noch nicht so lange am programmieren...
 
Vielleicht gibt es ja bei Borland Funktionen, mit denen man auf den Callstack (Aufrufstapel) zugreifen kann.
 
Zurück