Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi eine "class" verändern, Name beibehalten (https://www.delphipraxis.net/46341-eine-class-veraendern-name-beibehalten.html)

Nogge 23. Mai 2005 10:12


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:
type
  TTreeNode{Ex} = class(TTreeNode)
    private
      { Private declarations }
      GroupID: Word;
    end;
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.
Weiß da jemand eine Lösung?

Grendel 23. Mai 2005 11:16

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 ...

malo 23. Mai 2005 11:20

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 ;)

jfheins 24. Mai 2005 17:03

Re: eine "class" verändern, Name beibehalten
 
1000. Beitrag .... :

Schau dir doch mal das hier an, da wurde soetwas gemacht ...

:wink:

Und jetzt: :party: :dancer: :dancer2: :witch: :bounce1: :firejump: :bounce2: :bouncing4: :cheers: :mrgreen:

KrasserChecker 24. Mai 2005 17:16

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:
procedure TForm1.TreeView1CreateNodeClass(Sender: TCustomTreeView;
  var NodeClass: TTreeNodeClass);
begin
  NodeClass := TTreeNodeEx;
end;
Wann immer Du jetzt einen Node anspricht einfach per "Typecast" ansprechen:
Delphi-Quellcode:
...
(Node as TTreeNodeEx).GroupID := ...;
...

Waldteufel 24. Mai 2005 17:20

Re: eine "class" verändern, Name beibehalten
 
Hi.

TTreeNode hat eine Property "Data" (ein Pointer). Lass ihn einfach auf die GroupID zeigen... ;-)

Robert_G 24. Mai 2005 17:31

Re: eine "class" verändern, Name beibehalten
 
Zitat:

Zitat von Waldteufel
Hi.

TTreeNode hat eine Property "Data" (ein Pointer). Lass ihn einfach auf die GroupID zeigen... ;-)

Pfui deivel... ;)

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:

Wir haben jedenfalls keine andere Möglichkeit gefunden
:gruebel:

Waldteufel 24. Mai 2005 17:36

Re: eine "class" verändern, Name beibehalten
 
Hi.

Zitat:

Zitat von Robert_G
Zitat:

Zitat von Waldteufel
Hi.

TTreeNode hat eine Property "Data" (ein Pointer). Lass ihn einfach auf die GroupID zeigen... ;-)

Pfui deivel... ;)

Unser KrasserChecker hat hier schon recht. ;)

Wieso ist das "pfui deivel"?
Lieber Data zu ^Word casten als den Knoten nach TTreeNodeEx... ;-)

phXql 24. Mai 2005 17:39

Re: eine "class" verändern, Name beibehalten
 
Zitat:

Zitat von Waldteufel
Hi.

Zitat:

Zitat von Robert_G
Zitat:

Zitat von Waldteufel
Hi.

TTreeNode hat eine Property "Data" (ein Pointer). Lass ihn einfach auf die GroupID zeigen... ;-)

Pfui deivel... ;)

Unser KrasserChecker hat hier schon recht. ;)

Wieso ist das "pfui deivel"?
Lieber Data zu ^Word casten als den Knoten nach TTreeNodeEx... ;-)

das mit der klasse is aber mehr im sinne von OOP. Ich würds allerdings auch mit nem Pointer auf die GroupID machen ;)

alcaeus 24. Mai 2005 18:14

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 04:31 Uhr.
Seite 1 von 2  1 2      

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