Wie macht man es das wenn ich Jetzt in meinem programm auf eine Checkbox klicke es gespeichert wird so das es beim nächsten mal wieder so ist wie vorher?
Checkbox speichern
-
- [ offen ]
-
Goldy -
19. September 2010 um 20:13 -
Geschlossen -
Erledigt
-
-
- Offizieller Beitrag
Speichere den Status in einer INI-Datei.
Beim Start lädst du die INI und setzt danach CHECKED oder UNCHECKED. -
Mhmm...könntes du mir dafür ein beispiel code geben ?
In der Hilfe habe ich nichts dazu gefundenDas wird dann aber ne große .ini xD
Locker 200 Einträge
-
- Offizieller Beitrag
Wenn es größer wird - mit Array arbeiten.
Mal als grobes Bsp.:Spoiler anzeigen
[autoit]Local $INI = @ScriptDir & '\MEINE.INI' ; <== deine INI-Datei
[/autoit] [autoit][/autoit] [autoit]Local $aCheckBox[200][2] ; <== zum Speichern Checkbox-ID und Status
[/autoit] [autoit][/autoit] [autoit]If Not FileExists($INI) Then ; wenn INI noch nicht existiert, wird sie angelegt
[/autoit] [autoit][/autoit] [autoit]
For $i = 0 To UBound($aCheckBox) -1
IniWrite($INI, 'settings_CB', 'CheckBox' & $i, 0) ; erster Wert 0=UNCHECKED
$aCheckBox[$i][1] = 0
Next
EndIf;...
[/autoit] [autoit][/autoit] [autoit]
;...; GUI erstellen und Checkboxstatus auslesen - setzen
[/autoit]
$gui = GUICreate('..')
For $i = 0 To UBound($aCheckBox) -1
$aCheckBox[$i][0] = GUICtrlCreateCheckbox('...', .....)
$aCheckBox[$i][1] = IniRead($INI, 'settings_CB', 'CheckBox' & $i, 0)
If $aCheckBox[$i][1] Then
GUICtrlSetState($aCheckBox[$i][0], $GUI_CHECKED)
Else
GUICtrlSetState($aCheckBox[$i][0], $GUI_UNCHECKED)
EndIf
Next -
Hallo Goldy,
so z.B.:
Spoiler anzeigen
[autoit]#include <ButtonConstants.au3>
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
#include <Constants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>;Global $Checkbox1, $Checkbox2, $Checkbox3, $Checkbox4, $chk1, $chk2, $chk3, $chk4
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Global $ini = @ScriptDir & "\CheckBox.Test"$chk1 = IniRead($ini, "Checks", "1", False)
[/autoit] [autoit][/autoit] [autoit]
$chk2 = IniRead($ini, "Checks", "2", False)
$chk3 = IniRead($ini, "Checks", "3", False)
$chk4 = IniRead($ini, "Checks", "4", False)
GUICreate("Ckeckbox-Demo MSG-LOOP-Modus", 300, 300)$Checkbox1 = GUICtrlCreateCheckbox("1. Checkbox", 20, 40, 1250)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetState(-1, $chk1)
$Checkbox2 = GUICtrlCreateCheckbox("2. Checkbox", 20, 70, 1250)
GUICtrlSetState(-1, $chk2)
$Checkbox3 = GUICtrlCreateCheckbox("3. Checkbox", 20, 100, 1250)
GUICtrlSetState(-1, $chk3)
$Checkbox4 = GUICtrlCreateCheckbox("4. Checkbox", 20, 130, 1250)
GUICtrlSetState(-1, $chk4)
$DL = GUICtrlCreateButton("Download", 50, 250, 80)GUISetState(@SW_SHOW)
[/autoit]
While 1
$Msg = GUIGetMsg()
Switch $Msg
Case $GUI_EVENT_CLOSE
IniWrite($ini, "Checks", "1", GUICtrlRead($Checkbox1))
IniWrite($ini, "Checks", "2", GUICtrlRead($Checkbox2))
IniWrite($ini, "Checks", "3", GUICtrlRead($Checkbox3))
IniWrite($ini, "Checks", "4", GUICtrlRead($Checkbox4))
Exit
Case $DL
If BitAND(GUICtrlRead($Checkbox1), $GUI_CHECKED) = $GUI_CHECKED Then
MsgBox(0, "1. Checkbox", "ist angeCHECKED")
;InetGet verwenden zum downloaden
Else
MsgBox(0, "1. Checkbox", "ist nicht angeCHECKED")
EndIf
If BitAND(GUICtrlRead($Checkbox2), $GUI_CHECKED) = $GUI_CHECKED Then
MsgBox(0, "2. Checkbox", "ist angeCHECKED")
Else
MsgBox(0, "2. Checkbox", "ist nicht angeCHECKED")
EndIf
If BitAND(GUICtrlRead($Checkbox3), $GUI_CHECKED) = $GUI_CHECKED Then
MsgBox(0, "3. Checkbox", "ist angeCHECKED")
;InetGet verwenden zum downloaden
Else
MsgBox(0, "3. Checkbox", "ist nicht angeCHECKED")
EndIf
If BitAND(GUICtrlRead($Checkbox4), $GUI_CHECKED) = $GUI_CHECKED Then
MsgBox(0, "4. Checkbox", "ist angeCHECKED")
Else
MsgBox(0, "4. Checkbox", "ist nicht angeCHECKED")
EndIf
EndSwitch
WEndMhmm...könntes du mir dafür ein beispiel code geben ?
In der Hilfe habe ich nichts dazu gefundendu solltest lernen mit dem wichtigsten Werkzeug der Hilfe umzugehen, und dir vor allem einmal die Stanadard-Funktionen (ohne UDFs) durchlesen, notfalls mehrmals.
mfg autoBert
-
Hallo Goldy,
so z.B.:
Spoiler anzeigen
[autoit]#include <ButtonConstants.au3>
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
#include <Constants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>;Global $Checkbox1, $Checkbox2, $Checkbox3, $Checkbox4, $chk1, $chk2, $chk3, $chk4
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Global $ini = @ScriptDir & "\CheckBox.Test"$chk1 = IniRead($ini, "Checks", "1", False)
[/autoit] [autoit][/autoit] [autoit]
$chk2 = IniRead($ini, "Checks", "2", False)
$chk3 = IniRead($ini, "Checks", "3", False)
$chk4 = IniRead($ini, "Checks", "4", False)
GUICreate("Ckeckbox-Demo MSG-LOOP-Modus", 300, 300)$Checkbox1 = GUICtrlCreateCheckbox("1. Checkbox", 20, 40, 1250)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetState(-1, $chk1)
$Checkbox2 = GUICtrlCreateCheckbox("2. Checkbox", 20, 70, 1250)
GUICtrlSetState(-1, $chk2)
$Checkbox3 = GUICtrlCreateCheckbox("3. Checkbox", 20, 100, 1250)
GUICtrlSetState(-1, $chk3)
$Checkbox4 = GUICtrlCreateCheckbox("4. Checkbox", 20, 130, 1250)
GUICtrlSetState(-1, $chk4)
$DL = GUICtrlCreateButton("Download", 50, 250, 80)GUISetState(@SW_SHOW)
[/autoit]
While 1
$Msg = GUIGetMsg()
Switch $Msg
Case $GUI_EVENT_CLOSE
IniWrite($ini, "Checks", "1", GUICtrlRead($Checkbox1))
IniWrite($ini, "Checks", "2", GUICtrlRead($Checkbox2))
IniWrite($ini, "Checks", "3", GUICtrlRead($Checkbox3))
IniWrite($ini, "Checks", "4", GUICtrlRead($Checkbox4))
Exit
Case $DL
If BitAND(GUICtrlRead($Checkbox1), $GUI_CHECKED) = $GUI_CHECKED Then
MsgBox(0, "1. Checkbox", "ist angeCHECKED")
;InetGet verwenden zum downloaden
Else
MsgBox(0, "1. Checkbox", "ist nicht angeCHECKED")
EndIf
If BitAND(GUICtrlRead($Checkbox2), $GUI_CHECKED) = $GUI_CHECKED Then
MsgBox(0, "2. Checkbox", "ist angeCHECKED")
Else
MsgBox(0, "2. Checkbox", "ist nicht angeCHECKED")
EndIf
If BitAND(GUICtrlRead($Checkbox3), $GUI_CHECKED) = $GUI_CHECKED Then
MsgBox(0, "3. Checkbox", "ist angeCHECKED")
;InetGet verwenden zum downloaden
Else
MsgBox(0, "3. Checkbox", "ist nicht angeCHECKED")
EndIf
If BitAND(GUICtrlRead($Checkbox4), $GUI_CHECKED) = $GUI_CHECKED Then
MsgBox(0, "4. Checkbox", "ist angeCHECKED")
Else
MsgBox(0, "4. Checkbox", "ist nicht angeCHECKED")
EndIf
EndSwitch
WEnddu solltest lernen mit dem wichtigsten Werkzeug der Hilfe umzugehen, und dir vor allem einmal die Stanadard-Funktionen (ohne UDFs) durchlesen, notfalls mehrmals.
mfg autoBert
Also müsste ich :
[autoit]If BitAND(GUICtrlRead($Checkbox1), $GUI_CHECKED) = $GUI_CHECKED Then
[/autoit]
MsgBox(0, "1. Checkbox", "ist angeCHECKED")
;InetGet verwenden zum downloaden
Else
MsgBox(0, "1. Checkbox", "ist nicht angeCHECKED")
EndIfImmer wieder wiederholen bis ich an meine zur zeit 60 Checkboxen bin?
-
Hallo Goldy,
dir ging es doch nur um das speichern, laden. Den Skriptteil mit den MsgBoxen brauchst du doch dazu gar nicht. Du Kannst aber die ControlIds auch in einem Array speichern und dann in einer Schleife (am besten For ... Next) alle durchgehen,
mfg autoBert