![]() |
Element '' hat kein übergeordnetes Fenster
Tag,
es geht hier um eine abgeleitete Komponente von RichEdit. Ich erhalte diesen Fehler (siehe Topic) sobald ich das nachgebildete RichEdit auf meine Form packe, nur wieso? Im Create steht folgendes:
Delphi-Quellcode:
Ich habe nach der Fehlermeldung im Forum gesucht und habe daraus gelesen, das das daher kommt weil kein Parent angegeben ist, richtig? Wenn dem so ist, wie kann ich dann den Parent wissen wenn ich gar nicht weiss wo ich das richedit nachher draufpacke?
constructor TpbIRCChatBox.Create(AOwner: TComponent);
begin inherited Create(AOwner); OldWndProc := WindowProc; WindowProc := NewWndProc; end; |
Re: Element '' hat kein übergeordnetes Fenster
|
Re: Element '' hat kein übergeordnetes Fenster
im Create der Componente ist kein parent angegeben, und somit existiert auch noch keine WindowProc dafür.
|
Re: Element '' hat kein übergeordnetes Fenster
@Christian: ich schau mal nach, danke.
@SirThornberry: Du hast recht es liegt an dein beiden letzten Zeilen des Create's...hmmm. Wo sollte man denn due windowproc sonst umbiegen? im onshow? |
Re: Element '' hat kein übergeordnetes Fenster
Christian Seehase hat's doch geschrieben... du musst die Prozedur CreateWnd überschreiben.
Delphi-Quellcode:
procedure TpbIRCChatBox.CreateWnd;
begin inherited CreateWnd); OldWndProc := WindowProc; WindowProc := NewWndProc; end; |
Re: Element '' hat kein übergeordnetes Fenster
alternativ kannst du auch CreateParams überschreiben wobei das aufs gleiche hinaus läuft.
|
Re: Element '' hat kein übergeordnetes Fenster
Moin,
so ich habe CreateWnd überschrieben. Nun wenn ich mein Programm beende ist es erstmal 1min gefroren und dann bekomme ich eine AV "Stack Overflow". Weiss jemand was zu tun ist? Sieht nun ca so aus:
Delphi-Quellcode:
ich sehe nicht das was falsch sein könnte oder?
unit pbIRCChatBox;
interface uses Windows, Messages, SysUtils, Classes, Controls, StdCtrls, ComCtrls; type TpbIRCChatBox = class(TRichEdit) private FWndProc: TWndMethod; procedure nWndProc(var Msg: TMessage); protected procedure CreateWnd; override; end; procedure Register; implementation procedure TpbIRCChatBox.nWndProc(var Msg: TMessage); begin FWndProc(Msg); HideCaret(Handle); end; procedure TpbIRCChatBox.CreateWnd; begin inherited CreateWnd; FWndProc := WindowProc; WindowProc := nWndProc; end; procedure Register; begin RegisterComponents('pb', [TpbIRCChatBox]); end; end. |
Re: Element '' hat kein übergeordnetes Fenster
du musst im destroy das ganze auch wieder zurück setzen
|
Re: Element '' hat kein übergeordnetes Fenster
Verstehe ich nicht, wird durch "FWndProc(Msg);" nicht das gleiche getan als wenn ich es zurücksetze?
Btw, ich habe es nun so:
Delphi-Quellcode:
trotzdem gleicher fehler.
destructor TpbIRCChatBox.Destroy;
begin WindowProc := FWndProc; inherited; end; |
Re: Element '' hat kein übergeordnetes Fenster
hast du dir nach dem Fehler mal den CallStack anzeigen lassen um zu sehen durch welche procedure/function das ganze ausgelöst wird?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:52 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 by Thomas Breitkreuz