![]() |
Property mit mehreren Eigenschaften gleichzeit??
Hi!
Ich möchte für meine Komponente eine Property erstellen, die es erlaubt mehrere Eigentschaften gleichzeitig zu haben (anzusehen an der TToolbar Komponente, die Property EdgeBorders kann ebLeft, ebTop, ebBottom, ebRight annehmen). Hat jemand nen Plan wie man das machen kann? mfg phluphie :hi: |
Re: Property mit mehreren Eigenschaften gleichzeit??
Moin Phlux,
dazu muss die Eigenschaft nur vom Typ set of TWasAuchImmer sein. z.B.
Delphi-Quellcode:
Jetzt hat die Eigenschaft Seite im OI die Auswahl Oben, Unten, Links und Rechts mit der jeweiligen Einstellung true/false.
type
TSeite = (Oben,Unten,Links,Rechts); TSeiten = set of TSeite; //... private FSeite : TSeiten; published // EDIT: public zu published korrigiert. Soll ja im OI erscheinen. property Seite : TSeiten read FSeite write FSeite; //... |
Re: Property mit mehreren Eigenschaften gleichzeit??
Moin Christian,
Zitat:
|
Re: Property mit mehreren Eigenschaften gleichzeit??
Sollte ne Combobox werden... Wenn ich mich nicht irre, dann ist das "+" nur vor Unterobjekten zu finden... in deinem Beispiel eben ein Objekt der Klasse TFont.
Gruß Wormid |
Re: Property mit mehreren Eigenschaften gleichzeit??
Moin Daniel,
weder wie ViewStyle noch wie Font ;-) Sollte es sein, wie bei ViewStyle, müsste man als Typ TSeite nehmen. Dann liesse sich eine auswählen. Wenn es so aussehen soll, wie bei TFont, müsste der Typ der Eigenschaft selber wieder ein Objekt mit Eigenschaften sein. Bespiel (Fortführung von oben)
Delphi-Quellcode:
Jetzt würde im OI eine Eigenschaft
type
TMyObject = class(TObject) private FiHeight : integer; FColor : TColor; published property Height : integer read FiHeight write FiHeight; property Color : TColor read FColor write FColor; end; // Objekt von oben private FMyObject : TMyObject; published property MyObject : TMyObject read FMyObject write FMyObject; end;
Code:
enthalten sein.
+ MyObject
Height Color (mit ComboBox) |
Re: Property mit mehreren Eigenschaften gleichzeit??
Zitat:
|
Re: Property mit mehreren Eigenschaften gleichzeit??
Zitat:
Delphi-Quellcode:
Hier würde eine Property "Position" im OI erscheinen, mit einer simplen Combobox. Und bei so was:
type
TLabelPosition = (lpFree, lpAbove, lpBelow, lpLeft, lpRight); ... TRealLabel = class(TCustomLabel) ... published property Position: TLabelPosition read FPosition write SetPosition; end;
Delphi-Quellcode:
wäre eine neue property namens RealLabel vorhanden mit einem +, ganz einfach weil es sich nicht um einen einfachen Typ handelt, sondern um ein Objekt, das von einem abgeleitet wird, das selber eigene properties hat. Tja, das wars schon. Man vergleiche mal TColor und TFont. Vielleicht ist das auch einfacher. TColor hat kein + weil :
TLabeledRealEdit = class(TEdit)
... published property RealLabel: TLabel read FLabel; end;
Delphi-Quellcode:
Das ist also ein Aufzählungstyp. TFont hat auch eine Eigenschaft TColor, aber zusätzlich noch die Schriftart, die Größe usw. deshalb dort ein +. Und genau deshalb ist bei der Property Color von TFont kein + mehr.
type
PColor = ^TColor; TColor = -$7FFFFFFF-1..$7FFFFFFF; const clScrollBar = TColor(COLOR_SCROLLBAR or $80000000); clBackground = TColor(COLOR_BACKGROUND or $80000000); |
Re: Property mit mehreren Eigenschaften gleichzeit??
Der Unterschied zwischen einem Set und einem Enumerations-Typ ist einfach der, dass der Set mehrere Elemente des Enumerations-Typs gleichzeitig enthalten kann.
Delphi-Quellcode:
Und aus diesen Sets kann man dann auch ganz einfach wieder Elemente rausnehmen oder dazugeben:
type
TSeite = (Oben, Unten, Links, Rechts); TSeiten = set of TSeite; var aSeite: TSeite; aSeiten: TSeiten; aSeite := Oben; aSeiten := [Oben, Unten, Rechts];
Delphi-Quellcode:
Die andere Möglichkeit "Untereigenschaften" zu erstellen ist mit einem Nachfahren von TPersistent, aber das hab ich in diesem Thread schon mal genauer erklärt:
var
aSeiten: TSeiten; aSeiten := [Oben, Unten, Rechts]; aSeiten := aSeiten + [Links]; aSeiten := aSeiten - [Oben, Unten]; ![]() |
Re: Property mit mehreren Eigenschaften gleichzeit??
:hi:
Merci, hat funktioniert :jump: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:56 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