Skip to main content
Skip table of contents

TTreeViewEx

TTreeViewEx

Klasse zur Darstellung einer Baumstruktur (ähnlich wie File-Explorer).

Allgemeine-Eigenschaften

Eigenschaft

Beschreibung

Images

ImageListe des TreeViews

StateImages

StateImageListe des TreeViews zur zusätzlichen Statusanzeige

Items

Liste aller Knoten (zum hinzufügen muss CollAdd() verwendet werden)

Aktive-Eigenschaften (Methoden)

Eigenschaft

Beschreibung

OnEditAborted

Event bei Abbruch des Editierens

DisableDblClick

Deaktivierung des DoubleClickEvents

FocusedNode 

Veraltet (hat keine Funktion)

FirstNode

Gibt den obersten Knoten der Baumstruktur zurück (Objekt: TTreeNodeEx)

Selected

Gibt den aktuell selektierten Baumknoten zurück (Objekt: TTreeNodeEx)

FullCollapseTree

Klappt die gesamte Baumstruktur zusammen

FullExpandTree

Entfaltet die gesamte Baumstruktur

BeginUpdate 

Verhindert bis zu einem Aufruf der Methode EndUpdate das Aktualisieren des Baumdiagramms

EndUpdate

Hebt die Sperre die durch BeginUpdate gesetzt wurde wieder auf

AutoExpand

true = Unterknoten öffnen sich automatisch bei Auswahl des Baumknoten

HideSelection

true = Selektion wird nicht angezeigt wenn TreeView keinen Eingabefokus hat

HotTrack

true = Baumknoten werden automatisch hervorgehoben wenn sich der Mauszeiger darüber befindet

MultiSelect

true = mehrere Baumknoten können gleichzeitig ausgewählt werden

RowSelect

true = Die ganze Zeile des selektierten Baumknotens wir hervorgehoben (ShowLines muss false sein)

ShowButtons

true = Symbole (+ & ) zum auf und zusammenfalten der Baumknoten anzeigen

ShowLines 

true = Verbindungslinien zwischen den Unterknoten anzeigen

ShowRoot

true = Verbindungslinien zwischen den obersten Knoten der Baumstruktur und den Unterknoten anzeigen

EnableScrolling

true = Mausrad scrollt Baumknoten; false = Mausrad verschiebt Bildlaufleiste

SortType

0 = Keine automatische Sortierung; 3 = Baumknoten werden automatisch nach deren Text sortiert

Indent

 Einrückung der Baumknoten (in Pixel)

Beispiel

CODE
|oForm, oTreeView, oPnlRight,
 oBtnAddNode, oBtnAddSub, oBtnDelNode, oLblNodeValue |

//******************************************************************************
// Neuen Knoten zum Baum hinzufügen
//******************************************************************************
function AddNode()
|oNode|
  // Knoten hinzufügen
  oNode       := CollAdd(oTreeView.Items),
  // Anzeigetext einstellen
  oNode.Text  := "Knoten " + str(CollCount(oTreeView.Items)),
  // Zusätzlichen Wert füllen
  oNode.Value := "XYZ Wert / " + str(GetExTimer()),
  oNode.ImageIndex    := CollCount(oTreeView.Items),
  oNode.SelectedIndex := 1,

  result := oNode,
end,

//******************************************************************************
// Neuen Unterknoten anfügen
//******************************************************************************
function AddSubNode(oParentNode)
|oSubNode|
  // an Knoten einen Unterknoten anfügen
  oSubNode       := oParentNode.AddChild,
  oSubNode.ImageIndex := CollCount(oTreeView.Items),
  oSubNode.SelectedIndex := 1,
  // Anzeigetext einstellen
  oSubNode.Text  := "Unterknoten " + str(CollCount(oTreeView.Items)),
  // Zusätzlichen Wert füllen
  oSubNode.Value := "ABC Wert / " + str(GetExTimer()),

  result := oSubNode,
end,

//******************************************************************************
// Neuen Knoten zum Baum hinzufügen
//******************************************************************************
function BtnAddNodeClick( Sender )
  AddNode(),
end,

//******************************************************************************
// Neuen Unterknoten an ausgewählten Knoten anfügen
//******************************************************************************
function BtnAddSubClick( Sender )
|oSelected|
  oSelected := oTreeView.Selected, // akt. gewählter Knoten
  if oSelected <> nil then
     // Unterknoten anfügen
     AddSubNode(oSelected),
     // Baumstruktur aufklappen
     oSelected.ExpandNode,
  else
     meld('Bitte erst einen Knoten auswählen'),
  endif,
end,

//******************************************************************************
// Ausgewählten Knoten löschen
//******************************************************************************
function BtnDelNodeClick( Sender )
|oSelected|
  oSelected := oTreeView.Selected, // akt. gewählter Knoten
  if oSelected <> nil then
     // Sind Unterknoten vorhanden?
     if oSelected.HasChildren then
        // Hinweis anzeigen
        if MessageDlg("Vorhandene Unterknoten werden gelöscht!",2,12) = 2 then
           exit,
        endif,
     endif,
     // Knoten inkl. aller Unterknoten löschen
     oSelected.DeleteNode,
  endif,
end,

//******************************************************************************
// Wenn im Baum ein anderer Knoten ausgewählt wird
//******************************************************************************
function TreeViewChange( Sender )
|oSelected|
  oSelected := oTreeView.Selected, // akt. gewählter Knoten
  if oSelected <> nil then
     // Value auslesen und anzeigen
     oLblNodeValue.Caption := 'Wert: ' + oSelected.Value,
  endif,
end,

//******************************************************************************
// Bei Formularstart Baum automatisch befüllen
//******************************************************************************
function MainFormShow( Sender )
|i, j, oNode|

  // Baum sperren
  oTreeView.BeginUpdate,
  startseq,
     // 5 Knoten mit je 3 Unterknoten erstellen
     for i:=0 to 5 do
        oNode := AddNode(),
        for j:=0 to 3 do
           AddSubNode(oNode),
        end,
     end,
  always,
     // Sperre aufheben
     oTreeView.EndUpdate,
  stopseq,
  // Baum komplett aufklappen
  oTreeView.FullExpandTree,
end,

//******************************************************************************
//******************************************************************************
// Formular
//******************************************************************************
//******************************************************************************
StartSeq,

  oForm          := CreateObject('TFormEx','MainForm'),
  oTreeView      := CreateObject('TTreeViewEx', 'TreeView',oForm,oForm),
  oTreeView.Images := FindObject(FindObject(Application, 'DM_ImageList'), 'ImageListMain'),
  oPnlRight      := CreateObject('TPanel','PnlRight',oForm, oForm),
  oLblNodeValue  := CreateObject('TLabel','LblNodeValue',oForm,oPnlRight),
  oBtnAddNode    := CreateObject('TBeBitBtn','BtnAddNode',oForm,oPnlRight),
  oBtnAddSub     := CreateObject('TBeBitBtn','BtnAddSub',oForm,oPnlRight),
  oBtnDelNode    := CreateObject('TBeBitBtn','BtnDelNode',oForm,oPnlRight),

  // Form
  oForm.Width    := 600,
  oForm.Height   := 600,
  oForm.Position := poMainFormCenter,
  assignevent(oForm, 'OnShow', 'MainFormShow'),

  // Tree
  oTreeView.Align         := alClient,
  oTreeView.HideSelection := false,
  assignevent(oTreeView, 'OnChange', 'TreeViewChange'),

  // Panel
  oPnlRight.Width      := 200,
  oPnlRight.Align      := alRight,
  oPnlRight.BevelOuter := bvNone,
  oPnlRight.Caption    := '',

  // Info Label
  oLblNodeValue.Top     := 5,
  oLblNodeValue.Left    := 5,
  oLblNodeValue.Height  := 15,
  oLblNodeValue.Caption := '',

  // Button (Knoten hinzufügen)
  oBtnAddNode.Top     := 35,
  oBtnAddNode.Left    := 5,
  oBtnAddNode.Width   := 190,
  oBtnAddNode.Caption := 'Neuen Knoten hinzufügen',
  oBtnAddNode.ImageIndex.IndexNormal := 15,
  assignevent(oBtnAddNode, 'OnClick', 'BtnAddNodeClick'),

  // Button (Unterknoten hinzufügen)
  oBtnAddSub.Top     := 65,
  oBtnAddSub.Left    := 5,
  oBtnAddSub.Width   := 190,
  oBtnAddSub.Caption := 'Neuen Unterknoten hinzufügen',
  oBtnAddSub.ImageIndex.IndexNormal := 15,
  assignevent(oBtnAddSub, 'OnClick', 'BtnAddSubClick'),

  // Button (ausgewählten Knoten löschen)
  oBtnDelNode.Top     := 95,
  oBtnDelNode.Left    := 5,
  oBtnDelNode.Width   := 190,
  oBtnDelNode.Caption := 'ausgewählten Knoten löschen',
  oBtnDelNode.ImageIndex.IndexNormal := 6,
  assignevent(oBtnDelNode, 'OnClick', 'BtnDelNodeClick'),

  // Formular anzeigen
  ShowModal(oForm),

OnError
   meld(GetErrorText()),
   DestroyObject( oForm ),
StopSeq,

Weitere Verknüpfungen

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.