Checkbox Status in einer *.ini speichern

  • moin moin,

    Habe mal wieder ein Problem mit erstellten Checkboxen.
    Wenn ich diese generiert habe werden die in einer test.ini abgespeichert.
    Aber wie bekommt man es hin das man den Status der Checkboxen in der selben test.ini abspeichern kann
    Da sie immer wieder neu generiert werden haben die auch immer wieder eine neue ID.
    Die *.ini ist so aufgebaut.

    Code
    [Zeile1]
    Dies=
    dient=
    nur=
    zu=
    Testzwecken=

    Nun möchte ich den Status der Checkboxen gerne so in die test.ini bekommen

    Code
    [Zeile1]
    Dies=ja
    dient=ja
    nur=nein
    zu=nein
    Testzwecken=ja

    ja = CHECKED nein = UNCHECKED

    Test-Skript
    [autoit]

    #include <GuiDateTimePicker.au3>
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GUIListBox.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <ComboConstants.au3>
    #include <DateTimeConstants.au3>
    #include <EditConstants.au3>
    #include <Excel.au3>
    #include <Array.au3>
    #include <File.au3>
    #include <GuiComboBox.au3>
    #include <Date.au3>
    #include <GuiListView.au3>
    #include <ListViewConstants.au3>
    #include <string.au3>
    #include <hotkeys.au3>
    #include <Misc.au3>
    #include <_ToolTipMouseExit.au3>
    #include <GuiEdit.au3>
    #include <GuiConstantsEx.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Opt("GUIOnEventMode", 1)

    [/autoit] [autoit][/autoit] [autoit]

    testgui()
    Func testgui()
    $Form1 = GUICreate("Testgui", 746, 450, 258, 119)
    $Group2 = GUICtrlCreateGroup("Spalten Löschen für & $neulabel", 4, 30, 737, 338, BitOR($GUI_SS_DEFAULT_GROUP,$BS_LEFT))
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Radioeinaus1 = GUICtrlCreateRadio("testtabelle1", 305, 401, 89, 17, BitOR($GUI_SS_DEFAULT_RADIO,$BS_LEFT))
    $Radioeinaus2 = GUICtrlCreateRadio("testtabelle2", 403, 401, 73, 17, BitOR($GUI_SS_DEFAULT_RADIO,$BS_LEFT))
    $beenden = GUICtrlCreateButton("Beenden", 500, 395, 120, 25)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW)
    GUISetOnEvent($GUI_EVENT_CLOSE, "beenden")
    GUICtrlSetOnEvent($Radioeinaus1, "testtabelle1")
    ; GUICtrlSetOnEvent($Radioeinaus2, "testtabelle2")
    GUICtrlSetOnEvent($beenden, "beenden")

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    Sleep(50)
    WEnd
    EndFunc;==>testgui

    [/autoit] [autoit][/autoit] [autoit]

    Func testtabelle1()
    $Open = FileOpenDialog("",@ScriptDir,"(test1.xls)")
    $oExcel = _ExcelBookOpen($Open)
    $Spalten = $oExcel.Worksheets(1).UsedRange.Columns.Count
    $Spalten = $Spalten+2
    Local $Checkbox[$Spalten]
    Dim $aArray[$Spalten]
    For $i = 1 To UBound($aArray) -1
    $aArray[$i] = _ExcelReadArray($oExcel, 1, $i, 1, 1)
    _ArrayToClip($aArray[$i])
    $ddd = (ClipGet())
    IniWrite(@ScriptDir & "\test.ini", "Zeile1", $ddd, "")
    Next
    _ExcelBookClose($oExcel)

    [/autoit] [autoit][/autoit] [autoit]

    $var = IniReadSection( @ScriptDir & "\test.ini", "Zeile1")
    If @error Then
    MsgBox(4096, "", "Es ist ein Fehler aufgetreten. Warscheinlich keine INI Datei vorhanden.")
    Else

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 1 To $var[0][0]-1
    $top = 25 + ($i * 20)
    $left = 25
    If $top > 345 and $left = 25 Then
    $left = $left + 175
    $top = $top - 320
    EndIf
    If $top > 345 and $left = 200 Then
    $left = $left + 175
    $top = $top - 320
    EndIf
    If $top > 345 and $left = 375 Then
    $left = $left + 175
    $top = $top - 320
    EndIf
    If $top > 345 and $left = 550 Then
    $left = $left + 175
    $top = $top - 320
    EndIf
    $Checkbox[$i] = GUICtrlCreateCheckbox($var[$i][0], $left, $top, 175, 17)
    Next
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc;==>testtabelle1
    #cs
    Func testtabelle2()
    $Open = FileOpenDialog("",@ScriptDir,"(test2.xls)")
    $oExcel = _ExcelBookOpen($Open)
    $Spalten = $oExcel.Worksheets(1).UsedRange.Columns.Count
    $Spalten = $Spalten+2
    Local $Checkbox[$Spalten]
    Dim $aArray[$Spalten]
    For $i = 1 To UBound($aArray) -1
    $aArray[$i] = _ExcelReadArray($oExcel, 1, $i, 1, 1)
    _ArrayToClip($aArray[$i])
    $ddd = (ClipGet())
    IniWrite(@ScriptDir & "\test.ini", "Zeile2", $ddd, "")
    Next
    _ExcelBookClose($oExcel)
    $var = IniReadSection( @ScriptDir & "\test.ini", "Zeile2")
    If @error Then
    MsgBox(4096, "", "Es ist ein Fehler aufgetreten. Warscheinlich keine INI Datei vorhanden.")
    Else

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 1 To $var[0][0]-1
    $top = 25 + ($i * 20);
    $left = 25;
    If $top > 345 and $left = 25 Then
    $left = $left + 175
    $top = $top - 320
    EndIf
    If $top > 345 and $left = 200 Then
    $left = $left + 175
    $top = $top - 320
    EndIf
    If $top > 345 and $left = 375 Then
    $left = $left + 175
    $top = $top - 320
    EndIf
    If $top > 345 and $left = 550 Then
    $left = $left + 175
    $top = $top - 320
    EndIf
    $Checkbox[$i] = GUICtrlCreateCheckbox($var[$i][0], $left, $top, 175, 17)
    Next
    EndIf
    EndFunc;==>testtabelle2
    #ce
    Func beenden()
    Exit
    EndFunc;==>beenden

    [/autoit]


    Habe mal eine text.xls mit drangehangen

    mfg
    oh-ha

  • ich hab mal die schlimmsten Fehler korrigiert und das ganze angepasst...
    Ist natürlich nur als Demonstration zu sehen.
    Wenn Du in der ini statt 0 eine 1 setzt und die Zeile 54: IniWrite(@ScriptDir & "\test.ini", "Zeile1", $aArray[$i], BitAND(GUICtrlRead($Checkbox[$i]), $GUI_CHECKED))
    deaktivierst, dann wird die ini gelesen und die checks dementsprechend gesetzt.

    Spoiler anzeigen
    [autoit]

    #include <GuiDateTimePicker.au3>
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GUIListBox.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <ComboConstants.au3>
    #include <DateTimeConstants.au3>
    #include <EditConstants.au3>
    #include <Excel.au3>
    #include <Array.au3>
    #include <File.au3>
    #include <GuiComboBox.au3>
    #include <Date.au3>
    #include <GuiListView.au3>
    #include <ListViewConstants.au3>
    #include <string.au3>

    [/autoit] [autoit][/autoit] [autoit]

    #include <Misc.au3>

    [/autoit] [autoit][/autoit] [autoit]

    #include <GuiEdit.au3>
    #include <GuiConstantsEx.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Opt("GUIOnEventMode", 1)

    [/autoit] [autoit][/autoit] [autoit]

    testgui()
    Func testgui()
    $Form1 = GUICreate("Testgui", 746, 450, 258, 119)
    $Group2 = GUICtrlCreateGroup("Spalten Löschen für & $neulabel", 4, 30, 737, 338, BitOR($GUI_SS_DEFAULT_GROUP,$BS_LEFT))
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Radioeinaus1 = GUICtrlCreateRadio("testtabelle1", 305, 401, 89, 17, BitOR($GUI_SS_DEFAULT_RADIO,$BS_LEFT))
    $Radioeinaus2 = GUICtrlCreateRadio("testtabelle2", 403, 401, 73, 17, BitOR($GUI_SS_DEFAULT_RADIO,$BS_LEFT))
    $beenden = GUICtrlCreateButton("Beenden", 500, 395, 120, 25)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW)
    GUISetOnEvent($GUI_EVENT_CLOSE, "beenden")
    GUICtrlSetOnEvent($Radioeinaus1, "testtabelle1")
    ; GUICtrlSetOnEvent($Radioeinaus2, "testtabelle2")
    GUICtrlSetOnEvent($beenden, "beenden")

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    Sleep(50)
    WEnd
    EndFunc;==>testgui

    [/autoit] [autoit][/autoit] [autoit]

    Func testtabelle1()
    $Open = FileOpenDialog("",@ScriptDir,"(test1.xls)")
    $oExcel = _ExcelBookOpen($Open, 0)
    $Spalten = $oExcel.Worksheets(1).UsedRange.Columns.Count
    Local $Checkbox[$Spalten+1]
    Dim $aArray = _ExcelReadArray($oExcel, 1, 1, $Spalten, 0, 1)
    _ExcelBookClose($oExcel,0,0)
    For $i = 1 To $aArray[0]
    IniWrite(@ScriptDir & "\test.ini", "Zeile1", $aArray[$i], BitAND(GUICtrlRead($Checkbox[$i]), $GUI_CHECKED))
    Next

    [/autoit] [autoit][/autoit] [autoit]

    $var = IniReadSection( @ScriptDir & "\test.ini", "Zeile1")
    If @error Then
    MsgBox(4096, "", "Es ist ein Fehler aufgetreten. Warscheinlich keine INI Datei vorhanden.")
    Else

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 1 To $var[0][0]
    $top = 25 + ($i * 20)
    $left = 25
    If $top > 345 and $left = 25 Then
    $left = $left + 175
    $top = $top - 320
    EndIf
    If $top > 345 and $left = 200 Then
    $left = $left + 175
    $top = $top - 320
    EndIf
    If $top > 345 and $left = 375 Then
    $left = $left + 175
    $top = $top - 320
    EndIf
    If $top > 345 and $left = 550 Then
    $left = $left + 175
    $top = $top - 320
    EndIf
    $Checkbox[$i] = GUICtrlCreateCheckbox($var[$i][0], $left, $top, 175, 17)
    If $var[$i][1] = 1 Then GUICtrlSetState($Checkbox[$i], $GUI_CHECKED)
    Next
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc;==>testtabelle1
    #cs
    Func testtabelle2()
    $Open = FileOpenDialog("",@ScriptDir,"(test2.xls)")
    $oExcel = _ExcelBookOpen($Open)
    $Spalten = $oExcel.Worksheets(1).UsedRange.Columns.Count
    $Spalten = $Spalten+2
    Local $Checkbox[$Spalten]
    Dim $aArray[$Spalten]
    For $i = 1 To UBound($aArray) -1
    $aArray[$i] = _ExcelReadArray($oExcel, 1, $i, 1, 1)
    _ArrayToClip($aArray[$i])
    $ddd = (ClipGet())
    IniWrite(@ScriptDir & "\test.ini", "Zeile2", $ddd, "")
    Next
    _ExcelBookClose($oExcel)
    $var = IniReadSection( @ScriptDir & "\test.ini", "Zeile2")
    If @error Then
    MsgBox(4096, "", "Es ist ein Fehler aufgetreten. Warscheinlich keine INI Datei vorhanden.")
    Else

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 1 To $var[0][0]-1
    $top = 25 + ($i * 20);
    $left = 25;
    If $top > 345 and $left = 25 Then
    $left = $left + 175
    $top = $top - 320
    EndIf
    If $top > 345 and $left = 200 Then
    $left = $left + 175
    $top = $top - 320
    EndIf
    If $top > 345 and $left = 375 Then
    $left = $left + 175
    $top = $top - 320
    EndIf
    If $top > 345 and $left = 550 Then
    $left = $left + 175
    $top = $top - 320
    EndIf
    $Checkbox[$i] = GUICtrlCreateCheckbox($var[$i][0], $left, $top, 175, 17)
    Next
    EndIf
    EndFunc;==>testtabelle2
    #ce
    Func beenden()
    Exit
    EndFunc;==>beenden

    [/autoit]

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • Schnuffel,

    erst einmal Danke das du dir die Zeit genommen hast da reinzuschauen und aufzuräumen. :thumbup:
    Habe mich wohl etwas falsch ausgedrückt ( mal wieder ). Sorry

    Wenn die Gui erneut gestartet wird soll sie sich aus der test.ini die Checkboxen generieren und auch direkt die vorher angehakten Checkboxen wieder Checken aus der
    test.ini heraus.
    Möchte nicht per Hand in der *.ini die Checkboxen checken sondern über das skript selber. Oder habe ich da was falsch Verstanden ?
    Habe auch mal Probiert deine Version so einzubauen aber komme da zu keinen Ergebnis.

    Habe mal das Testskript dementsprechend angepasst.

    Testskript
    [autoit]

    #include <GuiDateTimePicker.au3>
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GUIListBox.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <ComboConstants.au3>
    #include <DateTimeConstants.au3>
    #include <EditConstants.au3>
    #include <Excel.au3>
    #include <Array.au3>
    #include <File.au3>
    #include <GuiComboBox.au3>
    #include <Date.au3>
    #include <GuiListView.au3>
    #include <ListViewConstants.au3>
    #include <string.au3>

    [/autoit] [autoit][/autoit] [autoit]

    #include <Misc.au3>

    [/autoit] [autoit][/autoit] [autoit]

    #include <GuiEdit.au3>
    #include <GuiConstantsEx.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Opt("GUIOnEventMode", 1)

    [/autoit] [autoit][/autoit] [autoit]

    testgui()

    [/autoit] [autoit][/autoit] [autoit]

    Func testgui()
    $Form1 = GUICreate("Testgui", 746, 450, 258, 119)
    $Group2 = GUICtrlCreateGroup("Spalten Löschen für & $neulabel", 4, 30, 737, 338, BitOR($GUI_SS_DEFAULT_GROUP,$BS_LEFT))
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Button1 = GUICtrlCreateButton("Tabelle Öffnen", 100, 401, 89, 25)
    $Button2 = GUICtrlCreateButton("Speichern", 200, 401, 89, 25)
    $beenden = GUICtrlCreateButton("Beenden", 500, 401, 120, 25)

    [/autoit] [autoit][/autoit] [autoit]

    $var = IniReadSection( @ScriptDir & "\test.ini", "Zeile1")
    If @error Then
    MsgBox(64,"Test", "Es ist noch kein Eintrag vorhanden")
    neu1()
    Else
    Local $Spalten = IniRead(@ScriptDir & "\test.ini", "Spaltenzahl", "spalten", "")
    Local $Checkbox[$Spalten+1]
    $var = IniReadSection( @ScriptDir & "\test.ini", "Zeile1")
    For $i = 1 To $var[0][0]
    $top = 25 + ($i * 20)
    $left = 25
    If $top > 345 and $left = 25 Then
    $left = $left + 175
    $top = $top - 320
    EndIf
    If $top > 345 and $left = 200 Then
    $left = $left + 175
    $top = $top - 320
    EndIf
    If $top > 345 and $left = 375 Then
    $left = $left + 175
    $top = $top - 320
    EndIf
    If $top > 345 and $left = 550 Then
    $left = $left + 175
    $top = $top - 320
    EndIf
    $Checkbox[$i] = GUICtrlCreateCheckbox($var[$i][0], $left, $top, 175, 17)
    If $var[$i][1] = 1 Then GUICtrlSetState($Checkbox[$i], $GUI_CHECKED)
    Next
    EndIf
    GUISetState(@SW_SHOW)
    GUISetOnEvent($GUI_EVENT_CLOSE, "beenden")
    GUICtrlSetOnEvent($Button1, "neu1")
    GUICtrlSetOnEvent($Button2, "speichern")
    GUICtrlSetOnEvent($beenden, "beenden")

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    Sleep(50)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc;==>testgui

    [/autoit] [autoit][/autoit] [autoit]

    Func neu1()
    IniWrite(@ScriptDir & "\test.ini", "Spaltenzahl", "", "")
    $Open = FileOpenDialog("",@ScriptDir,"(test1.xls)")
    $oExcel = _ExcelBookOpen($Open, 0)
    $Spalten = $oExcel.Worksheets(1).UsedRange.Columns.Count
    IniWrite(@ScriptDir & "\test.ini", "Spaltenzahl", "spalten", $Spalten)
    Local $Checkbox[$Spalten+1]
    $aArray = _ExcelReadArray($oExcel, 1, 1, $Spalten, 0, 1)
    _ExcelBookClose($oExcel,0,0)

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 1 To $aArray[0]
    IniWrite(@ScriptDir & "\test.ini", "Zeile1", $aArray[$i], BitAND(GUICtrlRead($Checkbox[$i]), $GUI_CHECKED))
    Next
    $var = IniReadSection( @ScriptDir & "\test.ini", "Zeile1")
    For $i = 1 To $var[0][0]
    $top = 25 + ($i * 20)
    $left = 25
    If $top > 345 and $left = 25 Then
    $left = $left + 175
    $top = $top - 320
    EndIf
    If $top > 345 and $left = 200 Then
    $left = $left + 175
    $top = $top - 320
    EndIf
    If $top > 345 and $left = 375 Then
    $left = $left + 175
    $top = $top - 320
    EndIf
    If $top > 345 and $left = 550 Then
    $left = $left + 175
    $top = $top - 320
    EndIf
    $Checkbox[$i] = GUICtrlCreateCheckbox($var[$i][0], $left, $top, 175, 17)
    If $var[$i][1] = 1 Then GUICtrlSetState($Checkbox[$i], $GUI_CHECKED)
    Next

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc;==>neu1

    [/autoit] [autoit][/autoit] [autoit]

    Func speichern()
    MsgBox(64,"Speichern", "Hier würde ich gerne den Status der Checkboxen abspeichern lassen in der test.ini. Als 1=checkt oder 0=uncheckt" & @CRLF & "" & @CRLF & "Nur habe ich keine Ahnung wie man das umsetzen kann.")
    EndFunc;==>speichern

    [/autoit] [autoit][/autoit] [autoit]

    Func beenden()
    Exit
    EndFunc;==>beenden

    [/autoit]


    mfg
    oh-ha

    Es gibt drei Wahrheiten: deine Wahrheit, meine Wahrheit und die Wahrheit

  • @m-obi
    Macht es automatisch nach der Anzahl der Spalten in der Excel-Tabelle. Post1 hatte ich eine test.xls an gehangen.
    Das Skript aus Post3 ist lauffähig + der Excel-Tabelle aus post1

    Hier werden die Checkboxen angeordnet nach der Anzahl der Spalten in der excel -Tabelle.

    [autoit]

    For $i = 1 To $var[0][0]
    $top = 25 + ($i * 20)
    $left = 25
    If $top > 345 and $left = 25 Then
    $left = $left + 175
    $top = $top - 320
    EndIf
    If $top > 345 and $left = 200 Then
    $left = $left + 175
    $top = $top - 320
    EndIf
    If $top > 345 and $left = 375 Then
    $left = $left + 175
    $top = $top - 320
    EndIf
    If $top > 345 and $left = 550 Then
    $left = $left + 175
    $top = $top - 320
    EndIf
    $Checkbox[$i] = GUICtrlCreateCheckbox($var[$i][0], $left, $top, 175, 17)

    [/autoit]

    mfg
    oh-ha

    Es gibt drei Wahrheiten: deine Wahrheit, meine Wahrheit und die Wahrheit

  • Teste mal das (hab es aber nicht mit 0/1 gemacht, sondern ja/nein):

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    #include <GUIConstantsEx.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Opt("GUIOnEventMode", 1)

    [/autoit] [autoit][/autoit] [autoit]

    Global $sIniFilename = "test.ini"
    Global $aCheckbox[1], $iLeft = 30, $iTop = 20, $iLeftOffset, $iTopOffset = -20

    [/autoit] [autoit][/autoit] [autoit]

    $hGui = GUICreate("Gui", 600, 400)
    $aIni = IniReadSection($sIniFilename, "Zeile1")
    ReDim $aCheckbox[$aIni[0][0]]
    For $i = 1 To $aIni[0][0]
    If IsInt($i / 17) Then
    $iLeftOffset += 200
    $iTopOffset = 0
    Else
    $iTopOffset += 20
    EndIf
    $aCheckbox[$i - 1] = GUICtrlCreateCheckbox($aIni[$i][0], $iLeft + $iLeftOffset, $iTop + $iTopOffset, 175, 17)
    If $aIni[$i][1] = "ja" Then GUICtrlSetState(-1, $GUI_CHECKED)
    Next
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    Sleep(100)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _Exit()
    Exit
    EndFunc

    [/autoit]
  • Hi!

    Beispiel:

    [autoit]

    Func speichern()
    For $i = 0 To UBound($Checkbox) - 1
    If _GUICtrlButton_GetCheck($Checkbox[$i]) Then ConsoleWrite(GUICtrlRead($Checkbox[$i], 1) & @CRLF)
    Next
    EndFunc ;==>speichern

    [/autoit]

    Lg Kleiner

  • Hier mit Speichern:

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    #include <GUIConstantsEx.au3>
    #include <Misc.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Opt("GUIOnEventMode", 1)

    [/autoit] [autoit][/autoit] [autoit]

    Global $sIniFilename = "test.ini"
    Global $aCheckbox[1], $iLeft = 30, $iTop = 60, $iLeftOffset, $iTopOffset = -20

    [/autoit] [autoit][/autoit] [autoit]

    $hGui = GUICreate("Gui", 600, 400)
    $hSave = GUICtrlCreateButton("Speichern", 20, 20, 80, 25)
    $aIni = IniReadSection($sIniFilename, "Zeile1")
    ReDim $aCheckbox[$aIni[0][0]]
    For $i = 1 To $aIni[0][0]
    If IsInt($i / 17) Then
    $iLeftOffset += 200
    $iTopOffset = 0
    Else
    $iTopOffset += 20
    EndIf
    $aCheckbox[$i - 1] = GUICtrlCreateCheckbox($aIni[$i][0], $iLeft + $iLeftOffset, $iTop + $iTopOffset, 175, 17)
    If $aIni[$i][1] = "ja" Then GUICtrlSetState(-1, $GUI_CHECKED)
    Next
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
    GUICtrlSetOnEvent($hSave, "_Save")

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    Sleep(100)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _Save()
    For $i = 0 To UBound($aCheckbox) - 1
    IniWrite($sIniFilename, "Zeile1", ControlGetText($hGui, "", $aCheckbox[$i]), _Iif(BitAND(GUICtrlRead($aCheckbox[$i]), $GUI_CHECKED), "ja", "nein"))
    Next
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _Exit()
    Exit
    EndFunc

    [/autoit]
  • @ m-obi
    Das funktioniert Danke :thumbup: Bei dem " waum " hakt es bei mir :?:
    Muß ich mir ersteinmal in ruhe Anschauen.

    Kleiner
    Danke auch dir für den Denkanstoß


    mfg
    oh-ha

    Es gibt drei Wahrheiten: deine Wahrheit, meine Wahrheit und die Wahrheit

  • Hier meine Version von 2009:

    Spoiler anzeigen
    [autoit]


    ;Coded by UEZ 2009
    #include <WindowsConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    #include <StructureConstants.au3>
    #include <GUIConstantsEx.au3>

    [/autoit] [autoit][/autoit] [autoit]

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Ini File Test", 237, 143)
    $Checkbox1 = GUICtrlCreateCheckbox("Convert X", 8, 8, 97, 17)
    $Checkbox2 = GUICtrlCreateCheckbox("Convert Y", 8, 40, 97, 17)
    $Checkbox3 = GUICtrlCreateCheckbox("Convert Z", 8, 72, 97, 17)
    $Input1 = GUICtrlCreateInput("", 105, 8, 121, 21)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $Input2 = GUICtrlCreateInput("", 105, 40, 121, 21)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $Input3 = GUICtrlCreateInput("", 105, 72, 121, 21)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $Button1 = GUICtrlCreateButton("Load", 8, 104, 75, 25, 0)
    $Button2 = GUICtrlCreateButton("Save", 153, 104, 75, 25, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

    [/autoit] [autoit][/autoit] [autoit]

    Case $Button1
    Load()

    [/autoit] [autoit][/autoit] [autoit]

    Case $Button2
    Save()

    [/autoit] [autoit][/autoit] [autoit]

    Case $Checkbox1
    If BitAND(GUICtrlRead($Checkbox1), $GUI_CHECKED) Then
    GUICtrlSetState($Input1, $GUI_ENABLE)
    Else
    GUICtrlSetState($Input1, $GUI_DISABLE)
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Case $Checkbox2
    If BitAND(GUICtrlRead($Checkbox2), $GUI_CHECKED) Then
    GUICtrlSetState($Input2, $GUI_ENABLE)
    Else
    GUICtrlSetState($Input2, $GUI_DISABLE)
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Case $Checkbox3
    If BitAND(GUICtrlRead($Checkbox3), $GUI_CHECKED) Then
    GUICtrlSetState($Input3, $GUI_ENABLE)
    Else
    GUICtrlSetState($Input3, $GUI_DISABLE)
    EndIf
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func Save()
    Local $ini, $save_file, $hfile, $filename, $dummy_array
    Local $filename_suffix = ".ini"
    Local $save_path = @ScriptDir
    $filename = ""
    $filename = FileSaveDialog("Save to Ini Files", $save_path, "Ini Files (*" & $filename_suffix & ")|All Files(*.*)", 16)
    If $filename <> "" Then
    $dummy_array = StringSplit($filename, ".")
    If UBound($dummy_array) > 0 Then
    $filename = $dummy_array[1] & $filename_suffix
    Else
    $filename = $filename_suffix
    EndIf
    If Not @error Then
    $ini = "[Input Section]" & @CRLF & _
    "Convert X=" & GUICtrlRead($Input1) & @CRLF & _
    "Convert Y=" & GUICtrlRead($Input2) & @CRLF & _
    "Convert Z=" & GUICtrlRead($Input3) & @CRLF & @CRLF & _
    "[Checkbox Section]" & @CRLF & _
    "Checkbox1=" & GUICtrlRead($Checkbox1) & @CRLF & _
    "Checkbox2=" & GUICtrlRead($Checkbox2) & @CRLF & _
    "Checkbox3=" & GUICtrlRead($Checkbox3) & @CRLF
    $hfile = FileOpen($filename, 2)
    FileWrite($filename, $ini)
    FileClose($hfile)
    EndIf
    EndIf
    EndFunc ;==>Save

    [/autoit] [autoit][/autoit] [autoit]

    Func Load()
    Local $filename, $hfile, $aInput, $aCheckbox, $i
    Local $filename_suffix = ".ini"
    Local $load_path = @ScriptDir
    $filename = FileOpenDialog("Load Ini File", $load_path, "Ini Files (*" & $filename_suffix & ")|All Files(*.*)", 1)
    If Not @error Then
    $aInput = IniReadSection($filename, "Input Section")
    $aCheckbox = IniReadSection($filename, "Checkbox Section")
    GUICtrlSetData($Input1, $aInput[1][1])
    GUICtrlSetData($Input2, $aInput[2][1])
    GUICtrlSetData($Input3, $aInput[3][1])
    If $aCheckbox[1][1] = 1 Then
    GUICtrlSetState($Checkbox1, $GUI_CHECKED)
    GUICtrlSetState($Input1, $GUI_ENABLE)
    Else
    GUICtrlSetState($Checkbox1, $GUI_UNCHECKED)
    GUICtrlSetState($Input1, $GUI_DISABLE)
    EndIf
    If $aCheckbox[2][1] = 1 Then
    GUICtrlSetState($Checkbox2, $GUI_CHECKED)
    GUICtrlSetState($Input2, $GUI_ENABLE)
    Else
    GUICtrlSetState($Checkbox2, $GUI_UNCHECKED)
    GUICtrlSetState($Input2, $GUI_DISABLE)
    EndIf
    If $aCheckbox[3][1] = 1 Then
    GUICtrlSetState($Checkbox3, $GUI_CHECKED)
    GUICtrlSetState($Input3, $GUI_ENABLE)
    Else
    GUICtrlSetState($Checkbox3, $GUI_UNCHECKED)
    GUICtrlSetState($Input3, $GUI_DISABLE)
    EndIf
    EndIf
    EndFunc

    [/autoit]


    Keine Checks, ob das Ini File das Richtige ist!

    Gruß,
    UEZ

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

    2 Mal editiert, zuletzt von UEZ (22. Oktober 2010 um 11:27)

  • UEZ

    Oh man sorry habe ich in der Suche nicht gefunden.
    Bin da jetzt schon ein paar Tage dran am basteln und immer wieder die Suche benutzt aber nichts passendes gefunden.
    War aber wohl auch auf den falschen Dampfer da ich mehr versucht hatte das über die ID´s der Checkboxen zu machen, was wohl nicht möglich ist.
    Werde mir auch deinen Ansatz mal anschauen um mein wissen ein wenig zu erweitern.

    Danke euch für die wirklich einmalige Hilfe die man hier bei autoit.de bekommt.


    mfg
    oh-ha

    Es gibt drei Wahrheiten: deine Wahrheit, meine Wahrheit und die Wahrheit

  • Die Id´s der Checkboxen nach dem generieren der Checkboxen auslesen und dann halt in der *.ini abspeichern.
    Aber da die ID´s immer anders waren nach einen Neustart bin ich da gescheitert.

    mfg
    oh-ha

    Es gibt drei Wahrheiten: deine Wahrheit, meine Wahrheit und die Wahrheit

  • Wenn ich mir meinen Code anschaue, dann gefällt er mir nicht!

    Werde ihn mal aktualisieren.

    Gruß,
    UEZ

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

  • LOL

    Hätte ich es mal so weit gebracht wäre ich stolz drauf.
    Ist wohl immer eine Sache des Betrachters.

    mfg
    oh-ha

    Es gibt drei Wahrheiten: deine Wahrheit, meine Wahrheit und die Wahrheit

  • Ich hab eine Frage dazu, und zwar nutze ich das Variable anzeigen von den Checkboxen so:

    Spoiler anzeigen
    [autoit]


    Global $aCheckbox[1], $iLeft = 30, $iTop = 60, $iLeftOffset, $iTopOffset = -20
    $aIni = IniReadSectionNames("campaign.ini")
    If $aIni[0] <= 30 Then
    $Kampagnechoose = GUICreate("Kampagnenauswahl", 290, 400, 243, 166, $WS_CAPTION, -1)
    $KampchooseLabel1 = GUICtrlCreateLabel("Kampagnen auswählen", 0, 0, 264, 31, $SS_CENTER)
    GUICtrlSetFont($KampchooseLabel1, 14, 800, 0, "MS Sans Serif")
    $Kampchoosestart = GUICtrlCreateButton("Starten", 160, 352, 97, 33, $WS_GROUP)
    $KampChooseCancel = GUICtrlCreateButton("Abbrechen", 176, 360, 105, 33, $WS_GROUP)
    ReDim $aCheckbox[$aIni[0]]
    For $i = 1 To $aIni[0]
    If IsInt($i / 16) Then
    $iLeftOffset += 130
    $iTopOffset = 0
    Else
    $iTopOffset += 20
    EndIf
    $aCheckbox[$i - 1] = GUICtrlCreateCheckbox($aIni[$i], $iLeft + $iLeftOffset, $iTop + $iTopOffset, 120, 17, $WS_BORDER )
    Next
    ElseIf 30 < $aIni[0] < 60 Then
    $Kampagnechoose = GUICreate("Kampagnenauswahl", 560, 700, 243, 166, $WS_CAPTION, -1)
    $KampchooseLabel1 = GUICtrlCreateLabel("Kampagnen auswählen", 0, 0, 264, 31, $SS_CENTER)
    GUICtrlSetFont($KampchooseLabel1, 14, 800, 0, "MS Sans Serif")
    $Kampchoosestart = GUICtrlCreateButton("Starten", 224, 664, 97, 33, $WS_GROUP)
    $KampChooseCancel = GUICtrlCreateButton("Abbrechen", 320, 664, 97, 33, $WS_GROUP)
    ReDim $aCheckbox[$aIni[0]]
    For $i = 1 To $aIni[0]
    If IsInt($i / 31) Then
    $iLeftOffset += 130
    $iTopOffset = 0
    Else
    $iTopOffset += 20
    EndIf
    $aCheckbox[$i - 1] = GUICtrlCreateCheckbox($aIni[$i], $iLeft + $iLeftOffset, $iTop + $iTopOffset, 120, 17, $WS_BORDER)
    Next
    EndIf

    [/autoit]

    Allerdings wird die Datei campaign.ini auch über ein anderes TeilGUI verändert, die Variablen werden aber bereits beim Start berechnet. Wenn der Benutzer also eine neue Kampagne hinzufügt oder eine bestehende verändert und somit auch die campaign.ini Datei, wird diese Veränderung nicht mehr angezeigt sondern die Werte beim Programmstart.
    Kann jemand helfen ?