Brauche Hilfe bei GUICtrlCreateCheckbox -> Variable mit Wert erstellen

  • Nachdem ich Stunden damit verbracht habe, hoffe ich, dass ihr mir weiter helfen könnt... Mein Problem ist folgendes:
    Es soll ein Wert ("0" oder "1") aus einer .ini ausgelesen werden, dieser prüft ob die Checkbox aktiviert ist oder nicht (Wenn ich den Wert in die .ini Datei eintrage, funktioniert das auch soweit). Sobald ich aber einen Haken in der GUI setze und über eine Funktion den Wert wieder in die .ini schreiben will funktiniert das nicht, ich vermute mal das er nur den UNCHECKED Wert speichert und nicht den aktuellen Zustand. Ich weiß schon mittlerweile nicht mehr was fürn KOT ich da produziere, da mich das immer mehr verwirrt... ich hoffe ihr könnt mir da weiterhelfen. Hier der derzeite Stand:

    [autoit]

    $Auto_Login = GUICtrlCreateCheckbox("", 136, 136, 25, 33)

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

    If GUICtrlRead($Auto_Login) = $GUI_CHECKED Then
    $Login = 1
    EndIf

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

    If GUICtrlRead($Auto_Login) = $GUI_UNCHECKED Then
    $Login = 0
    EndIf

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

    If $Login = 1 Then
    GUICtrlSetState($Auto_Login, $GUI_CHECKED)
    else
    GUICtrlSetState($Auto_Login, $GUI_UNCHECKED)
    EndIf

    [/autoit]

    Einmal editiert, zuletzt von Zeo-X2 (25. August 2009 um 00:44)

  • [autoit]


    ;gui
    $Auto_Login = GUICtrlCreateCheckbox("", 136, 136, 25, 33)
    ;gui ende anfang config laden bzw setzen
    ;$Login = iniread() dein bereich eintragen
    If $Login = 1 Then
    GUICtrlSetState($Auto_Login, $GUI_CHECKED)
    else
    GUICtrlSetState($Auto_Login, $GUI_UNCHECKED)
    EndIf

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

    ; Überprüfung was in die Schleife gehört
    If GUICtrlRead($Auto_Login) = 1 and $Login = 0 Then
    $Login = 1
    ;iniwrite status 1 speichern
    elseif GUICtrlRead($Auto_Login) <> 1 and $Login = 1 then
    $Login = 0
    ;iniwrite status 0 speichern
    EndIf

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

    am besten immer ganze script posten ;)
    du prüftst die sachen ja sicher in einer schleife

    2 Mal editiert, zuletzt von Gummibaer (24. August 2009 um 23:40)

  • Funktioniert leider nicht...

    Hier nochmal weiterer Code:

    [autoit]

    $Login = IniRead("conf/config.ini", "Login", "Login_Check", "0") ;iniread

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

    $Auto_Login = GUICtrlCreateCheckbox("", 136, 136, 25, 33)
    If GUICtrlRead($Auto_Login) = 1 and $Login = 0 Then
    $Login = 1
    ;iniwrite status 1 speichern
    elseif GUICtrlRead($Auto_Login) <> 1 and $Login = 1 then
    $Login = 0
    ;iniwrite status 0 speichern
    EndIf

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

    If $Login = 1 Then
    GUICtrlSetState($Auto_Login, $GUI_CHECKED)
    else
    GUICtrlSetState($Auto_Login, $GUI_UNCHECKED)
    EndIf

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

    Func _Save() ; Wird über ein Menü mit GUICtrlSetOnEvent aufgerufen.
    IniWrite("conf/config.ini", "Login", "Login_Check",$Login)
    EndFunc;==>_Save

    [/autoit]
  • Datei: checkbox.au3

    [autoit]

    #include <ButtonConstants.au3>
    #include <ComboConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GUIConstants.au3>
    #include <StaticConstants.au3>
    #include <TabConstants.au3>
    #include <WindowsConstants.au3>
    #include "includes\tray.au3"
    ;#include "includes\open.au3"
    #include "includes\fn_save.au3"
    ;#include "includes\default.au3"
    ;#include "includes\about.au3"
    ;//-----------------------------
    HotKeySet("{END}", "MyExit")
    Func MyExit()
    Exit
    EndFunc
    ;//-----------------------------
    Opt('GUIOnEventMode', '1')
    Opt('TrayMenuMode', '1')
    Opt('TrayOnEventMode', '1')
    Opt('MustDeclareVars', '0')
    TraySetToolTip('&')
    TraySetClick('15')
    $Tray = TrayCreateMenu('Options')
    TrayCreateItem('Hide', $Tray)
    TrayItemSetOnEvent('-1', '_Hide')
    TrayCreateItem('Show', $Tray)
    TrayItemSetOnEvent('-1', '_Show')
    TrayCreateItem('', $Tray)
    TrayCreateItem('Quit', $Tray)
    TrayItemSetOnEvent('-1', '_Exit')
    ;// iniread -----------------------------
    $Login = IniRead("conf/config.ini", "Login", "Login_Check", "0")
    $Default_Account = IniRead("conf/config.ini", "Login", "Account", "<Account>")
    $Default_Password = IniRead("conf/config.ini", "Login", "Password", "<Password>")
    ;// iniread end -------------------------

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

    $Form1_1 = GUICreate("Tabbed Notebook Dialog", 213, 189, 343, 188)
    GUISetOnEvent($GUI_EVENT_CLOSE, '_Exit')
    GUISetIcon("D:\005.ico")
    $TabSheet = GUICtrlCreateTab(0, 0, 212, 168)
    GUICtrlSetResizing(-1, $GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
    $TabSheet1 = GUICtrlCreateTabItem(" Login")
    $Group1 = GUICtrlCreateGroup("Auto Login", 8, 56, 193, 97)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    ;Account
    $Label3 = GUICtrlCreateLabel("Account:", 16, 88, 48, 18)
    $Account = GUICtrlCreateInput($Default_Account, 88, 88, 105, 22)
    $Default_Account = GUICtrlRead ($Account)
    ;Password
    $Label4 = GUICtrlCreateLabel("Password:", 16, 120, 57, 18)
    $Password = GUICtrlCreateInput($Default_Password, 88, 120, 105, 22)
    $Default_Password = GUICtrlRead ($Password)
    GUICtrlCreateGroup("", -99, -99, 1, 1)

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

    ;Auto Login
    $Label8 = GUICtrlCreateLabel("Use Auto Login:", 8, 32, 92, 19)
    GUICtrlSetFont(-1, 9, 800, 0, "Arial")
    $Auto_Login = GUICtrlCreateCheckbox("", 136, 24, 25, 33)

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

    If GUICtrlRead($Auto_Login) = $GUI_CHECKED Then
    $Login = 1
    EndIf

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

    If GUICtrlRead($Auto_Login) = $GUI_CHECKED Then
    $Login = 0
    EndIf

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

    If $Login = 1 Then
    GUICtrlSetState($Auto_Login, $GUI_CHECKED)
    else
    GUICtrlSetState($Auto_Login, $GUI_UNCHECKED)
    EndIf

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

    ;-----------------------------------------------
    $MenuItem1 = GUICtrlCreateMenu("&File")
    $Save = GUICtrlCreateMenuItem("Save", $MenuItem1)
    GUICtrlSetOnEvent($Save, '_Save')
    GUISetState(@SW_SHOW)

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

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

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

    EndSwitch
    WEnd

    [/autoit]

    Datei includes/fn_save.au3

    [autoit]

    Func _Save()
    IniWrite("conf/config.ini", "Login", "Login_Check",$Login)
    IniWrite("conf/config.ini", "Login", "Account", (GUICtrlRead($Account)))
    IniWrite("conf/config.ini", "Login", "Password", (GUICtrlRead($Password)))
    EndFunc;==>_Save

    [/autoit]

    config.ini:

    [Login]
    Login_Check=1
    Account=Test
    Password=TestPW

  • Oki das erste was mir auffält das du $Login nicht global gesetzt hast
    daher kann er es auch nicht in der Funktion nehmen

    Oder du machst das in einem anderen script

    wenn nicht

    [autoit]

    Global $Login = IniRead("conf/config.ini", "Login", "Login_Check", "0")

    [/autoit]


    machen ( alte ersetzen

    in der schleife

    [autoit]


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

    [/autoit]

    mach da mal

    [autoit]


    While 1
    If GUICtrlRead($Auto_Login) = 1 and $Login = 0 Then
    $Login = 1
    ;iniwrite status 1 speichern
    elseif GUICtrlRead($Auto_Login) <> 1 and $Login = 1 then
    $Login = 0
    ;iniwrite status 0 speichern
    EndIf
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    EndSwitch
    Exit

    [/autoit]


    draus
    (EndSwitch) hat auch gefehlt


    aus

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

    If GUICtrlRead($Auto_Login) = $GUI_CHECKED Then
    $Login = 1
    EndIf

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

    If GUICtrlRead($Auto_Login) = $GUI_CHECKED Then
    $Login = 0
    EndIf

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

    If $Login = 1 Then
    GUICtrlSetState($Auto_Login, $GUI_CHECKED)
    else
    GUICtrlSetState($Auto_Login, $GUI_UNCHECKED)
    EndIf

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

    machst du

    [autoit]


    If $Login = 1 Then GUICtrlSetState($Auto_Login, $GUI_CHECKED)

    [/autoit]

    Da du ja nur den check setzen musst wenn wirklich $Login 1 ist


    PS:
    Du solltest normale Funktionen direkt inst script machen und nicht includen wenn du Globale Variabelen nuzt

  • Super, es klappt!!! Vielen Dank für deine Hilfe und das du dir noch so spät Zeit genommen hast. :thumbup:

  • Kein Problem
    Nächste mal gleich vollen Code posten ist wesentlich einfacher ;)

    Frage: Was bastelst du da feines sieht Interesant aus *g*

  • Wird nichts besonderes, ein einfaches Login script für Remoteverbindungen, da ich erst seit einer Woche mit AutoIt angefangen habe und es mich in den Ban gezogen hat ;)

  • Ja so hat es bei uns allen angefangen ;)

    das wird immer schlimmer..
    Und es gibt kein Heilmittel *sfg*
    nun geh ich aber auch bubu machen :sleeping: