GUICtrlCreateRadio Problem...

  • Hallo, ich hab hier ein kleines Problemchen, hab in der AutoIt Hilfe nichts gefundne, und bei Google auch nichts...

    Ich möchte in meinem AutoIt Script einige Abfragen in einer GUI machen, mittels GUICtrlCreateRadio und GUICtrlCreateButton.
    Mit GUICtrlCreateRadio hat man immer 2 möglichkeiten zum Antworten, JA oder NEIN.
    Wenn man auf OK (GUICtrlCreateButton) klickt, soll in bestimmte Variablen (die immer andere sind,bei verschiedenen Fragen)
    +1 bzw. +2 dazu addiert werden. Allerdings hab ich keine wirkliche Ahnung wie das ganze geht, habs schon mit IF/then versucht, allerdings kommen da nur Fehler raus, und es geht nichts... :(

    Also z.B.
    User wählt "Ja" aus, und klickt auf "Ok" , in $AA und $CC wird jeweils +1 geschrieben.
    Neue Frage, der User antwortet mit "Nein" und klickt auf "Ok", in $BB +2 und bei $AA -1
    (...)

    Außerdem weiß ich nicht wie ich es mache, das wenn man auf OK klickt, das überhaupt etwas passiert, also das die Variablen dann "bearbeitet" werden (wie oben geschrieben) und das das Script dann weitermacht, also zur nächsten frage im selben GUI (kein neues aufbauen) geht.


    Hier der Code, erstellt mit KODA:

    [autoit]

    #Region ### START Koda GUI section ### Form=
    $Form2 = GUICreate("Dialog", 316, 238, 353, 211)
    GUISetIcon("D:\003.ico")
    $GroupBox1 = GUICtrlCreateGroup("", 8, 1, 297, 177)
    $Label1 = GUICtrlCreateLabel("Test ?", 18, 16, 73, 17)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Radio1 = GUICtrlCreateRadio("Ja", 41, 192, 63, 41)
    if $Radio2 = GUICtrlCreateRadio("Nein", 208, 192, 65, 41)
    $Button1 = GUICtrlCreateButton("Ok", 120, 192, 65, 33, 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]

    EndSwitch
    WEnd

    [/autoit]


    Ich hoffe das ihr wisst was ich meine und könntet mir dabei helfen, wäre echt super :)

    Einmal editiert, zuletzt von BeritoX (17. Februar 2009 um 14:19)

  • Hallo BeritoX,

    ich hab da mal Dein Script erweitert.
    Ich denke damit kannst Du erstmal basteln...

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #Region ### START Koda GUI section ### Form=
    $Form2 = GUICreate("Dialog", 316, 238, 353, 211)
    GUISetIcon("D:\003.ico")
    $GroupBox1 = GUICtrlCreateGroup("", 8, 1, 297, 177)
    $Label1 = GUICtrlCreateLabel("Test ?", 18, 16, 73, 17)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Radio1 = GUICtrlCreateRadio("Ja", 41, 192, 63, 41)
    $Radio2 = GUICtrlCreateRadio("Nein", 208, 192, 65, 41)
    $Button1 = GUICtrlCreateButton("Ok", 120, 192, 65, 33, 0)
    Global $aa = 0, $bb = 0, $cc = 0, $dd = 0
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    If GUICtrlRead($Radio1) = 1 Then
    $aa += 1
    $cc += 1
    MsgBox(0,"",$aa&" "&$cc)
    EndIf
    If GUICtrlRead($Radio2) = 1 Then
    $aa -= 1
    $bb += 2
    MsgBox(0,"",$aa&" "&$bb)
    EndIf
    EndSwitch
    WEnd

    [/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. ;)

  • Erstmal vielen Dank dafür, funzt bisher (fast) einwandfrei ! :)
    Nur hab mit dem + mich auf "IniWrite" umentschieden, weil ich find das es für mich besser ist.

    Das Problem jetzt ist aber nur, wenn man z.B. JA auswählt, und auf OK klickt, kommt zwar die MsgBox, aber ansonsten passiert nichts ?
    Bitte um Hilfe ^^

    • Offizieller Beitrag

    Poste mal deinen Code den du bis jetzt hast , dann kann man dir helfen.

  • Hier:

    Spoiler anzeigen
    [autoit]


    ;--------Laden der .ini Datei---------------
    $druide = IniRead("config.ini","configs","druide","")
    $hexer = IniRead("config.ini","configs","hexer","")
    $jaeger = IniRead("config.ini","configs","jaeger","")
    $krieger = IniRead("config.ini","configs","krieger","")
    $magier = IniRead("config.ini","configs","magier","")
    $paladin = IniRead("config.ini","configs","paladin","")
    $priester = IniRead("config.ini","configs","priester","")
    $schamane = IniRead("config.ini","configs","schamane","")
    $schurke = IniRead("config.ini","configs","schurke","")
    $todesritter = IniRead("config.ini","configs","todesritter","")
    ;--------Alle .ini Schlüssel geladen ! :)-------------
    sleep(1000)
    MsgBox (0, "test test test ", "test text blabla")
    Sleep(1000)

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

    ;------------------------------------------------------------------------------------------------------------

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

    #include <GUIConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form2 = GUICreate("Dialog", 851, 594, 205, 145)
    GUISetIcon("D:\003.ico")
    $GroupBox1 = GUICtrlCreateGroup("", 8, 1, 817, 545)
    $Label1 = GUICtrlCreateLabel("Frage Nummer 1", 24, 24, 82, 17)
    $Label2 = GUICtrlCreateLabel("Frage Nummer 2", 328, 24, 82, 17)
    $Label3 = GUICtrlCreateLabel("Frage Nummer 3", 624, 24, 82, 17)
    $Label4 = GUICtrlCreateLabel("Frage Nummer 4", 24, 200, 82, 17)
    $Label5 = GUICtrlCreateLabel("Frage Nummer 5", 328, 200, 82, 17)
    $Label6 = GUICtrlCreateLabel("Frage Nummer 6", 624, 200, 82, 17)
    $Label7 = GUICtrlCreateLabel("Frage Nummer 7", 24, 384, 82, 17)
    $Label8 = GUICtrlCreateLabel("Frage Nummer 8", 328, 384, 82, 17)
    $Label9 = GUICtrlCreateLabel("Frage Nummer 9", 624, 384, 82, 17)
    $Radio1 = GUICtrlCreateRadio("Ja", 24, 88, 49, 25)
    $Radio2 = GUICtrlCreateRadio("Nein", 72, 88, 57, 25)
    $Radio3 = GUICtrlCreateRadio("Ja", 312, 88, 49, 25)
    $Radio4 = GUICtrlCreateRadio("Ja", 24, 272, 49, 25)
    $Radio5 = GUICtrlCreateRadio("Ja", 617, 90, 49, 25)
    $Radio6 = GUICtrlCreateRadio("Ja", 321, 263, 49, 25)
    $Radio7 = GUICtrlCreateRadio("Ja", 621, 269, 49, 25)
    $Radio8 = GUICtrlCreateRadio("Ja", 16, 460, 49, 25)
    $Radio9 = GUICtrlCreateRadio("Ja", 314, 453, 49, 25)
    $Radio10 = GUICtrlCreateRadio("Ja", 620, 455, 49, 25)
    $Radio11 = GUICtrlCreateRadio("Nein", 367, 88, 57, 25)
    $Radio12 = GUICtrlCreateRadio("Nein", 674, 86, 57, 25)
    $Radio13 = GUICtrlCreateRadio("Nein", 72, 271, 57, 25)
    $Radio14 = GUICtrlCreateRadio("Nein", 386, 265, 57, 25)
    $Radio15 = GUICtrlCreateRadio("Nein", 675, 269, 57, 25)
    $Radio16 = GUICtrlCreateRadio("Nein", 71, 460, 57, 25)
    $Radio17 = GUICtrlCreateRadio("Nein", 376, 458, 57, 25)
    $Radio18 = GUICtrlCreateRadio("Nein", 675, 458, 57, 25)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Button1 = GUICtrlCreateButton("&OK", 305, 555, 75, 25, 0)
    $Button2 = GUICtrlCreateButton("&Cancel", 402, 555, 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
    Case $Button1
    If GUICtrlRead($Radio1) = 1 Then
    IniWrite("config.ini", "configs", "druide", "10" )
    IniWrite("config.ini", "configs", "krieger", "10" )
    IniWrite("config.ini", "configs", "paladin", "10" )
    IniWrite("config.ini", "configs", "todesritter", "10" )

    EndIf
    If GUICtrlRead($Radio2) = 1 Then
    IniWrite("config.ini", "configs", "hexer", "3" )
    IniWrite("config.ini", "configs", "jaeger", "3" )
    IniWrite("config.ini", "configs", "magier", "3" )
    IniWrite("config.ini", "configs", "priester", "3" )
    IniWrite("config.ini", "configs", "schamane", "3" )
    IniWrite("config.ini", "configs", "schurke", "3" )

    EndIf
    If GUICtrlRead($Radio3) = 1 Then
    IniWrite("config.ini", "configs", "druide", "10" )
    IniWrite("config.ini", "configs", "krieger", "10" )
    IniWrite("config.ini", "configs", "paladin", "10" )
    IniWrite("config.ini", "configs", "todesritter", "10" )

    EndIf
    If GUICtrlRead($Radio4) = 1 Then
    IniWrite("config.ini", "configs", "hexer", "3" )
    IniWrite("config.ini", "configs", "jaeger", "3" )
    IniWrite("config.ini", "configs", "magier", "3" )
    IniWrite("config.ini", "configs", "priester", "3" )
    IniWrite("config.ini", "configs", "schamane", "3" )
    IniWrite("config.ini", "configs", "schurke", "3" )

    EndIf
    If GUICtrlRead($Radio5) = 1 Then
    IniWrite("config.ini", "configs", "druide", "10" )
    IniWrite("config.ini", "configs", "krieger", "10" )
    IniWrite("config.ini", "configs", "paladin", "10" )
    IniWrite("config.ini", "configs", "todesritter", "10" )

    EndIf
    If GUICtrlRead($Radio6) = 1 Then
    IniWrite("config.ini", "configs", "hexer", "3" )
    IniWrite("config.ini", "configs", "jaeger", "3" )
    IniWrite("config.ini", "configs", "magier", "3" )
    IniWrite("config.ini", "configs", "priester", "3" )
    IniWrite("config.ini", "configs", "schamane", "3" )
    IniWrite("config.ini", "configs", "schurke", "3" )

    EndIf
    If GUICtrlRead($Radio7) = 1 Then
    IniWrite("config.ini", "configs", "druide", "10" )
    IniWrite("config.ini", "configs", "krieger", "10" )
    IniWrite("config.ini", "configs", "paladin", "10" )
    IniWrite("config.ini", "configs", "todesritter", "10" )

    EndIf
    If GUICtrlRead($Radio8) = 1 Then
    IniWrite("config.ini", "configs", "hexer", "3" )
    IniWrite("config.ini", "configs", "jaeger", "3" )
    IniWrite("config.ini", "configs", "magier", "3" )
    IniWrite("config.ini", "configs", "priester", "3" )
    IniWrite("config.ini", "configs", "schamane", "3" )
    IniWrite("config.ini", "configs", "schurke", "3" )

    EndIf
    If GUICtrlRead($Radio9) = 1 Then
    IniWrite("config.ini", "configs", "druide", "10" )
    IniWrite("config.ini", "configs", "krieger", "10" )
    IniWrite("config.ini", "configs", "paladin", "10" )
    IniWrite("config.ini", "configs", "todesritter", "10" )

    EndIf
    If GUICtrlRead($Radio10) = 1 Then
    IniWrite("config.ini", "configs", "hexer", "3" )
    IniWrite("config.ini", "configs", "jaeger", "3" )
    IniWrite("config.ini", "configs", "magier", "3" )
    IniWrite("config.ini", "configs", "priester", "3" )
    IniWrite("config.ini", "configs", "schamane", "3" )
    IniWrite("config.ini", "configs", "schurke", "3" )

    EndIf
    If GUICtrlRead($Radio11) = 1 Then
    IniWrite("config.ini", "configs", "druide", "10" )
    IniWrite("config.ini", "configs", "krieger", "10" )
    IniWrite("config.ini", "configs", "paladin", "10" )
    IniWrite("config.ini", "configs", "todesritter", "10" )

    EndIf
    If GUICtrlRead($Radio12) = 1 Then
    IniWrite("config.ini", "configs", "hexer", "3" )
    IniWrite("config.ini", "configs", "jaeger", "3" )
    IniWrite("config.ini", "configs", "magier", "3" )
    IniWrite("config.ini", "configs", "priester", "3" )
    IniWrite("config.ini", "configs", "schamane", "3" )
    IniWrite("config.ini", "configs", "schurke", "3" )

    EndIf
    If GUICtrlRead($Radio13) = 1 Then
    IniWrite("config.ini", "configs", "druide", "10" )
    IniWrite("config.ini", "configs", "krieger", "10" )
    IniWrite("config.ini", "configs", "paladin", "10" )
    IniWrite("config.ini", "configs", "todesritter", "10" )

    EndIf
    If GUICtrlRead($Radio14) = 1 Then
    IniWrite("config.ini", "configs", "hexer", "3" )
    IniWrite("config.ini", "configs", "jaeger", "3" )
    IniWrite("config.ini", "configs", "magier", "3" )
    IniWrite("config.ini", "configs", "priester", "3" )
    IniWrite("config.ini", "configs", "schamane", "3" )
    IniWrite("config.ini", "configs", "schurke", "3" )

    EndIf
    If GUICtrlRead($Radio15) = 1 Then
    IniWrite("config.ini", "configs", "druide", "10" )
    IniWrite("config.ini", "configs", "krieger", "10" )
    IniWrite("config.ini", "configs", "paladin", "10" )
    IniWrite("config.ini", "configs", "todesritter", "10" )

    EndIf
    If GUICtrlRead($Radio16) = 1 Then
    IniWrite("config.ini", "configs", "hexer", "3" )
    IniWrite("config.ini", "configs", "jaeger", "3" )
    IniWrite("config.ini", "configs", "magier", "3" )
    IniWrite("config.ini", "configs", "priester", "3" )
    IniWrite("config.ini", "configs", "schamane", "3" )
    IniWrite("config.ini", "configs", "schurke", "3" )

    EndIf
    If GUICtrlRead($Radio17) = 1 Then
    IniWrite("config.ini", "configs", "druide", "10" )
    IniWrite("config.ini", "configs", "krieger", "10" )
    IniWrite("config.ini", "configs", "paladin", "10" )
    IniWrite("config.ini", "configs", "todesritter", "10" )

    EndIf
    If GUICtrlRead($Radio18) = 1 Then
    IniWrite("config.ini", "configs", "hexer", "3" )
    IniWrite("config.ini", "configs", "jaeger", "3" )
    IniWrite("config.ini", "configs", "magier", "3" )
    IniWrite("config.ini", "configs", "priester", "3" )
    IniWrite("config.ini", "configs", "schamane", "3" )
    IniWrite("config.ini", "configs", "schurke", "3" )
    EndIf
    If GUICtrlCreateButton($Button1)= 1 Then
    MsgBox (0, "Text Blabla", "Test test test")
    EndIf
    If GUICtrLCreateButton($Button2) = 1 Then
    Exit
    Endif

    EndSwitch
    WEnd

    [/autoit]
  • Du solltest dich dringend mit Arrays befassen :) - dann kannst du deinen Code viel kürzer gestalten.

    Hehe, ja schon ;)
    Aber so lang mach ich mit AutoIt auch noch nicht rum, und ich wäre jetzt erstmal froh, wenn das sohinhaun würde, ohne Arrays. =)
    Vllt. dann bei meinem nächsten Script... oder irgendwann später, wenn das da oben so hinhaut ^^

    • Offizieller Beitrag

    Ich hab mal in das Skript geschaut: Grundlegender Fehler, du hast mehrere Fragen, die mit Ja/Nein beantwortet werden sollen. Du hast aber ALLE Radios in eine einzige Group gestellt. Somit kannst du in der ganzen GUI nur ein einziges Radio markieren. ;)
    Du mußt jeweils 2 Radios (JA-NEIN) in einer Group haben um mehrere Fragen gleichzeitig beantworten zu lassen.
    Und: If GUICtrlCreateButton($Button1)= 1 Then in der Abfrage..? Der Button ist doch schon erstellt, du willst ihn doch abfragen. Also nur: Case $Button1

  • Bisher ist alles ok, nur ich versteh einfach nicht, wie ich das mache, das wenn ich auf OK bzw, Cancel klicke, das etwas passiert?
    Also das wenn ich auf "Ok" klicke, das dann die auswertung beginnt , bzw. auf Cancel, das dann das Script beendet wird (exit)

  • Du fragst in einer schleife ständig per GUIGetMsg ab was der user in deiner GUI anklickt... und dann einfach so

    [autoit]

    $button1 = GUICtrlCreateButton(;...
    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $button1
    ;Tue hier irgendwas wenn button1 gedrückt wurde
    EndSwitch
    WEnd

    [/autoit]

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D