Autor Beitrag
apnm
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Mi 30.10.02 20:13 
Hallo

Ich habe folgendes Prob:

Die Klasse TTreeView hat ja als UnterKlasse Die lasse TTreeNode, die Items heißt.

Also TreeView1.Items
Nun will ich aber, dass die Klasse TTreeNode eine extra Variable bekommt, zB ein Var.. vom Typ String (sInfo).

Damit es so aussieht

TreeView1.Items.Info

Wie mache ich das, damit ich eine solche Klasse bekomm

Danke im Voraus

_________________
-=] @pNm [=-
Horst
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 120



BeitragVerfasst: Mi 30.10.02 20:20 
dass kommt auf den Klassendesign an. Am besten legst du eine neue Klasse an die du vom Treeview ableitest und dann fügst du halt
noch eine Variable info dazu. Habe für diesen Fall zwar noch nicht ausprobiert, muss aber gehen. Am besten experimentierst du einfach mal. Das sähe dann z.B. so aus: :D
TTreeViewNeu = class(TTreeView)
private
{ Private-Deklarationen }
info : string;
protected
{ Protected-Deklarationen }
public
{ Public-Deklarationen }
published
{ Published-Deklarationen }
end;
:shock:

Gruß

Horst
apnm Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Mi 30.10.02 20:28 
Titel: .
OK

Das ist klar, nun wäre die VAriable Info aber direkt unter TreeViewNeu
Sie soll aber unter TreeViewNeu.Items.Info stehen

Das kann ich nicht umsetzten

Wie macht man sowas?

_________________
-=] @pNm [=-
aogwaba
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 109



BeitragVerfasst: Mi 30.10.02 21:13 
Hi!
deklariere eine neue Klasse, abgeleitet von TTreenode:

TTreenodeNeu = class(TTreenode)
public
info : string;
end;

var myTreenodeNeu:TTreeNodeNeu;
zum createn dann:

mytreenodeneu:=ttreenodeneu.create(TreeView1.items);
mytreenodeneu.info:='info';

Du könntest aber auch das DATA-Property der Node benutzen.

cu
waba
apnm Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Mi 30.10.02 21:25 
Titel: .
ne, das verstehe ich net so ganz, ich habe es mir so gedacht:

type
TItemsFiles = class(TTreeNode)
private
public
Info : String;
end;

type
TTreeViewFiles = class(TTreeView)
private
public
property Items ???????: TItemsFiles; override;
end;



So stell ich mir das vor

_________________
-=] @pNm [=-
aogwaba
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 109



BeitragVerfasst: Mi 30.10.02 21:51 
Hi!
Wenn du deine TTreenodeneu von TTreenode ableitest, werden alle Vorgängermethoden/Eigenschaften mitvererbt. Sämtliche Functionen, welche eine TTreeview-Instanz erwarten und eine TTreeViewNeu-Instanz serviert bekommen, funktionieren.

Den TTreeview.items, brauchst du deshalb nicht zu manipulieren.

Wenns nicht verständlich war bitte nachfragen!

cu
waba
apnm Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Mi 30.10.02 21:57 
Titel: .
Ne, nicht so wirklich, hast du mein beispiel weiter oben gesehene

Bei TTreeView wird Items als porperyt gesetzt ( genauen werte kenne ich leider net)

Da muss ich doch nun sagfen, dass TTreeViewNEU auch die eigenschaft bekommt

also property Items ???:TTreeNodeNeu
weil ich ja die neue klasse nehemn will, wo meine variable drinne ist.

Aber das alte Items soll ja ducrh das neue Items ersetzt werden, sonst habe ich ha unter TTreeViewNEU zweimal die eigenschaft Items: einmal mit TTreeNode und einmal mit TTreeNodeNeu, deswegen solltze man sie überschreiben

trotrzdem bleinbt doch alle wie gehabt, denn TTreeNodeNEu ist ja von TTreeNode

Oder? ;)

_________________
-=] @pNm [=-
aogwaba
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 109



BeitragVerfasst: Mi 30.10.02 22:29 
Hi!
Die Eigenschaft Items von TTreeview ist ein 'Container' für TTreenode- Objekte. Da dein TTreenodeNeu von TTreenode abgeleitet wird, ist es defacto ein TTreenode-Object, kann also statt dessen eingesetzt werden.

Zitat:

trotrzdem bleinbt doch alle wie gehabt, denn TTreeNodeNEu ist ja von TTreeNode

Genau,

cu
waba