• Offizieller Beitrag

    Das Problem des Änderns eines Treeview-Styles On-The-Fly hatte ich in diesem Thread behandelt.
    Meine Lösung habe ich nun UDF-gerecht aufgearbeitet und stelle sie euch hiermit zur Verfügung.
    Es werden 2 Treeview an derselben Position erstellt mit unterschiedlichen Styles. Das Treeview mit Style_2 ist beim Start versteckt. Mit der Swap-Funktion kann zwischen den Styles hin- und hergeschaltet werden. Dabei werden die Inhalte aus dem zuletzt angezeigten Treeview ausgelesen und in das anzuzeigende Treeview übertragen. Somit ist gesichert, dass im Einsatz stattfindende Änderungen des Treeview-Inhalts auch erhalten bleiben beim Wechsel des Styles.

    Beim Erstellen des (bzw. der) Treeview wird ein Array zurückgegeben. An Array[0] ist immer die ID des gerade sichtbaren Treeview. Die Arrayvariable [0] sollte nicht in einer Einzelvariable geführt werden, da die Zuordnung nur bis zum Swap stimmt (oder es wird auch jedesmal die Variable neu zugewiesen).

    GuiTreeview2Style.au3
    GuiTreeview2Style_Bsp.au3
  • Hallo @BugFix,

    ist schon toll, wenn ein Guru wie du mal ein Problem hat. Da fällt immer was für alle anderen ab :D
    Vielen Dank für die UDF.

    Beim Ausprobieren deines Beispiels, habe ich mir gedacht, es wäre eigentlich schöner, wenn man das Aufklappen nicht sehen würde. Also habe ich in der UDF mal Zeile 55 GUICtrlSetState($aID[0], $GUI_SHOW) auskommentiert und die Funktion _Expand_Show1st aus dem Beispiel geändert.

    AutoIt
    Func _Expand_Show1st($_hWnd)
    	_GUICtrlTreeView_BeginUpdate($_hWnd)
    	_GUICtrlTreeView_Expand($_hWnd)
    	_GUICtrlTreeView_SelectItem($_hWnd, _GUICtrlTreeView_GetFirstItem($_hWnd))
    	_GUICtrlTreeView_EndUpdate($_hWnd)
    	GUICtrlSetState($_hWnd, $GUI_SHOW)
    EndFunc   ;==>_Expand_Show1st


    Jetzt frage ich mich, ob es nicht schön wäre, wenn jemand (ich meine dich ;) ) die Swap-Funktion in der UDF noch um Parameter erweitern würde - eben etwa um Expand.

    Ich weiß nicht, ob das sinnvoll ist und wie oft das überhaupt benötigt wird. Es soll auch absolut keine negative Kritik sein und man kann sich das natürlich auch selbst anpassen. Das war einfach mein Gedanke beim Umschalten.

    Grüße autoiter

    • Offizieller Beitrag

    Ich würde an der Kernfunktion nichts ändern. Ziel ist das Umschalten zwischen zwei Stylen. Ob das Treeview überhaupt mehrere Level hat und ausgeklappt werden kann/soll spielt dafür keine Rolle.

    Im Bsp. hatte ich mehrere Level generiert, um zu zeigen, dass tatsächlich die Inhalte 1:1 übertragen werden - deshalb auch das Ausklappen. Auf Schönheit hatte ich deshalb keinen Wert gelegt.
    Wenn man das Ausklappen nicht sichtbar gestalten will, einfach die Funktion anpassen, ist reine Kosmetik:

    AutoIt
    Func _Expand_Show1st($_hWnd)
    	GUISetState(@SW_LOCK)
    	_GUICtrlTreeView_Expand($_hWnd)
    	_GUICtrlTreeView_SelectItem($_hWnd, _GUICtrlTreeView_GetFirstItem($_hWnd))
    	GUISetState(@SW_UNLOCK)
    EndFunc