hoi zäme
Ich habe mal wieder so ein Problem, welches ich mir partout nicht erklären kann.
In einem recht umfangreichen GUI habe ich eine TreeViewLIste mit Checkboxen (Es sind zwei aber im funktionierenden Code-Auszug nur einer dargestellt). Der TreeView hat zwei Ebenen (Gruppe, Name). Wenn ich auf die Checkbox der Gruppe klicke, werden die Items darunter gesetzt oder ebend nicht. Das ist vielleicht alles ein bisschen umständlich gelöst, aber es funktioniert.
Mein Problem ist. Wenn ich auf die Checkbox eines Child-Items (also Name) klicke, dann passiert nichts.
herzliche Grüsse mit herzlichem Dank
Torsten
Spoiler anzeigen
AutoItSetOption("MustDeclareVars", 1)
#include <Array.au3>
#include <File.au3>
#include <GUIConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
#include <StaticConstants.au3>
#include <TabConstants.au3>
#include <TreeViewConstants.au3>
#include <WindowsConstants.au3>
Dim $sPfadNetzLinks
[/autoit] [autoit][/autoit] [autoit]Global $iFensterBreite = 715, $iFensterHoehe = 520
Global $gGuiFenster, $sGuiName = "HTML erzeugen"
Local $gMessage
Global $gTreeWebSiteListe[2][1]
Global $aiAnzSiteGroup[2], $asAnzWebsite[1][2]
Global $gTrItemSiteGroup[2][1]
Global $asSiteGroupListe[3], $asWebsiteListe[3]
Dim $gTrItemSiteGroupLinks[1], $gTrItemSiteGroupRechts[1]
; 1. Erzeuge GUI
$gGuiFenster = GUICreate($sGuiName, $iFensterBreite, $iFensterHoehe, 10, 10)
$gTrItemSiteGroupLinks = ErzeugeTreeView("links")
GUISetState(@SW_SHOW)
; 2. Schleife GUI
While True
$gMessage = GUIGetMsg()
Switch $gMessage
Case $gTrItemSiteGroup[0][1] To $gTrItemSiteGroup[0][$gTrItemSiteGroup[0][0]] ; SiteGroup der linken Seite
SiteGroupCheck("links")
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
; 3. Event Funktionen
Func ErzeugeTreeView($sPosition)
Local $iLiRe
Local $gTreeSiteGroupListe
Local $iPosHorz, $iPosVert, $iBreite, $iHoehe
Local $iZ2, $iZ3
$iLiRe = 0
$iPosHorz = 160
$iPosVert = 40
$iBreite = 265
$iHoehe = 290
$asSiteGroupListe[0] = 2
$asSiteGroupListe[1] = "Gruppe 1"
$asSiteGroupListe[2] = "Gruppe 2"
$aiAnzSiteGroup[$iLiRe] = $asSiteGroupListe[0]
ReDim $gTrItemSiteGroup[2][$aiAnzSiteGroup[$iLiRe] + 1]
$gTrItemSiteGroup[$iLiRe][0] = $aiAnzSiteGroup[$iLiRe]
If $aiAnzSiteGroup[$iLiRe] + 1 > UBound($asAnzWebsite, 2) Then
ReDim $asAnzWebsite[2][$aiAnzSiteGroup[$iLiRe] + 1]
$asAnzWebsite[$iLiRe][0] = $aiAnzSiteGroup[$iLiRe]
EndIf
$gTreeSiteGroupListe = GUICtrlCreateTreeView($iPosHorz + 10, $iPosVert + 20, $iBreite - 20, $iHoehe - 25, BitOR($GUI_SS_DEFAULT_TREEVIEW, $TVS_CHECKBOXES))
$iZ3 = 0
For $iZ1 = 1 To $aiAnzSiteGroup[$iLiRe]
$gTrItemSiteGroup[$iLiRe][$iZ1] = GUICtrlCreateTreeViewitem($asSiteGroupListe[$iZ1], $gTreeSiteGroupListe)
$asWebsiteListe[0] = 2
$asWebsiteListe[1] = "Name 1"
$asWebsiteListe[2] = "Name 2"
For $iZ2 = 1 To $asWebsiteListe[0]
$iZ3 = $iZ3 + 1
If $iZ3 + 1 > UBound($gTreeWebSiteListe, 2) Then
ReDim $gTreeWebSiteListe[2][$iZ3 + 1]
$gTreeWebSiteListe[$iLiRe][0] = $iZ3
EndIf
$gTreeWebSiteListe[$iLiRe][$iZ3] = GUICtrlCreateTreeViewItem($asWebsiteListe[$iZ2], $gTrItemSiteGroup[$iLiRe][$iZ1])
Next
$asAnzWebsite[$iLiRe][$iZ1] = $asWebsiteListe[0] ; schreibe Anzahl Website pro Gruppe
Next
$asAnzWebsite[$iLiRe][0] = 0 ; muss 0 sein, damit die Sitecheck funktioniert
$gTreeWebSiteListe[$iLiRe][0] = $iZ3
Return $gTreeSiteGroupListe
EndFunc ; ==> ErzeugeTreeView
Func SiteGroupCheck($sPosition) ; beim Klicken auf die SiteGroup werden die unterliegenden Websites aktiviert
; AnzWebsite = 6, 1, 5
; Pos 1: 1 bis 6
; Pos 2: 7 bis 7
; Pos 3: 8 bis 12
Local $iLiRe, $iPos
Local $iZ50, $iZ51, $iZ52
If $sPosition == "links" Then
$iLiRe = 0
Else
$iLiRe = 1
EndIf
For $iZ50 = 1 To $aiAnzSiteGroup[$iLiRe]
; prüfe, ob SiteGroup Buttons angesetzt wurde
$iPos = 1
If BitAND(GUICtrlRead($gTrItemSiteGroup[$iLiRe][$iZ50]), $GUI_CHECKED) Then
For $iZ51 = 1 To $iZ50
$iPos = $iPos + $asAnzWebsite[$iLiRe][$iZ51 - 1]
Next
For $iZ52 = $iPos To $iPos + $asAnzWebsite[$iLiRe][$iZ50] - 1
GUICtrlSetState($gTreeWebSiteListe[$iLiRe][$iZ52], $GUI_CHECKED)
Next
EndIf
; prüfe, ob SiteGroup Buttons nicht gesetzt wurde
$iPos = 1
If BitAND(GUICtrlRead($gTrItemSiteGroup[$iLiRe][$iZ50]), $GUI_UNCHECKED) Then
For $iZ51 = 1 To $iZ50
$iPos = $iPos + $asAnzWebsite[$iLiRe][$iZ51 - 1]
Next
For $iZ52 = $iPos To $iPos + $asAnzWebsite[$iLiRe][$iZ50] - 1
GUICtrlSetState($gTreeWebSiteListe[$iLiRe][$iZ52], $GUI_UNCHECKED)
Next
EndIf
Next
EndFunc ; ==> SiteGroupCheck