Ich möchte quasi einen Liste erzeugen, die in zwei oder drei Teile geteilt ist und viele Unterpunkte hat ... ich denke dafür ist GUICtrlCreateTreeView() am besten geeignet!
Ich hab schon ein kleines Programm geschrieben, nur bin ich auf unlösbare Probleme gestoßen...
Hier mein Programm:
Spoiler anzeigen
#include <GUIConstantsEx.au3>
#include <TreeviewConstants.au3>
#include <WindowsConstants.au3>
#include <Array.au3>
$text = ""
; GUI und TreeView definieren
$gui = GUICreate("ControlTreeview test", 212, 198)
$gui_empfaenger = GUICtrlCreateTreeView(6, 6, 200, 160, BitOR($TVS_HASBUTTONS,$TVS_HASLINES,$TVS_SHOWSELALWAYS,$TVS_CHECKBOXES),$WS_EX_CLIENTEDGE)
$gui_empf_h = ControlGetHandle("", "", $gui_empfaenger)
$button = GUICtrlCreateButton("Test", 6, 172, 200, 20)
; Liste wird geladen
Dim $liste_empf1[3] = ["Hans", "Karl", "Max"]
Dim $liste_empf2[5] = ["Moritz", "Fritz", "Josef", "Günter", "Otto"]
; TreeView
$liste1 = GUICtrlCreateTreeViewItem("Liste1", $gui_empfaenger)
Dim $empf1[Ubound($liste_empf1)]
For $y=0 to Ubound($liste_empf1)-1
$empf1[$y] = GUICtrlCreateTreeViewItem($liste_empf1[$y], $liste1)
Next
$liste2 = GUICtrlCreateTreeViewItem("Liste2", $gui_empfaenger)
Dim $empf2[Ubound($liste_empf2)]
For $y=0 to Ubound($liste_empf2)-1
$empf2[$y] = GUICtrlCreateTreeViewItem($liste_empf2[$y], $liste2)
Next
; GUI starten
GUISetState(@SW_SHOW)
; Elemente definieren
ControlTreeView("", "", $gui_empf_h, "Expand", "Liste1")
ControlTreeView("", "", $gui_empf_h, "Expand", "Liste2")
ControlTreeView("", "", $gui_empf_h, "Check", "Liste1|Hans")
While 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
Case $msg = $button ; Beim klichen auf test
For $y=0 to Ubound($empf1)-1
$check = ControlTreeView("", "", $gui_empf_h, "IsChecked", "#0|#"&$y)
If $check == 1 then
$text = $text&$liste_empf1[$y]&@CRLF
EndIf
Next
For $y=0 to Ubound($empf2)-1
$check = ControlTreeView("", "", $gui_empf_h, "IsChecked", "Liste1|"&$liste_empf2[$y])
If $check == 1 then
$text = $text&$liste_empf2[$y]&@CRLF
EndIf
Next
MsgBox(0, "Markierte Empänger", $text)
EndSelect
WEnd
[/autoit] [autoit][/autoit] [autoit][/autoit]- Ich möchte das die Punkte 'Liste1' und 'Liste2' keine Checkbox haben und am besten auch nicht anklickbar sind ...
- Ich kann irgendwie nicht mehr auslesen, was angeklickt ist! Ich kann aber meinen Fehler nicht finden ...
Ich habe auch zwei Methoden angewendet ... ein mal über die Namen der Liste|Empänger und einmal über deren Anordnung #0|#1 - Schaff ich es nicht die Punkte "Liste1" und "Liste2" zusammen zu fassen, in ein mehrdimensionales array ... das gelingt mir nicht ...
thx
/edit:
Noch ne Zusatzfrage:
Bei den ganzen Controll..() Elementen (ControlTreeView, ControlHide, ...) sind die ersten beiden Parameter immer "Title" und "Name"! Ist es egal was ich das eingebe?
Weil ich habe bisher keinen Unterschied festgestellt, ob ich da was richtiges oder nicht eingebe!
Was ist eig. das richtige, was man dort eingeben sollte?