![]() |
Wert direkt an Unterobjekt weiterreichen
Kann ich einen Wert direkt an ein Unterobjekt weiterreichen, statt jedemal ein Wrapperfunktion scheiben zu müssen ?
Also ich habe z.B.
Delphi-Quellcode:
Und möchte sowas machen:
TFMyClass = class(TCustomControl)
private MeineTolleCombobox: TComboBox;
Delphi-Quellcode:
Geht aber nicht (Undefinierter Bezeichner TMeineTolle...)
published
property Text: String read MeineTolleComboBox.Text write MeineTolleComboBox.Text; Muss ich für jede Property, die ich "weitergeben" möchte, eine Wrapperfunktion schreiben ? :shock: Oder geht das so, wie ich mir das gedacht habe ? |
Re: Wert direkt an Unterobjekt weiterreichen
Eventuell geht das über Interfaces und Method Resolution Clauses.. frag morgen nochmal, ich geh jetzt pennen.. :wink:
|
Re: Wert direkt an Unterobjekt weiterreichen
Zitat:
Die Idee von Dax wird nicht funktionieren, da die VCL keine Interface benützt. |
Re: Wert direkt an Unterobjekt weiterreichen
Zitat:
Das Problem ließe sich mit minimalem Code lösen... Wenn nicht fast sämtliche Properties in fast sämtlichen Controls bekloppte private Getter/Setter hätten. :roll: Mit protected Accessors wäre es nur das hier:
Delphi-Quellcode:
In deinem Falle ließe sich eine ComboBox(Du könntest TTextProperty durch TComboBox ersetzen ;) ) also von selbst dazu zu übereden ITextProperty für dich in deiner Klasse zu implementieren. Wenn die Property Text in TControl nicht so besch***en implementiert sein würde. :kotz:
type
ITextProperty = interface function getText(): TCaption; procedure setText(const Value: TCaption); property Text: TCaption read getText write setText; end; type TTextProperty = class private fText: TCaption; protected function getText(): TCaption; procedure setText(const Value: TCaption); published property Text: TCaption read getText write setText; end; type TSomeClass = class(TInterfacedObject, ITextProperty) private fTextProperty: TTextProperty; protected property TextProperty: TTextProperty read fTextProperty implements ITextProperty; public constructor Create(); virtual; destructor Destroy(); override; end; |
DP-Maintenance
Dieses Thema wurde von "sakura" von "VCL / WinForms / Controls" nach "Object-Pascal / Delphi-Language" verschoben.
|
Re: Wert direkt an Unterobjekt weiterreichen
Wenn ich das jetzt richtig verstanden hab' geht es also nicht, weil die alle private Getter und Setter haben ...
Dann muss ich halt für alles und jeden eine Wrapperfunktion schreiben ... Naja :? |
Re: Wert direkt an Unterobjekt weiterreichen
Aber: Wenn du ja eh Delphi Professional hast, hast du automatisch die Saucen der VCL. Wenn du dir die Mühe machen willst, kannst du ja die Getter/Setter der Properties, die du brauchst, nach protected schieben und Roberts Code nehmen ;)
|
Re: Wert direkt an Unterobjekt weiterreichen
Zitat:
Will er es wirklich ändern, sollte er das TListItem gleich mit ändern. Mit der Originalversion ist es schlichtweg unmöglich irgendwas sinnvolles mit TListView anzufangen. Dank private accessors bringt dir nämlich eine Ableitung von TListItem fast keinerlei Vorteil. :kotz: Und was bringt dir eine ListView-Ableitung ohne spezielle Items, die man an Objekte binden kann? :gruebel: Ob es in Delphi 2006 eine VCL geben wir, bei der es einem nicht den Magen verdreht? :gruebel: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:43 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