; Testformular

#Region INCLUDE
#include <GUIScrollbars_Ex.au3>	; <=== nicht im Standardpaket von Autoit enthalten
#include <WindowsConstants.au3>
#include <string.au3>
#include <Array.au3>
#EndRegion INCLUDE

#Region GUI Setting variables
Global $iMsg
Global $iMax_x_Scroll = 419 ; Scrollbreite (wenn Wert kleiner als Fensterbreite, dann keine Scrollbar)
Global $iMax_y_Scroll
Global $hGUI ; zum Abfragen der GUI
#EndRegion GUI Setting variables

#Region other variables
Global $allgemein
Global $vorwort
Global $thema1
Global $thema2
Global $thema3
Global $thema4
Global $header_thema3_block1
Global $thema3_unterpunkt1
Global $thema3_unterpunkt2
Global $thema3_unterpunkt3
Global $header_thema3_block2
Global $thema3_unterpunkt4
Global $thema3_unterpunkt5
Global $thema3_unterpunkt6
Global $header_thema4_block1
Global $thema3_unterpunkt1
Global $thema4_unterpunkt1
Global $thema4_unterpunkt2
Global $iMax_x_Scroll = 419 ; Scrollbreite (wenn Wert kleiner als Fensterbreite, dann keine Scrollbar)
Global $iMax_y_Scroll
#EndRegion other variables

_CreateWin()
_writecontend()
_CollectThemes()
_ShowArray()
_WaitForInput()


Func _CreateWin()
; Fenster mit Scrollbalken, skalierbar
	$hGUI = GUICreate("Test-Formular", 440, 600, -1, -1, BitOR($WS_MINIMIZEBOX, $WS_MAXIMIZEBOX, $WS_CAPTION, $WS_POPUP, $WS_SYSMENU, $WS_SIZEBOX), $WS_EX_ACCEPTFILES) ; Skalierbares Fenster + Drag and Drop
	GUISetBkColor(0xeeeeee)
	_GUIScrollbars_Generate($hGUI, $iMax_x_Scroll, $iMax_y_Scroll)	; Erzeuge Scrollbars mit GUIScrollbars_Ex.au3
EndFunc   ;==>_CreateWin()


Func _writecontend()
	$allgemein=GUICtrlCreateCheckbox("Allgemein",10,30,365)
	GUICtrlSetResizing($allgemein, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKSIZE) ; Position und Groesse fix zu Top und Left
	$vorwort=GUICtrlCreateCheckbox("Vorwort",10,50,365)
	GUICtrlSetResizing($vorwort, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKSIZE) ; Position und Groesse fix zu Top und Left

   	$header1= GUICtrlCreateGroup("Überschrift 3/4", 10, 230, 395,66)
	GUICtrlSetResizing($header1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKSIZE) ; Position und Groesse fix zu Top und Left
	$thema3=GUICtrlCreateRadio("Thema 3",28,246,365)
	GUICtrlSetResizing($thema3, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKSIZE) ; Position und Groesse fix zu Top und Left
	$thema4=GUICtrlCreateRadio("Thema 4",28,266,365)
	GUICtrlSetResizing($thema4, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKSIZE) ; Position und Groesse fix zu Top und Left
	$header_thema3_block1= GUICtrlCreateGroup("Überschrift Thema 3 Block 1", 10, 298, 395,88)
	GUICtrlSetResizing($header_thema3_block1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKSIZE) ; Position und Groesse fix zu Top und Left
	$thema3_unterpunkt1=GUICtrlCreateRadio("Thema 3 Unterpunkt 1",28,314,365)
	GUICtrlSetResizing($thema3_unterpunkt1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKSIZE) ; Position und Groesse fix zu Top und Left
	$thema3_unterpunkt2=GUICtrlCreateRadio("Thema 3 Unterpunkt 2",28,334,365)
	GUICtrlSetResizing($thema3_unterpunkt2, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKSIZE) ; Position und Groesse fix zu Top und Left
	$thema3_unterpunkt3=GUICtrlCreateRadio("Thema 3 Unterpunkt 3",28,354,365)
	GUICtrlSetResizing($thema3_unterpunkt3, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKSIZE) ; Position und Groesse fix zu Top und Left
	$header_thema3_block2= GUICtrlCreateGroup("Überschrift Thema 3 Block 2", 10, 386, 395,88)
	GUICtrlSetResizing($header_thema3_block2, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKSIZE) ; Position und Groesse fix zu Top und Left
	$thema3_unterpunkt4=GUICtrlCreateRadio("Thema 3 Unterpunkt 4",28,402,365)
	GUICtrlSetResizing($thema3_unterpunkt4, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKSIZE) ; Position und Groesse fix zu Top und Left
	$thema3_unterpunkt5=GUICtrlCreateRadio("Thema 3 Unterpunkt 5",28,422,365)
	GUICtrlSetResizing($thema3_unterpunkt5, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKSIZE) ; Position und Groesse fix zu Top und Left
	$thema3_unterpunkt6=GUICtrlCreateRadio("Thema 3 Unterpunkt 6",28,442,365)
	GUICtrlSetResizing($thema3_unterpunkt6, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKSIZE) ; Position und Groesse fix zu Top und Left
	$header_thema4_block1= GUICtrlCreateGroup("Überschrift Thema 4 Block 1", 10, 474, 395,66)
	GUICtrlSetResizing($header_thema4_block1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKSIZE) ; Position und Groesse fix zu Top und Left
	$thema4_unterpunkt1=GUICtrlCreateRadio("Thema 4 Unterpunkt 1",28,490,365)
	GUICtrlSetResizing($thema4_unterpunkt1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKSIZE) ; Position und Groesse fix zu Top und Left
	$thema4_unterpunkt2=GUICtrlCreateRadio("Thema 4 Unterpunkt 2",28,510,365)
	GUICtrlSetResizing($thema4_unterpunkt2, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKSIZE) ; Position und Groesse fix zu Top und Left

   	Global $idButtonMake = GUICtrlCreateButton("Gehe zum nächsten Programm", 10, 646, 230, 20)
	GUICtrlSetResizing($idButtonMake, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKSIZE) ; Position und Groesse fix zu Top und Left
	GUICtrlCreateGroup("", -99, -99, 1, 1)  ;close group
	$iMax_y_Scroll = 626+ 30 ; Hoehe fuer Scrollbereich
	_GUIScrollbars_Generate($hGUI, $iMax_x_Scroll, $iMax_y_Scroll)	; erneute Erzeugung Scrollbars mit angepasster Hoehe
	GUISetState()

EndFunc ;==> _writecontend()


Func _CollectThemes()
; Erzeuge $atb_all mit allen verwendeten Themenpunkten
	Global $atb_all[1]

	_ArrayAdd($atb_all, "$allgemein")
	_ArrayAdd($atb_all, "$vorwort")
	_ArrayAdd($atb_all, "$thema1")
	_ArrayAdd($atb_all, "$thema2")
	_ArrayAdd($atb_all, "$thema3")
	_ArrayAdd($atb_all, "$thema4")
	_ArrayAdd($atb_all, "$thema3_unterpunkt1")
	_ArrayAdd($atb_all, "$thema3_unterpunkt2")
	_ArrayAdd($atb_all, "$thema3_unterpunkt3")
	_ArrayAdd($atb_all, "$thema3_unterpunkt4")
	_ArrayAdd($atb_all, "$thema3_unterpunkt5")
	_ArrayAdd($atb_all, "$thema3_unterpunkt6")
	_ArrayAdd($atb_all, "$thema4_unterpunkt1")
	_ArrayAdd($atb_all, "$thema4_unterpunkt2")
	; Ergebnis: alle Themenbereiche des Formulars sind in Array "$atb_all" enthalten
EndFunc ; ==> _CollectThemes()

Func _WaitForInput()
	; Abfrage von Events

	While 1
		$nMsg = GUIGetMsg()
		Switch $nMsg
			Case $GUI_EVENT_CLOSE
				Exit
			Case $thema3
				If GUICtrlRead($thema3) = $GUI_CHECKED Then
				GUICtrlSetState($thema3_unterpunkt1, $GUI_ENABLE)
				GUICtrlSetState($thema3_unterpunkt2, $GUI_ENABLE)
				GUICtrlSetState($thema3_unterpunkt3, $GUI_ENABLE)
				GUICtrlSetState($thema3_unterpunkt4, $GUI_ENABLE)
				GUICtrlSetState($thema3_unterpunkt5, $GUI_ENABLE)
				GUICtrlSetState($thema3_unterpunkt6, $GUI_ENABLE)
				GUICtrlSetState($thema4_unterpunkt1, $GUI_DISABLE)
				GUICtrlSetState($thema4_unterpunkt2, $GUI_DISABLE)
				EndIf
			Case $thema4
				If GUICtrlRead($thema4) = $GUI_CHECKED Then
				GUICtrlSetState($thema3_unterpunkt1, $GUI_DISABLE)
				GUICtrlSetState($thema3_unterpunkt2, $GUI_DISABLE)
				GUICtrlSetState($thema3_unterpunkt3, $GUI_DISABLE)
				GUICtrlSetState($thema3_unterpunkt4, $GUI_DISABLE)
				GUICtrlSetState($thema3_unterpunkt5, $GUI_DISABLE)
				GUICtrlSetState($thema3_unterpunkt6, $GUI_DISABLE)
				GUICtrlSetState($thema4_unterpunkt1, $GUI_ENABLE)
				GUICtrlSetState($thema4_unterpunkt2, $GUI_ENABLE)
				EndIf
			Case $idButtonMake
				; Formular auswerten und LAH starten
				_askformular()
				ExitLoop
		EndSwitch
	WEnd
	Exit
EndFunc   ;==>_WaitForInput()

Func _ShowArray()
   ; dieses Unterprogramm dient nur der temporaeren Anzeige des Arrays
   _ArrayDisplay($atb_all, 'Zwischenstand: alle Check- und Radiobuttons' )
EndFunc  ;====> _ShowArray()

Func _AskFormular()

; Nicht angewaehlte Themenpunkte im Formular aussortieren und im Array "$atb_all" loeschen
Local $i = 0

;MsgBox(4096, 'Ubound', Ubound($atb_all, 1)-1)

	While $i < Ubound($atb_all, 1)
		$i = $i + 1
		If GUICtrlRead($atb_all[$i]) <> 1 Then
			_ArrayDelete($atb_all, $i)
			$i = $i - 1 ; Zaehler um 1 verkleinern, weil eine Zeile geloescht wurde und nun alle folgenden Zeilen hochrutschen
		Endif
	WEnd

_ArrayDisplay($atb_all, 'Nur aktivierte Boxen?' )
EndFunc  ;====> _AskFormular()













