Init beim RichEdit
-
Hi Leute
ich kann leider mein RichEdit nicht richtig Initialisieren und ich hoffe hier kann mir geholfen werden.
TPrintSteuerung::TPrintSteuerung(TComponent* Owner) { PrintDialog1=new TPrintDialog(Owner); Text1=new TRichEdit(Owner); BitFeld=new GBits(); Liste=new TStringList(); Liste2=new TStringList(); parent=new TWinControl(Owner); const_laenge=19; Lklammer_ohne=" [ ] "; this->Text1->Parent=parent; this->Text1->Paragraph->TabCount=2; <- hier crasht es!!! this->Text1->Paragraph->Tab[0]=220; this->Text1->Font->Name="Times New Roman"; }Fehlermeldung: kein übergeordnetes Fenster
aufgerufen wird mit : test=new TPrintSteuerung(Form1);
mfg
Gast1807
-
Hallo,
mir ist das immer dann passiert, wenn das Richedit noch keinen Parent(vielleicht auch Owner) hatte.
Du gibts zwar einen Parent (bzw Owner) an, aber sind die auch ungleich 0?Vielleicht ist es das ja.
Ciao,
jenz
-
ja, die mit new erstellten Objekte sind alle richtig initialisiert.

-
Hallo
was erhoffst du dir davon?
parent=new TWinControl(Owner); this->Text1->Parent=parent;WinControl ist doch eine Basisklasse ohne Funktion.
Das Problem ist einfach, das du eine echte Instanz von WinControl brauchst.
Du kannst es so machen, was meistens funktionieren sollteText1->Parent=dynamic_cast<TWinControl *> (Owner);Und/Oder du gibst deiner Klasse TPrinterSteuerung moch eine Eigenschaft, wo du ein WinControl zuweisen kannst, das du dann über den Setter an die untergeordneten Controls weitergibst.
bis bald
akari
-
Danke, deins läuft

aber in mein parent müßten doch auch die gleich infos drin stehen, wie die dich ich jetzt mit "dynamic_cast<TWinControl *> (Owner);" hole oder?
-
Hallo
weis jetzt nicht genau, was du wissen willst. Schau dir in der Hilfe mal die Klassenhierarchie von TForm an. Das ist nämlich u.a. abgeleitet von TWinControl, was wiederrum von u.a. TComponent abgeleitet ist. Deshalb kannst du meistens diesen cast machen.
bis bald
akari