Erstellt ein Treeview-Control
#include <GuiTreeView.au3>
_GUICtrlTreeView_Create ( $hWnd, $iX, $iY [, $iWidth = 150 [, $iHeight = 150 [, $iStyle = 0x00000037 [, $iExStyle = 0x00000000]]]] )
$hWnd | Handle zum Parent- oder Eigner-Fenster |
$iX | Horizontale Position des Controls |
$iY | Vertikale Position des Controls |
$iWidth | [optional] Breite des Controls |
$iHeight | [optional] Höhe des Controls |
$iStyle | [optional] Stile des Controls: $TVS_CHECKBOXES - Aktiviert Checkboxen für die Items. Eine Checkbox wird nur dargestellt, wenn ein Bild mit dem Item verbunden ist. Wenn dieser Stile gesetzt wird, nutzt das Control DrawFrameControl um eine StatusImagelist zu erstellen und zu setzen, welche zwei Bilder enthält. Statusbild 1 ist die unmarkierte Checkbox und Statusbild 2 ist die markierte Checkbox, wird das Statusbild auf Null gesetzt, wird die Checkbox entfernt. Version 5.80 zeigt die Checkbox auch, wenn kein Bild mit dem Item verknüpft ist. $TVS_DISABLEDRAGDROP - Verhindert, dass das TreeView-Control TVN_BEGINDRAG-Benachrichtigungen sendet. $TVS_EDITLABELS - Erlaubt es dem Benutzer, ein Itemlabel zu ändern. $TVS_FULLROWSELECT - Aktiviert das Auswählen der kompletten Zeile. Die gesamte Zeile des ausgewählten Eintrags wird markiert und das Klicken irgendwo auf die Zeile eines Eintrags führt dazu, dass dieser Eintrag ausgewählt wird. Dieser Stil kann nicht zusammen mit $TVS_HASLINES style verwendet werden. $TVS_HASBUTTONS - Zeigt Plus (+) und Minus (-) Buttons neben "parent"-Items an. Der Benutzer klickt auf die Buttons um die Child-Items zu sehen oder zu verstecken. Um Buttons für Einträge auf der Ursprungsebene des Treeviews (root) anzuzeigen, muss zusätzlich $TVS_LINESATROOT aufgerufen werden $TVS_HASLINES - Verwendet Linien, um die Hierarchie der Items anzuzeigen. $TVS_INFOTIP - Bewirkt ToolTip Informationen durch Senden der $TVN_GETINFOTIP-Nachricht $TVS_LINESATROOT - Verwendet Linien, um Einträge auf der Ursprungsebene des Treeviews (root) zu verbinden dieser Wert wird ignoriert falls $TVS_HASLINES nicht festgelegt ist $TVS_NOHSCROLL - Deaktiviert horizontales Scrollen in dem Control. Das Control zeigt keine horizontale Scrollbar an. $TVS_NONEVENHEIGHT - Setzt die Höhe der Items durch die $TVM_SETITEMHEIGHT Nachricht auf eine ungerade Höhe. Standardmäßig muss die Höhe der Items ein gerader Wert sein. $TVS_NOSCROLL - Deaktiviert horizontales und vertikales Scrollen in dem Control. Das Control zeigt keine Scrollbar an. $TVS_NOTOOLTIPS - Deaktiviert ToolTips $TVS_RTLREADING - Bewirkt, dass Text von links nach rechts dargestellt wird $TVS_SHOWSELALWAYS - Sorgt dafür, dass ein ausgewähltes Item markiert bleibt, wenn das TreeView-Control den Fokus verliert. $TVS_SINGLEEXPAND - Bewirkt, dass das neue Item aufgeklappt wird und das alte Item zugeklappt wird. Falls das Item mit einem einfachen Mausklick angeklickt wird und dadurch das Item geschlossen wird, wird es aufgeklappt. Falls der Benutzer während dem auswählen die CTRL (Strg) Taste gedrückt hält, wird das nicht ausgewählte Item nicht zugeklappt $TVS_TRACKSELECT - Ermöglicht "hot tracking" in einem TreeView-Control. Standard: $TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS Erzwungen: $WS_CHILD, $WS_VISIBLE |
$iExStyle | [optional] erweiterte Stile des Controls |
Erfolg: | Handle des Controls. |
Fehler: | 0. |
Diese Funktion ist für erfahrene Benutzer und zum Erlernen wie das Control arbeitet.
- - - - - - - - Erklärung der Controls - - - - - - - -
#include <Extras\WM_NOTIFY.au3> #include <GuiConstantsEx.au3> #include <GuiTreeView.au3> #include <WindowsConstants.au3> Global $g_hTreeView Example() Func Example() Local $hGUI = GUICreate("TreeView: Erstellen (v" & @AutoItVersion & ")", 400, 300) Local $iStyle = BitOR($TVS_EDITLABELS, $TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS, $TVS_CHECKBOXES) $g_hTreeView = _GUICtrlTreeView_Create($hGUI, 2, 2, 396, 268, $iStyle, $WS_EX_CLIENTEDGE) GUISetState(@SW_SHOW) _WM_NOTIFY_Register() _GUICtrlTreeView_BeginUpdate($g_hTreeView) Local $hItem For $x = 0 To 5 $ahItem = _GUICtrlTreeView_Add($g_hTreeView, 0, StringFormat("[%02d] Neues Item", $x)) For $y = 0 To 3 _GUICtrlTreeView_AddChild($g_hTreeView, $ahItem, StringFormat("[%02d] Neues Child", $y)) Next Next _GUICtrlTreeView_EndUpdate($g_hTreeView) ; Die Schleife wiederholt sich, bis der Benutzer die Beenden-Aktion der GUI auslöst. Do Until GUIGetMsg() = $GUI_EVENT_CLOSE GUIDelete() EndFunc ;==>Example Func WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam) #forceref $hWnd, $iMsg, $wParam Local $hWndTreeview = $g_hTreeView If Not IsHWnd($g_hTreeView) Then $hWndTreeview = GUICtrlGetHandle($g_hTreeView) Local $tNMHDR = DllStructCreate($tagNMHDR, $lParam) Local $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom")) Local $iCode = DllStructGetData($tNMHDR, "Code") Switch $hWndFrom Case $hWndTreeview Switch $iCode Case $NM_CLICK ; Der Benutzer hat das Control mit der linken Maustaste angeklickt _WM_NOTIFY_DebugEvent("$NM_CLICK", $tagNMHDR, $lParam, "hWndFrom,IDFrom") ;~ Return 1 ; Verhindert die Standard-Nachrichtenbehandlung Return 0 ; Standard-Nachrichtenbehandlung wird ausgeführt Case $NM_DBLCLK ; Der Benutzer hat einen Doppelklick auf das Control ausgeführt _WM_NOTIFY_DebugEvent("$NM_DBLCLK", $tagNMHDR, $lParam, "hWndFrom,IDFrom") ;~ Return 1 ; Verhindert die Standard-Nachrichtenbehandlung Return 0 ; Standard-Nachrichtenbehandlung wird ausgeführt Case $NM_RCLICK ; Der Benutzer hat das Control mit der rechten Maustaste angeklickt _WM_NOTIFY_DebugEvent("$NM_RCLICK", $tagNMHDR, $lParam, "hWndFrom,IDFrom") ;~ Return 1 ; Verhindert die Standard-Nachrichtenbehandlung Return 0 ; Standard-Nachrichtenbehandlung wird ausgeführt Case $NM_RDBLCLK ; Der Benutzer hat das Control mit der rechten Maustaste doppelgeklickt _WM_NOTIFY_DebugEvent("$NM_RDBLCLK", $tagNMHDR, $lParam, "hWndFrom,IDFrom") ;~ Return 1 ; Verhindert die Standard-Nachrichtenbehandlung Return 0 ; Standard-Nachrichtenbehandlung wird ausgeführt Case $NM_KILLFOCUS ; Das Control hat den Eingabefokus verloren _WM_NOTIFY_DebugEvent("$NM_KILLFOCUS", $tagNMHDR, $lParam, "hWndFrom,IDFrom") ; Kein Rückgabewert Case $NM_RETURN ; Das Control hat den Eingabefokus und der Benutzer hat eine Taste gedrückt _WM_NOTIFY_DebugEvent("$NM_RETURN", $tagNMHDR, $lParam, "hWndFrom,IDFrom") ;~ Return 1 ; Verhindert die Standard-Nachrichtenbehandlung Return 0 ; Standard-Nachrichtenbehandlung wird ausgeführt ;~ Case $NM_SETCURSOR ; Das Control setzt den Cursor, weil es eine WM_SETCURSOR-Nachricht erhalten hat ;~ _WM_NOTIFY_DebugEvent("$NM_SETCURSOR", $tagNMMOUSE, $lParam, "IDFrom,,ItemSpec,ItemData,X,Y,HitInfo") ;~ Return 0 ; Erlaubt dem Control, den Cursor zu setzen ;~ Return 1 ; Verbietet dem Control, den Cursor zu setzen Case $NM_SETFOCUS ; Das Control hat den Eingabefokus erhalten _WM_NOTIFY_DebugEvent("$NM_SETFOCUS", $tagNMHDR, $lParam, "hWndFrom,IDFrom") ; Kein Rückgabewert Case $TVN_BEGINDRAGA, $TVN_BEGINDRAGW _WM_NOTIFY_DebugEvent("$TVN_BEGINDRAG", $tagNMHDR, $lParam, "hWndFrom,IDFrom") Case $TVN_BEGINLABELEDITA, $TVN_BEGINLABELEDITW _WM_NOTIFY_DebugEvent("$TVN_BEGINLABELEDIT", $tagNMHDR, $lParam, "hWndFrom,IDFrom") Case $TVN_BEGINRDRAGA, $TVN_BEGINRDRAGW _WM_NOTIFY_DebugEvent("$TVN_BEGINRDRAG", $tagNMHDR, $lParam, "hWndFrom,IDFrom") Case $TVN_DELETEITEMA, $TVN_DELETEITEMW _WM_NOTIFY_DebugEvent("$TVN_DELETEITEM", $tagNMHDR, $lParam, "hWndFrom,IDFrom") Case $TVN_ENDLABELEDITA, $TVN_ENDLABELEDITW _WM_NOTIFY_DebugEvent("$TVN_ENDLABELEDIT", $tagNMHDR, $lParam, "hWndFrom,IDFrom") Case $TVN_GETDISPINFOA, $TVN_GETDISPINFOW _WM_NOTIFY_DebugEvent("$TVN_GETDISPINFO", $tagNMHDR, $lParam, "hWndFrom,IDFrom") Case $TVN_GETINFOTIPA, $TVN_GETINFOTIPW _WM_NOTIFY_DebugEvent("$TVN_GETINFOTIP", $tagNMHDR, $lParam, "hWndFrom,IDFrom") Case $TVN_ITEMEXPANDEDA, $TVN_ITEMEXPANDEDW _WM_NOTIFY_DebugEvent("$TVN_ITEMEXPANDED", $tagNMHDR, $lParam, "hWndFrom,IDFrom") Case $TVN_ITEMEXPANDINGA, $TVN_ITEMEXPANDINGW _WM_NOTIFY_DebugEvent("$TVN_ITEMEXPANDING", $tagNMHDR, $lParam, "hWndFrom,IDFrom") Case $TVN_KEYDOWN _WM_NOTIFY_DebugEvent("$TVN_KEYDOWN", $tagNMHDR, $lParam, "hWndFrom,IDFrom") Case $TVN_SELCHANGEDA, $TVN_SELCHANGEDW _WM_NOTIFY_DebugEvent("$TVN_SELCHANGED", $tagNMHDR, $lParam, "hWndFrom,IDFrom") Case $TVN_SELCHANGINGA, $TVN_SELCHANGINGW _WM_NOTIFY_DebugEvent("$TVN_SELCHANGING", $tagNMHDR, $lParam, "hWndFrom,IDFrom") Case $TVN_SETDISPINFOA, $TVN_SETDISPINFOW _WM_NOTIFY_DebugEvent("$TVN_SETDISPINFO", $tagNMHDR, $lParam, "hWndFrom,IDFrom") Case $TVN_SINGLEEXPAND _WM_NOTIFY_DebugEvent("$TVN_SINGLEEXPAND", $tagNMHDR, $lParam, "hWndFrom,IDFrom") EndSwitch EndSwitch Return $GUI_RUNDEFMSG EndFunc ;==>WM_NOTIFY