Hallo
Ich habe ein Problem damit zwei Comboboxen miteinander zu "verknüpfen" bzw. ihre Inhalte dynamisch auf einander abzustimmen.
Ich hab ein mir via Koda eine GUI erstellt in der mehrere Comboboxen auftauchen.
Der Inhalt der erste Combobox wird aus einer Ordnerstruktur ausgelesen. Das heißt er scannt ein Verzeichnis und gibt die Namen aller Unterordner als Auswahl in die Combox "Geraetetyp". Soweit so gut.
Jetzt habe ich eine zweite Combobox "Templates". Diese soll ihren Inhalt je nach Auswahl in der Combobox "Geraetetyp" anpassen und ihren Inhalt ebenfalls auslesen allerdings eine Verzeichnisstiefe tiefer und basierend auf der Vorauswahl aus Geraetetyp.
Zur Veranschaulichung versuch ich mal die Ordnerstruktur abbzubilden.
Im Allgemeinen lautet der Pfad so: \\Templates\OriginalTemplates\"Geratetyp"\"Template"
Im Speziellen stellt sich das so dar:
\C2960\Template1
\Template2
\C3560\Template1
\Template2
. .
. .
. .
. .
Der User soll also per Combobox "Geraetetyp" ein Gerät auswählen für welches er dann in der Combobox "Templates" die dafür vorhandenen Templates sieht und davon eines auswählen kann.
Das Auslesen funktioniert super, nur leider die Verknüpfung nicht.
[autoit]
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Include <File.au3>
#Include <Array.au3>
#include <Date.au3>
$Form1 = GUICreate("Switche", 902, 665, 261, 137)
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")
$Geraetetyp = GUICtrlCreateCombo("Geraetetyp", 384, 48, 145, 25)
$Template = GUICtrlCreateCombo("Template", 384, 264, 257, 25)
GUISetState(@SW_SHOW)
Opt("GUIOnEventMode", 1)
Global $Path, $Filter
[/autoit][autoit][/autoit][autoit]$Path="J:\Templates\OriginalTemplates\"
$Filter='*.*'
;Ab hier wird die Combobox "Geraetetyp befüllt
$FileList=_FileListToArray($Path,$Filter,2)
If @Error=1 Then
MsgBox (0,"","No Files\Folders Found.")
Exit
EndIf
Global $Dateiname[UBound($FileList)]
For $i=0 To UBound($FileList)-1
GUICtrlSetData($Geraetetyp, $FileList[$i])
Next
;Ende befüllen
Switch GUICtrlRead($Geraetetyp)
[/autoit][autoit][/autoit][autoit]Case GUICtrlRead($Geraetetyp) <> "Geraetetyp"
$Path2=GUICtrlRead($Geraetetyp)
$Path3=$Path&$Path2&"\"
$Filter='*.au3'
$Templatelist=_FileListToArray($Path3,$Filter,1)
If @Error=1 Then
MsgBox (0,"","No Files\Folders Found.")
Exit
EndIf
For $i=0 To UBound($Templatelist)-1
GUICtrlSetData($Template, $Templatelist[$i])
Next
EndSwitch
While 1
Sleep(1000) ; Idle around
WEnd
Func CLOSEClicked()
Exit
EndFunc
Next