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,