Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Element '' hat kein übergeordnetes Fenster (https://www.delphipraxis.net/43397-element-hat-kein-uebergeordnetes-fenster.html)

Pseudemys Nelsoni 3. Apr 2005 13:18


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:
constructor TpbIRCChatBox.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  OldWndProc := WindowProc;
  WindowProc := NewWndProc;
end;
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?

Christian Seehase 3. Apr 2005 13:23

Re: Element '' hat kein übergeordnetes Fenster
 
Moin Mario,

such' dazu mal nach Hier im Forum suchenCreateWnd

In der Prozedur sollten solche Zuweisungen funktionieren.

SirThornberry 3. Apr 2005 13:26

Re: Element '' hat kein übergeordnetes Fenster
 
im Create der Componente ist kein parent angegeben, und somit existiert auch noch keine WindowProc dafür.

Pseudemys Nelsoni 3. Apr 2005 13:36

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?

Dani 3. Apr 2005 14:14

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;

SirThornberry 3. Apr 2005 14:31

Re: Element '' hat kein übergeordnetes Fenster
 
alternativ kannst du auch CreateParams überschreiben wobei das aufs gleiche hinaus läuft.

Pseudemys Nelsoni 3. Apr 2005 17:32

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:
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.
ich sehe nicht das was falsch sein könnte oder?

SirThornberry 3. Apr 2005 17:33

Re: Element '' hat kein übergeordnetes Fenster
 
du musst im destroy das ganze auch wieder zurück setzen

Pseudemys Nelsoni 3. Apr 2005 17:49

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:
destructor TpbIRCChatBox.Destroy;
begin
  WindowProc := FWndProc;
  inherited;
end;
trotzdem gleicher fehler.

SirThornberry 3. Apr 2005 17:59

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.
Seite 1 von 2  1 2      

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