Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Property mit Unterkategorien (https://www.delphipraxis.net/97135-property-mit-unterkategorien.html)

Zead 5. Aug 2007 18:17


Property mit Unterkategorien
 
Hallo

Ich bin dabei eine Klasse zu erstellen die das property items enthalten soll.
Items soll ein record mit verschiedenen Untereigenschaften sein.
Man soll also kurz gesagt Items aus folgende Weise ändern können.

'Instanz der Klasse'.Items.Name := ...
'Instanz der Klasse'.Items.texture := ...

Das Problem das ich dabei habe ist, dass ich zwar auf Items zugreifen kann, jedoch keine weiteren Unterverzweigungen anwählen kann.

Das Ganze soll ca. so funktionieren wie die Tlistbox.items

Jemand ne Idee?

jfheins 5. Aug 2007 18:40

Re: Property mit Unterkategorien
 
Der Typ der Eigenschaft muss ein Record- oder Klassentyp sein ;)

Einfache Lösung wäre ein record, also sowas:
Delphi-Quellcode:
TMyRec = record
Name, Textur: String;
end;

TKlasse = class
property Items : TMyRec;
end;
(in der Art, hab schon länger nicht mehr programmiert ...)

Muetze1 5. Aug 2007 18:54

Re: Property mit Unterkategorien
 
Zitat:

Zitat von jfheins
Der Typ der Eigenschaft muss ein Record- oder Klassentyp sein ;)

Dann ist davon aber nichts im Objektinspektor zu sehen. Wenn das der Fall sein sollte, dann muss eine Klasse angelegt werden, welche von TPersistent abgeleitet ist.

Zead 5. Aug 2007 19:09

Re: Property mit Unterkategorien
 
Aha...und wie soll das z.B. aussehen?

cruiser 5. Aug 2007 20:16

Re: Property mit Unterkategorien
 
So zum Beispiel:

Delphi-Quellcode:
TMyItem = class(TPersistent)
private
  fName, fText: string;
published
  property Name: string read fName write fName;
  property Texture: string read fText write fText;
end;
brauchst du aber, was ich glaube, mehrere dieser Items solltest du von

TCollection und TCollectionItem ableiten

Zead 5. Aug 2007 20:24

Re: Property mit Unterkategorien
 
Hm ich habs nun geschaft via einer neuen Klasse, die alle Eigenschaften meinen Records aufweist.
Mein Problem ist nun dies:

"Instanz der Klasse".Items[i].name := ....
...

die Daten, die ich eintrage, sollen in ein array vom typ meines Record gespeichert werden.

indem man .items[i]. angibt soll man eine Eigenschaft an der i Position des array ändern können.
Ich weis aber keine Möglichkeit auf die idexvariable i zuzugreifen, da die sich die Eigenschaft auf die ich zugreifen will ja in einer anderen Klasse befindet.

Gibs da ne Lösung?

Jelly 5. Aug 2007 20:34

Re: Property mit Unterkategorien
 
Wie Ronny schon schrieb, ist TCollection in Verbindung mit TCollectionItem dein Freund. Oder, wenns einfacher gehen soll, nur nicht ganz so flexibel, TObjectList.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:30 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz