Skip to main content
Skip table of contents

TTreeViewEx

TTreeViewEx

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

Allgemeine-Eigenschaften

EigenschaftBeschreibung

Images

ImageListe des TreeViews
StateImagesStateImageListe des TreeViews zur zusätzlichen Statusanzeige
ItemsListe aller Knoten (zum hinzufügen muss CollAdd() verwendet werden)

Aktive-Eigenschaften (Methoden)

EigenschaftBeschreibung

OnEditAborted

Event bei Abbruch des Editierens
DisableDblClickDeaktivierung des DoubleClickEvents
FocusedNode Veraltet (hat keine Funktion)
FirstNodeGibt den obersten Knoten der Baumstruktur zurück (Objekt: TTreeNodeEx)
SelectedGibt den aktuell selektierten Baumknoten zurück (Objekt: TTreeNodeEx)
FullCollapseTreeKlappt die gesamte Baumstruktur zusammen
FullExpandTreeEntfaltet die gesamte Baumstruktur
BeginUpdate Verhindert bis zu einem Aufruf der Methode EndUpdate das Aktualisieren des Baumdiagramms
EndUpdateHebt die Sperre die durch BeginUpdate gesetzt wurde wieder auf
AutoExpandtrue = Unterknoten öffnen sich automatisch bei Auswahl des Baumknoten
HideSelectiontrue = Selektion wird nicht angezeigt wenn TreeView keinen Eingabefokus hat
HotTracktrue = Baumknoten werden automatisch hervorgehoben wenn sich der Mauszeiger darüber befindet
MultiSelecttrue = mehrere Baumknoten können gleichzeitig ausgewählt werden
RowSelecttrue = Die ganze Zeile des selektierten Baumknotens wir hervorgehoben (ShowLines muss false sein)
ShowButtonstrue = Symbole (+ & ) zum auf und zusammenfalten der Baumknoten anzeigen
ShowLines true = Verbindungslinien zwischen den Unterknoten anzeigen
ShowRoottrue = Verbindungslinien zwischen den obersten Knoten der Baumstruktur und den Unterknoten anzeigen
EnableScrollingtrue = Mausrad scrollt Baumknoten; false = Mausrad verschiebt Bildlaufleiste
SortType0 = 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.