AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TRichEdit in neuer Komponenten -> Fehler

Ein Thema von Nalincah · begonnen am 6. Nov 2003 · letzter Beitrag vom 6. Nov 2003
Antwort Antwort
Benutzerbild von Nalincah
Nalincah

Registriert seit: 18. Jul 2003
898 Beiträge
 
Delphi 6 Professional
 
#1

TRichEdit in neuer Komponenten -> Fehler

  Alt 6. Nov 2003, 11:19
Ich hab folgendes vor:

Hab ne neue Komponente erstellt:

Delphi-Quellcode:
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;
Die Var "fRich : TRichEdit" unter private benutze ich um im constructor ein Objekt vom Typ TRichEdit zu erzeugen:

Delphi-Quellcode:
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;
Solange ich die "Problematische Zeile" auskommentiere, kann ich mein Projekt öffnen und bearbeiten
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???
Miniaturansicht angehängter Grafiken
fehler_209.jpg  
Sebastian
Ehemals bekannt als General2004
  Mit Zitat antworten Zitat
scp

Registriert seit: 31. Okt 2003
1.120 Beiträge
 
Delphi 7 Personal
 
#2

Re: TRichEdit in neuer Komponenten -> Fehler

  Alt 6. Nov 2003, 15:26
Probiers mal mit:

fRich := TRichEdit.Create(AOwner); oder

fRich := TRichEdit.Create(nil);
Weil du mit

fRich := TRichEdit.Create(Self); quasi eine Endlos-Schleife erzeugst, da du erst dem fRich die Kompo als Parent gibst und dann deiner Kompo den fRich als Parent.

Ausserdem solltest du noch self.ParentRichEdit unter inherited create(AOwner) setzen;
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: TRichEdit in neuer Komponenten -> Fehler

  Alt 6. Nov 2003, 19:52
Moin scp,

mit

fRich := TRichEdit.Create(Self); Wird die Kompo nicht zum Parent, sondern zum Owner.
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 Hier im Forum suchenCreateWnd
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.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
scp

Registriert seit: 31. Okt 2003
1.120 Beiträge
 
Delphi 7 Personal
 
#4

Re: TRichEdit in neuer Komponenten -> Fehler

  Alt 6. Nov 2003, 22:59
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.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: TRichEdit in neuer Komponenten -> Fehler

  Alt 6. Nov 2003, 23:11
Moin scp,

Zitat von scp:
Bei den meisten Kompos, die von TWinControl abstammen, ist meines wissens der Owner solange gleichbedeutend mit dem Parent, bis man dies selbst manuell ändert.
Das gilt aber nicht für dynamisch erzeugte Controls.
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.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz