![]() |
Bei Properties Untermenüs erzeugen
Ich bin mir fast sicher, dass das Thema hier schon ma angesprochen wurde, aber anscheinend geb ich die falschen Suchwörter ein. Meine Komponente hat soviele Properties, dass das mittlerweile zu unübersichtlich wird. Deswegen würde ich diese gerne zusammenfassen und Untermenüs bilden, wie das zum Beispiel im Object Inspector bei Font der Fall ist...
Weiß nicht so recht, wie ich das bewerkstelligen soll bzw. nach welchem Begriff ich suchen soll, um das halt ma nachzulesen....:( Danke schonmal! Liebe Grüße, Laura |
Re: Bei Properties Untermenüs erzeugen
Der Thread war
![]() |
Re: Bei Properties Untermenüs erzeugen
Ok, also muss ich mir eine eigene Klasse erzeugen. Danke schonmal :). Aber wie schaffe ich das jetzt, dass das innerhalb des OI meiner Komponente angezeigt wird. Die haben ja momentan noch nich viel miteinander zu tun... Irgendwie stell ich mich doof an, ich weiß.... also ich hatte ja vorher meine Properties in meiner Komponenete, jetzt klaue ich mir die ganzen Properties samt Getter und Setter und packe die in meine neu erzeugte Klasse. Und nu :)?
|
Re: Bei Properties Untermenüs erzeugen
Deine "Unterklasse" muss von TPersistent abgeleitet sein und Assign überschreiben. In Deiner Komponente erzeugst Du nun eine Instanz dieser Klasse und fügst sie als Proptery hinzu. Das sollte im Wesentlichen alles sein, aber ich habe das auch noch nie gemacht und beziehe mich nur auf die Aussagen aus dem verlinkten Thread. Zur Not versuche ich das aber gerne mal heute Abend zu Hause selbst noch einmal.
|
Re: Bei Properties Untermenüs erzeugen
Hm, hab also den Code so übernommen und mal testweise drei "UnterEigenschaften" eingefügt:
Delphi-Quellcode:
TPhongProperties = class(TPersistent)
private /// vector which points towards the light source FPhongLightVectorX: Single; FPhongLightVectorY: Single; FPhongLightVectorZ: Single; FOnChange : TNotifyEvent; procedure SetLightVectorX(ALightVectorX: Single); procedure SetLightVectorY(ALightVectorY: Single); procedure SetLightVectorZ(ALightVectorZ: Single); function GetLightVectorX: Single; function GetLightVectorY: Single; function GetLightVectorZ: Single; protected procedure DoChange; virtual; public constructor Create; destructor Destroy; override; procedure Assign(Source : TPersistent); override; property OnChange : TNotifyEvent read FOnChange write FOnChange; published /// x-coordinate of vector which points towards the light source property PhongLightVectorX: Single read GetLightVectorX write SetLightVectorX; /// y-coordinate of vector which points towards the light source property PhongLightVectorY: Single read GetLightVectorY write SetLightVectorY; /// z-coordinate of vector which points towards the light source property PhongLightVectorZ: Single read GetLightVectorZ write SetLightVectorZ; end;
Delphi-Quellcode:
Dann halt in meiner Komponenete ein Property eingefügt:
constructor TPhongProperties.Create;
begin FPhongLightVectorX := 0; FPhongLightVectorY := 0; FPhongLightVectorZ := 0; end; destructor TPhongProperties.Destroy; begin inherited Destroy; end; procedure TPhongProperties.Assign(Source : TPersistent); begin If Source is TPhongProperties then begin FPhongLightVectorX := TPhongProperties(Source).FPhongLightVectorX; FPhongLightVectorY := TPhongProperties(Source).FPhongLightVectorY; FPhongLightVectorZ := TPhongProperties(Source).FPhongLightVectorZ; end else inherited Assign(Source); end; procedure TPhongProperties.DoChange; begin If Assigned(FOnChange) then FOnChange(Self); end;
Delphi-Quellcode:
Im ObjectInsepector wird jetzt dann zwar PhongShading als Eigenschaft angezeigt, dahinter steht dann TPhongProperties, da ist auch ein Plus zum Aufklappen allerdings passiert dann nix. Ist leer... Was hab ich noch übersehen :gruebel:?
property PhongShading: TPhongProperties read FPhongShading write FPhongShading;
|
Re: Bei Properties Untermenüs erzeugen
Kann ich leider nichts zu sagen, da bisher wie erwähnt noch nie gemacht :(
|
Re: Bei Properties Untermenüs erzeugen
Ok, dann trotzdem schonmal danke... vielleicht schaut ja sonst noch wer mal hier rein oder ich komm noch selbst auf die Lösung... wer weiß ;)
|
Re: Bei Properties Untermenüs erzeugen
Ähm ja. Doof. Peinlich. Und typisch ich :). Ein
Delphi-Quellcode:
wäre durchaus hilfreich. Du hast es ja noch gesagt DeddyH mit Instanz erzeugen... Sorry :). Prima, ich nähere mich meinem Ziel. Wenn mir jetzt noch jemand erklärt was ich mit dem OnChange-Event meiner Unterklasse anfange, ist mein Tag gerettet :).
FPhongShading := TPhongProperties.Create;
|
Re: Bei Properties Untermenüs erzeugen
Wirf doch mal einen Blick in die Sourcen, wie die VCL das macht ;)
|
Re: Bei Properties Untermenüs erzeugen
Ja, ich hab auch mal wieder einfach so drauf los gefragt, manchmal hilft auch erst denken :).Juhu. Wunderbar, klappt alles, es aktualisiert sich alles, alles toll :party: . Dankeschööön nochmal.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:08 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