von Komponente auf des Parent-Form?
-
Hi,
einfache Frage (nur schwierige Antwort ;)): Wie kann ich das Form ermitteln auf dem einen Komponente liegt und zwar auch wenn die Komponente z.B. auf einem Panel liegt...Das Problem ist, ich möchte ein paar Nachrichten die Windows an das Form schickt in meiner Komponente auswerten und dazu möchte ich die WndProc mit SetWindowLong umleiten. Nur dazu brauche ich ja den Handle von dem Form...
Danke
MfG
Alexander Sulfrian
PS: Was mit gerade beim Schreiben einfällt: Heißt das "die" oder "das" Form?
-
Üblicherweise sollte die Form der Owner der Komponente sein, das wäre also ein Ansatz. Allerdings ist das wohl nicht 100% zuverlässig, da bei dynamisch erzeugten Komponenten ja abweichende Owner im Konstruktor definiert werden können.
Relativ sicher sollte das Hangeln durch die einzelnen Parent-Schichten sein, bis man NULL zurückbekommt. Das (mit dem Parent) gilt natürlich nur für visuelle Komponenten, andererseits liegen nicht-visuelle Komponenten natürlich auch nicht "z.B. auf einem Panel".PS: Was mit gerade beim Schreiben einfällt: Heißt das "die" oder "das" Form?
Gefühlssache. Siehe oben.

-
Oder solange durch die Parents hangeln, bis sich die Komponente über die RTTI als TForm-basierend ermitteln läßt.
-
Eine Form kann durch Setzen der Parent-Property zur Laufzeit auch in eine andere Form "embedded" werden. Wenn man davon ausgeht, dass sich das SetWindowLong-Geraffel auf die echte Hauptform beziehen soll, würden Ansätze über das Casten nach TForm in so einem Fall (mindestens) eine Stufe zu früh abbrechen.
-
Ok, da hab' ich nicht zu Ende gedacht...