AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Eigene Komponente -> Handle vom Aufruf-Fenster bekommen?
Thema durchsuchen
Ansicht
Themen-Optionen

Eigene Komponente -> Handle vom Aufruf-Fenster bekommen?

Ein Thema von KodeZwerg · begonnen am 4. Aug 2020 · letzter Beitrag vom 4. Aug 2020
 
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.374 Beiträge
 
Delphi 12 Athens
 
#4

AW: Eigene Komponente -> Handle vom Aufruf-Fenster bekommen?

  Alt 4. Aug 2020, 09:01
Ein HWND ist nicht unveränderlich, denn es kann unter Umständen entladen und neu erstellt werden.
Auch muß es beim Erstellen/Laden der Form noch nichtmal existieren.

Besser das Handle immer bei Benutzung (maximal zu Beginn jeder Methode) frisch besorgen.


Wenn man das Handle "aktuell" nicht unbeding "sofort" benötigt, dann kann man auch HandleAllocated prüfen, bevor man auf Handle zugreift.


Zitat:
Delphi-Quellcode:
constructor TKomponente.Create(AOwner: TComponent);
begin
  FParentWnd := (AOwner as TForm).Handle;
end;
Wieso willst du von Vcl.Forms wegkommen? FMX?
Bzw. was meinst du mit "wegkommen"?

Zitat:
Das funktioniert nicht unbedingt: Owner muss nicht notwendigerweise ein TForm sein.
Genau, darum geht man auch nicht über die Owner-Beziehungen, sondern nimmt die Parent-Beziehungen.
Außer man definiert fpr seine Klasse, dass der Owner unbedingt eine Form sein muß, was hier implizit gemacht wird, denn AS lässt ausschließlich TForms oder NIL zu.
Aber wie immer in der Verärbung sollte man besser TCustomForm für den Cast verwenden, anstatt TForm. (Beispiel: siehe Result von GetParentForm)

Delphi-Referenz durchsuchenGetParentForm
Delphi-Referenz durchsuchenTWinControl.ParentWindow
Delphi-Referenz durchsuchenTWinControl.GetParentHandle
Delphi-Referenz durchsuchenTWinControl.GetTopParentHandle (aufpassen bei MDI und eingebetteten Forms)
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 4. Aug 2020 um 09:13 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz