![]() |
eine "class" verändern, Name beibehalten
Hallo Community,
Ich möchte gern die "class" TTreeNode um einen Word-Wert erweitern, dabei aber den Klassen-Namen beibehalten. So, wie es im unten stehenden Code geschrieben steht, funktioniert es aber leider nicht.
Delphi-Quellcode:
Ich habe es zuerst mit dem Namen TTreeNodeEx versucht, allerdings nimmt dann ein TreeView dieses Item nicht mehr an. Ich möchte nun nicht noch die TreeView-Klasse umschreiben, weil es einfacher ist, mit einer VCL-Treeview zu arbeiten. Außerdem gefällt mir die Data-Variante auch nicht so sehr => ein wenig umständlich und weniger übersichtlich.
type
TTreeNode{Ex} = class(TTreeNode) private { Private declarations } GroupID: Word; end; Weiß da jemand eine Lösung? |
Re: eine "class" verändern, Name beibehalten
Ob es eine elegantere Lösung gibt weiß ich nicht, aber wir (Firma) haben letztens noch den kompletten Tree aus der VCL Kopiert und die Anpassungen daran gemacht.
Wir haben jedenfalls keine andere Möglichkeit gefunden die TreeNodes um Eigenschaften zu erweitern. Bis neulich ... |
Re: eine "class" verändern, Name beibehalten
Wenn du eine Pro/Ent/Arc-Version benutzt, kannst du ja prinzipiell direkt im Source die entsprechende Stelle bearbeiten. Dann die Unit kopieren und in den Lib-Ordner einfügen. Im Libordner musst du dann nur noch die .dcu-Datei entfernen ;)
Sollte jedenfalls so funktionieren ;) |
Re: eine "class" verändern, Name beibehalten
1000. Beitrag .... :
Schau dir doch mal ![]() :wink: Und jetzt: :party: :dancer: :dancer2: :witch: :bounce1: :firejump: :bounce2: :bouncing4: :cheers: :mrgreen: |
Re: eine "class" verändern, Name beibehalten
Das mit der Klasse "TTreeNodeEx" war schon ganz richtig.
Jetzt musst Du lediglich noch in dem Ereignis "OnCreateNodeClass" des Treeviews diese Klasse zurückliefern:
Delphi-Quellcode:
Wann immer Du jetzt einen Node anspricht einfach per "Typecast" ansprechen:
procedure TForm1.TreeView1CreateNodeClass(Sender: TCustomTreeView;
var NodeClass: TTreeNodeClass); begin NodeClass := TTreeNodeEx; end;
Delphi-Quellcode:
...
(Node as TTreeNodeEx).GroupID := ...; ... |
Re: eine "class" verändern, Name beibehalten
Hi.
TTreeNode hat eine Property "Data" (ein Pointer). Lass ihn einfach auf die GroupID zeigen... ;-) |
Re: eine "class" verändern, Name beibehalten
Zitat:
Unser KrasserChecker hat hier schon recht. ;) @Grendel Krass :shock: *kopf schüttel* Vor allem wenn man bedenkt, dass man sich schon durchlesen sollte was man da ändert. ;) Zitat:
|
Re: eine "class" verändern, Name beibehalten
Hi.
Zitat:
Lieber Data zu ^Word casten als den Knoten nach TTreeNodeEx... ;-) |
Re: eine "class" verändern, Name beibehalten
Zitat:
|
Re: eine "class" verändern, Name beibehalten
Moin allerseits,
wenn ich mich nicht irre, dann könnte man ab D2005 auch class helpers dafür verwenden. Obwohl diese laut Borland nur für Delphi .NET funktionieren, laufen sie auch unter Win32. Evtl. könntest du damit was erreichen ;) Greetz alcaeus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:10 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