![]() |
TRichEdit in neuer Komponenten -> Fehler
Liste der Anhänge anzeigen (Anzahl: 1)
Ich hab folgendes vor:
Hab ne neue Komponente erstellt:
Delphi-Quellcode:
Die Var "fRich : TRichEdit" unter private benutze ich um im constructor ein Objekt vom Typ TRichEdit zu erzeugen:
type TCSTyp = (tAdresse, tRechnung, tLieferung);
TCSAdressLabel = class(TCSQRRichText) private FFelder:TStringList; FTyp: TCSTyp; FDataSet: TDataSet; FVergleichMit: TCSAdressLabel; FDruckeImmer:Boolean; FEndValue:String; fRich : TRichEdit; procedure MyOnPrint(sender: TObject; var Value: String); procedure SetFelder(const AStrings: TStringList); public constructor Create(AOwner:TComponent);override; destructor Destroy;override; published property Felder : TStringlist read FFelder write SetFelder; property Typ : TCSTyp read FTyp write FTyp; property DataSet : TDataSet read FDataSet write FDataSet; property VergleichMit : TCSAdressLabel read FVergleichMit write FVergleichMit; property DruckeImmer: Boolean read FDruckeImmer write FDruckeImmer; end;
Delphi-Quellcode:
Solange ich die "Problematische Zeile" auskommentiere, kann ich mein Projekt öffnen und bearbeiten
constructor TCSAdressLabel.Create(AOwner:TComponent);
begin fRich := TRichEdit.Create(Self); Self.ParentRichEdit := fRich; // <-- Problematische zeile inherited Create(aowner); ffelder := tstringlist.Create; Self.OnPrint := Self.MyOnPrint; end; Wenn ich sie jedoch wieder aktiviere krieg ich ne Fehlermeldung (Siehe Anhang) Warum kann ich in meiner Kompo die Eigenschaft "ParentRichEdit" nicht beim erstellen sofort das neu erstellte "fRich" zuweisen??? |
Re: TRichEdit in neuer Komponenten -> Fehler
Probiers mal mit:
Delphi-Quellcode:
oder
fRich := TRichEdit.Create(AOwner);
Delphi-Quellcode:
fRich := TRichEdit.Create(nil);
Weil du mit
Delphi-Quellcode:
quasi eine Endlos-Schleife erzeugst, da du erst dem fRich die Kompo als Parent gibst und dann deiner Kompo den fRich als Parent.
fRich := TRichEdit.Create(Self);
Ausserdem solltest du noch self.ParentRichEdit unter inherited create(AOwner) setzen; |
Re: TRichEdit in neuer Komponenten -> Fehler
Moin scp,
mit
Delphi-Quellcode:
Wird die Kompo nicht zum Parent, sondern zum Owner.
fRich := TRichEdit.Create(Self);
Der Owner ist nur für die Freigabe der Objekte zuständig, der Parent, sozusagen, für die Positionierung. Ein sichtbares Objekt wird immer relativ zum Parent ausgerichtet. Hätten diese beiden etwas miteinander zu tun, würde man sich also eine Endlosschleife einhandeln, müsste als Fehlermeldung auch ein "Stack Überlauf" erscheinen. @Sebastian: Such' hier mal nach ![]() Ich vermute mal, dass sich da die "Problematische Zeile" einbauen lassen müsste. Zu dem Zeitpunkt zu dem CreateWnd aufgerufen wird, existiert die Kompo schon, im Konstruktor noch nicht. |
Re: TRichEdit in neuer Komponenten -> Fehler
Bei den meisten Kompos, die von TWinControl abstammen, ist meines wissens der Owner solange gleichbedeutend mit dem Parent, bis man dies selbst manuell ändert.
Wenn ich auf einem Form oder einem Panel zum Beispiel einen Button erzeuge, dann landet der ja auch direkt da drauf und nicht irgendwo im leeren. |
Re: TRichEdit in neuer Komponenten -> Fehler
Moin scp,
Zitat:
Wird hier kein Parent gesetzt, sieht man das Control nicht, da Parent = 0. Es gibt also nichts relativ zu dem es angezeigt werden könnte. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:10 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