![]() |
TImage/TRichEdit erstellen - was heisst Owner und Parent?
Hallo,
zum Ausdrucken von Bitmaps verwende ich ein TImage, das ich "from the scratch" neu erzeuge, weil es anderweitig ja nicht benötigt wird:
Delphi-Quellcode:
Self ist das Hauptformular, und das Ganze funktioniert auch wie man es nach der Hilfe erwarten würde. Versuche ich jedoch das gleiche mit einem RicheEdit-Control, erhalte ich verschiedene Exceptions beim Zugriff auf das Control. Nach Suchen in Delphiforen und Google habe ich ergänzt:
TBPMLogo = class (TObject)
DummyImage : TImage; {...} procedure TBPMLogo.Assign (PFName : ShortString; IOwner : TComponent); begin if not Assigned (DummyImage) then DummyImage := TImage.Create (IOwner); {...} procedure TBPMLogo.Done; begin if Assigned (DummyImage) then FreeAndNil (DummyImage); {...} PrinterLogo.Assign (ExtFile,self);
Delphi-Quellcode:
So weit so gut, aber mir fehlt die Erklärung dazu: wann wird Owner gebraucht, wann Parent, oder sollte man immer beides setzen und es ist reiner Zufall, dass TImage auch ohne Parent funktioniert? Wer weiss was genaues?
procedure TBPMPaper.Assign (PFName : ShortString; ROwner : TForm);
begin if not Assigned (DummyRE) then DummyRE := TRichEdit.Create (nil); DummyRE.Parent := ROwner; {...} Danke, Reinhard |
Re: TImage/TRichEdit erstellen - was heisst Owner und Parent
Zitat:
|
Re: TImage/TRichEdit erstellen - was heisst Owner und Parent
Du brauchst prinzipiell beides nicht.
Ein Owner kümmert sich darum, dass die Komponente freigegeben wird, ein Parent dient als Container für eine Komponente. Die meisten Controls funktionieren nur mit einem Parent, einen Owner braucht keine. |
Re: TImage/TRichEdit erstellen - was heisst Owner und Parent
Zitat:
ich möchte hier nur das wort automatisch ergänzen. Wird eine Komponente A freigegeben, so werden vorher alle Komponenten deren Owner A ist frei gegeben. Du brauchst in dem Fall kein Free aufzurufen. |
Re: TImage/TRichEdit erstellen - was heisst Owner und Parent
Moin Manuel,
Zitat:
Alle Positionsangaben verstehen sich relativ zum Parent. |
Re: TImage/TRichEdit erstellen - was heisst Owner und Parent
Hallo,
Danke an alle, ist jetzt schon viel klarer, z.B. warum Owner = nil einwandfrei funktioniert: ich verwalte ja alles selbst. Als überzeugter Anhänger defensiven Programmierens werde ich wohl in Zukunft jedem neugeborenen Control Owner UND Parent spendieren, damit bin ich mit dem Verhalten des Controls auf der sicheren Seite, und Schaden kann man wohl nicht damit anrichten. Dass Parent (manchmal) gebraucht wird, ist eine wichtige Information, die die Online-Hilfe irgendwo in der Gegend um TControl.Create liefern sollte - um es vorsichtig zu formulieren, die Borland-Hilfe lässt schon noch einigen Spielraum für Verbesserungen. Ich persönlich hätte das Setzen von Parent mit ins Create aufgenommen. Gruss Reinhard |
Re: TImage/TRichEdit erstellen - was heisst Owner und Parent
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:41 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