![]() |
Zitat:
|
So ich habe das ganze jetzt noch um ein Label erweitert:
Code:
Die Caption ist explizit gesetzt als CAPTION und steht so auch im OI. Der Haken an der Sache ist aber, daß das Label zwar offensichtlich existiert, aber nirgends in Erscheinung tritt. Das hängt irgendwo im Nirwana. Wieso das ?
type
TRealEdit = class(TEdit) private fAlignment:TAlignment; fOnlyReals:boolean; fLabel:TLabel; procedure SetAlignment(Value:TAlignment); procedure SetOnlyReals(Value:boolean); protected procedure SetLabel(Value:TLabel); procedure CreateParams(var Params:TCreateParams); override; procedure KeyPress(var Key:Char); override; public constructor Create(AOwner: TComponent); override; destructor destroy; override; published property Alignment: TAlignment read fAlignment write SetAlignment; property OnlyReals: Boolean read fOnlyReals write SetOnlyReals; property RealLabel: TLabel read fLabel write SetLabel; end; implementation procedure TRealEdit.SetLabel (Value : TLabel); begin fLabel := value; flabel.SetSubComponent(true); end; constructor TRealEdit.Create(AOwner: TComponent); begin inherited; FAlignment := taRightJustify; OnlyReals := true; FLabel := TLabel.Create(AOwner); FLabel.Caption := 'CAPTION'; end; destructor TRealEdit.Destroy; begin FLabel.Destroy; inherited; end; |
Zitat:
|
Vielleich überzeugt das hier doch einige Ungläubige, :shock: die nicht sehen, wie wichtig das Thema ist. Das Label kriegt man auch so hin : man leitet statt von TEdit von TLabeledEdit ab. In die USES Liste muß dann noch "ExtCtrls" rein. Mir selber nutzt das aber nichts, da das ganze letzenendes mit einem TDBedit funktionieren muß und ein TDBLabeledEdit gibts nicht.
![]() @Motzi: Hast Du das getestet ? Bei mir steht alles, was mit Parent zu tun hat auf true. |
Zitat:
Füg einfach diese Zeile in deinem constructor dazu:
Delphi-Quellcode:
FLabel := AOwner;
|
Flabel ist doch vom Typ TLabel und Aowner ist TComponent. Wie soll das gehen ? Das meint auch der Compiler. Mittlerweile vermute ich aber auch, daß das an so was liegt. Irgendwie muß ich ja das Label an das Edit dranhängen.
|
Zitat:
Muss natürlich so lauten:
Delphi-Quellcode:
FLabel.Parent := AOwner;
|
soweit war ich auch schon. Dann kommt aber:
inkompatiple Typen : TWinControl und TComponent Das einzige was geht ist :
Code:
So wars ja vorher auch schon. Das Label bleibt verschwunden.
FLabel := TLabel.Create(AOwner);
P.S.: Ich habe mal das TLabeledEdit mit dem hier verglichen, dabei fiel mir auf, daß das im OI fast gleich aussieht. Bei dem Standard-Editlabel steht in der Zeile Editlabel als Wert LabeledEdit1.Sublabel, bei "meinem" steht nichts. |
Zitat:
Am besten wäre es die SetParent-Methode des Edits zu überschreiben um damit auf ein setzen des Parents des Edits reagieren zu können und den Parent des Labels entsprechend zu korrigieren. Ich weiß allerdings nicht, ob die SetParent-Methode als private oder protected deklariert ist und virtual bzw dynamic oder eben static ist... Überschreiben ginge nur wenn sie im protected-Teil und als virtual oder dynamic deklariert ist... Eine andere Möglichkeit (über schön oder unschön lasst sich hier streiten) wäre ein eigenes property Parent einzuführen, womit das original Property Parent verdeckt wird. In diesem Fall hat man dann seine eigenen Get/Set-Methoden über die man Zugriffe steuern kann und kann aber intern über inherited auch auf das Original-Property Parent zurückgreifen... |
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
also ein SetParent scheint es nicht zu geben. Ich habe aber jetzt das Label "gefunden". :mrgreen: Das hängt oben links in der Ecke. Bei Object-Treeview war noch ein <component [1]> drin. Klickt man das an, dann sieht man was. Nee, das wird zu kompliziert zu erklären, ich hänge den Bildschirm hier dran. Will ich das Label da wegziehen, kommt ein Fehler, den hänge ich auch noch dran, vielleicht weiß jemand was damit anzufangen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:44 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 by Thomas Breitkreuz