Hi Leute, ich bin in eine Zwickmühle mit dem Zerstören eines Fensters geraten. (Delphi7) Scheinbar setzt die VCL die Eigenschaft Parent eines Controls auf nil, bevor dieses gelöscht wird. Ich habe aber eine Control, die sich mit ihrem Handle bei einer anderen Komponente abmelden muss, wenn sie zerstört wird.
Beim Zugriff auf das Handle wird dann gesagt die Komponente besäße 'kein übergeordnetes Fenster'.
Ich habe einen Renderer (nicht visuelle Komponente) die auf mehreren Viewports (TCustomControl) zeichnet. Dafür verwendet sie u.a. deren Handles.
Der Ablauf sieht so aus:
Fenster wird zerstört
Viewport wird zerstört
Viewport signalisiert Renderer, das die Verbindung (Kontext) gelößt werden kann
Renderer ruft Handle des Viewports ab [ReleaseDC(Viewport.Handle, DC)]
VCL braucht das 'übergeordnete Fenster'
CRASH
Wer sich gut mit der VCL auskennt kann mir vielleicht sagen, wie ich das Problem umgehen soll. (Handle zwischenspeichern, Handle über DC ermitteln, ...)