![]() |
ocx ActiveForm und Frames
Hallo Zusammen,
ich hab da mal eine Frage bzgl. Frames in ActiveForms. Wenn ich ein Frame zur Laufzeit erzeuge, dann funktioniert das auch alles wunderbar, außer im Frame ist ein TMemo oder TRichedit enthalten. Wenn man dann nun das Projekt erzeugt / startet, erhält man eine Excpetion: EInvalidOperation ... Element 'AvailSoftFrame' hat kein übergeordnetes Fenster. Verwende ich den gleichen Frame ohne die TMemo-Komponente funktioniert dieser. Hat von euch auch mal eines dieses Phänomen festgestellt?
Delphi-Quellcode:
panel_client ist ein TPanel, welches auf dem TActiveForm liegt.
procedure TdcUpdateX.LoadAvailSoftFrame;
var aFrame : TAvailSoftFrame; begin aFrame := TAvailSoftFrame.Create(panel_client); aFrame.Parent := panel_client; end; Die Excpetion tritt hier auf:
Delphi-Quellcode:
procedure TWinControl.CreateWnd;
var Params: TCreateParams; TempClass: TWndClass; ClassRegistered: Boolean; begin CreateParams(Params); with Params do begin if (WndParent = 0) and (Style and WS_CHILD <> 0) then if (Owner <> nil) and (csReading in Owner.ComponentState) and (Owner is TWinControl) then WndParent := TWinControl(Owner).Handle else raise EInvalidOperation.CreateFmt(SParentRequired, [Name]); <-- hier ... |
Re: ocx ActiveForm und Frames
Nach einigem Suchen hab ich doch noch was gefunden.
Man sollte in der Frame-Klasse die folgende Prozedur überschreiben
Delphi-Quellcode:
Das MegaHandle :wink: ist das Handle des Containers, in welchem der Frame angezeigt werden soll (z.B. von einem Panel)
procedure TAvailSoftFrame.CreateParams(var Params: TCreateParams);
begin inherited CreateParams(Params); Params.WndParent := dcUpdateImpl.MegaHandle; end; Wenn jemanden noch ne alternative einfällt, kann er sie gerne kunt tun |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:59 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