AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Treeview-Ast absprechen

Ein Thema von Pfl · begonnen am 24. Jul 2014 · letzter Beitrag vom 25. Jul 2014
Antwort Antwort
Pfl

Registriert seit: 5. Jun 2012
Ort: Berlin
65 Beiträge
 
Delphi XE6 Architect
 
#1

Treeview-Ast absprechen

  Alt 24. Jul 2014, 14:42
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).

INFO : Der Unterast soll als Kind eines bereits vorhandenen Kindes angefügt werden (Als Unterast von Aktive, bzw. inaktive Lizenzen).

Bitte um dringende Hilfe !!!
Miniaturansicht angehängter Grafiken
treeview.jpg  
Friedrich
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.798 Beiträge
 
Delphi 12 Athens
 
#2

AW: Treeview-Ast absprechen

  Alt 24. Jul 2014, 16:03
Die Hilfe sollte eigentlich genug zur Lösung beisteuern können.
Das ganze Ding heisst Delphi-Referenz durchsuchenTTreeView, jeder Knoten heisst Delphi-Referenz durchsuchenTTreeNode
Welcher Teil des Baumes wurde angeklickt -> Im (Beispielsweise) Klickereignis Tree.Selected abfragen
Wie füge ich einen neuen Knoten hinzu -> Node.Addchild

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Pfl

Registriert seit: 5. Jun 2012
Ort: Berlin
65 Beiträge
 
Delphi XE6 Architect
 
#3

AW: Treeview-Ast absprechen

  Alt 24. Jul 2014, 21:42
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.
Friedrich
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Treeview-Ast absprechen

  Alt 24. Jul 2014, 22:17
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.
Soll das wirklich im TreeView auftauchen?
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Pfl

Registriert seit: 5. Jun 2012
Ort: Berlin
65 Beiträge
 
Delphi XE6 Architect
 
#5

AW: Treeview-Ast absprechen

  Alt 24. Jul 2014, 22:34
Falls du die Lizenzen meinst, dann ja
Friedrich
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Treeview-Ast absprechen

  Alt 24. Jul 2014, 22:56
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:
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;
Jetzt benötigst du z.B. einen Zweig für die Verwaltungs-Daten
Delphi-Quellcode:
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;
und dazu eben passend
Delphi-Quellcode:
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;
und zu guter letzt noch
Delphi-Quellcode:
TLizenzNode = class( TDataTreeNode )
private
  FLizenz : TLizenz;
public
  constructor Create( Lizenz : TLizenz );
end;

constructor Create( Lizenz : TLizenz );
begin
  inherited Create( Lizenz.Nummer );
  FLizenz := Lizenz;
end;
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.

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)
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (24. Jul 2014 um 23:00 Uhr)
  Mit Zitat antworten Zitat
Pfl

Registriert seit: 5. Jun 2012
Ort: Berlin
65 Beiträge
 
Delphi XE6 Architect
 
#7

AW: Treeview-Ast absprechen

  Alt 25. Jul 2014, 00:40
Danke für Deine Mühe
Friedrich
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:15 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