![]() |
Treeview-Ast absprechen
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo, DP,
ich bin ziemlich verzweifelt :-( , da ich mit dem sch... TreeView nicht weiterkomme. Ich möchteb dafür sorgen, dass automatisch bei einer onclick-Aktion auf ein Button ein Unterast an einer bestimmten Stelle angefügt wird; ferner soll dieser Stand auch noch bei Programmstart erhalten bleiben. Ich weiß desweiteren nicht, wie ich den Baum dazu bringe, auf den Klick eines ganz bestimmten Astes zu reagieren (. Anhang). :evil: INFO : Der Unterast soll als Kind eines bereits vorhandenen Kindes angefügt werden (Als Unterast von Aktive, bzw. inaktive Lizenzen). Bitte um dringende Hilfe !!! |
AW: Treeview-Ast absprechen
|
AW: Treeview-Ast absprechen
Das hilft mir kaum weiter; ich brauche Quellcodebeispiele, um das zu verstehen, oder eine andere Infomation, wie ich herausfinden kann, welcher Index des Baumes (Ast) geklickt wurde.
|
AW: Treeview-Ast absprechen
Zitat:
|
AW: Treeview-Ast absprechen
Falls du die Lizenzen meinst, dann ja
|
AW: Treeview-Ast absprechen
Insgesamt denke ich mir, du gehst die Sache von der falschen Seite an.
Denke nicht daran, wie du da etwas in einem TreeView bekommst, sondern überlege, wie die deine Datenstruktur als Baum-Struktur aufbaust. Die Anzeige im TreeView kommt erst danach. Nehmen wir uns mal folgende Klasse
Delphi-Quellcode:
Jetzt benötigst du z.B. einen Zweig für die Verwaltungs-Daten
TDataTreeNode = class abstract
private FCaption : string; FChilds : TList<TDataTreeNode>; protected function GetCaption : string; virtual; function GetContext : TObject; virtual; public constructor Create( const Caption : string ); destructor Destroy; override; published property Caption : string read GetCaption; property Childs : TList<TDataTreeNode> read FChilds; property Context : TObject read GetContext; end; constructor TDataTreeNode.Create( const Caption : string ); begin inherited Create; FCaption := Caption; FChilds := TObjectList<TDataTreeNode>.Create( True ); end; destructor TDataTreeNode.Destroy; begin FChilds.Free; inherited; end; function TDataTreeNode.GetCaption : string; begin Result := FCaption; end; function TDataTreeNode.GetContext : TObject; begin Result := nil; end;
Delphi-Quellcode:
und dazu eben passend
TVerwaltungNode = class( TDataTreeNode )
private FVerwaltung : Tierhaltung; protected function GetContext : TObject; override; public constructor Create( Verwaltung : TVerwaltung ); end; constructor Create( Verwaltung : TVerwaltung ); begin inherited Create( 'Verwaltung' ); FVerwaltung := Verwaltung; Childs.Add( TLizenzenNode.Create( 'Aktive Lizenzen', Verwaltung.AktiveLizenzen ) ); Childs.Add( TLizenzenNode.Create( 'Lizenzen (inaktiv)', Verwaltung.InaktiveLizenzen ) ); end; function TVerwaltungNode.GetContext : TObject; begin Result := FVerwaltung; end;
Delphi-Quellcode:
und zu guter letzt noch
TLizenzenNode = class( TDataTreeNode )
private FLizenzen : TList<TLizenz>; public constructor Create( Caption : string; Lizenzen : TList<TLizenzen> ); end; constructor TLizenzenNode.Create( Caption : string; Lizenzen : TList<TLizenz> ); var LLizenz : TLizenz; begin constructor Create( Caption ); for LLizenz in TLizenz do Childs.Add( TLizenzNode.Create( LLizenz ) ); end;
Delphi-Quellcode:
Das wäre schon mal die grobe Richtung. Wenn du jedem Node jetzt auch noch einen Kontext verpasst, dann kannst du anhand des Kontexts auch noch eine passendes Frame/Formular erzeugen und anzeigen.
TLizenzNode = class( TDataTreeNode )
private FLizenz : TLizenz; public constructor Create( Lizenz : TLizenz ); end; constructor Create( Lizenz : TLizenz ); begin inherited Create( Lizenz.Nummer ); FLizenz := Lizenz; end; Den Baum im TreeView kannst du jetzt mit diesen Objekten aufbauen, indem du die Caption und die Childs abfragst. (Umgetestet und frei Hand heruntergetippt. Es fehlt auf jeden Fall noch die Benachrichtigung bei Veränderungen innerhalb der Objekte, an die sich die Form dranhängen kann) |
AW: Treeview-Ast absprechen
Danke für Deine Mühe ;-)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:56 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