Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - TComponent: Handle vom Fenster


Andreas Pfau - Di 28.01.03 22:57
Titel: TComponent: Handle vom Fenster
Hallo,

wie kann ich das Handle des Fensters rausfinden, auf dem ein TComponent platziert ist (also zur Laufzeit)?


LarsMiddendorf - Di 28.01.03 23:28

comp ist vom Type TComponent

TWinControl(comp.owner).handle

Normalerweise ist der Owner der Componente die Form.


Andreas Pfau - Di 28.01.03 23:49

Danke!


AndyB - Mi 29.01.03 08:16

LarsMiddendorf hat folgendes geschrieben:
Normalerweise ist der Owner der Componente die Form.

Das sollte man aber vorher prüfen:

Quelltext
1:
2:
3:
4:
if (Owner <> nil) and (Owner is TWinControl) then
  FormHandle := TWinControl(Owner).Handle
else
  FormHandle := 0;


Andreas Pfau - Mi 29.01.03 17:23

Hallo @AndyB,

dein Cod eleuchtet ein, aber sag' mal, ein TComponent benötigt doch imme rein Fenster, oder? Ich meine, kann es sein, dass die Komponente zwar ein Fenster hat, das aber nicht = Owner ist? Oder gibt es auch TComponent ohne Fenster?


LarsMiddendorf - Mi 29.01.03 20:49

Der owner einer Komponente ist vom Type TComponent. Das kann z.B auch ein Datenmodul sein. Das Datenmodul stammt nicht von TWinControl ab und hat deshalb auch kein Fenster-Handle.


Andreas Pfau - Mi 29.01.03 21:56

Aha, OK, Danke! :D