Gui flackert

  • Hi,
    ich hab ein Problem mit dem Gui...

    Hier erstmal mein ausschnittscode:

    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <ComboConstants.au3>
    #include <GUIComboBox.au3>
    #include <EditConstants.au3>

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

    $Form3 = GUICreate("test", 564, 758, 289, 114)
    $1 = GUICtrlCreateCheckbox("checkbox1", 24, 72, 97, 17)
    $2 = GUICtrlCreateCheckbox("checkbox2", 24, 96, 97, 17)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $3 = GUICtrlCreateCheckbox("checkbox3", 24, 120, 97, 17)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUISetState(@SW_SHOW)

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

    While 1

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

    ;Checkboxen checken
    If guictrlread($1) = 1 Then
    GUICtrlSetState($2, @SW_ENABLE)
    GUICtrlSetState($3, @SW_ENABLE)
    ;Wenn else weg ist, dann klappt es eigenermaßen
    Else
    GUICtrlSetState($2, @SW_DISABLE)
    GUICtrlSetState($3, @SW_DISABLE)

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

    EndIf

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

    $nMsg = GUIGetMsg()
    Switch $nMsg

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

    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch

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

    WEnd

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

    Was ich will:
    wenn ich bei checkbox 1 ein kreutzchen setzte soll checkbox 2 und 3 aktiviert werden. wenn ich bei checkbox 1 das kreutzchen wieder wegmache, dann soll chexkbox 2 und 3 wieder deaktiviert werden. Ich habs in eine while schleife getan, doch das dumme dabei ist, dass es jetzt flackert :wacko:
    außderdem soll checkbox 2 und 3 nicht aktiviert sein-.-
    Gibt es da eine lösung?

    Danke
    RaYder04

    Einmal editiert, zuletzt von RaYder04 (3. November 2009 um 20:59)

  • Wenn du es so machst wie du dann aktiviert bzw. deaktiviert Autoit die checkboxen bei jedem durchlauf!
    So flackert es nichtmehr:

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <ComboConstants.au3>
    #include <GUIComboBox.au3>
    #include <EditConstants.au3>

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

    $Form3 = GUICreate("test", 564, 758, 289, 114)
    $1 = GUICtrlCreateCheckbox("checkbox1", 24, 72, 97, 17)
    $2 = GUICtrlCreateCheckbox("checkbox2", 24, 96, 97, 17)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $3 = GUICtrlCreateCheckbox("checkbox3", 24, 120, 97, 17)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUISetState(@SW_SHOW)

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

    While 1

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

    $nMsg = GUIGetMsg()
    Switch $nMsg

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

    Case $GUI_EVENT_CLOSE
    Exit
    Case $1 ;Wenn auf Checkbox 1 geklickt wird
    ;Checkboxen checken
    If guictrlread($1) = 1 Then
    GUICtrlSetState($2, $GUI_ENABLE)
    GUICtrlSetState($3, $GUI_ENABLE)
    ;Wenn else weg ist, dann klappt es eigenermaßen
    Else
    GUICtrlSetState($2, $GUI_DISABLE)
    GUICtrlSetState($3, $GUI_DISABLE)
    EndIf

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

    EndSwitch

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

    WEnd

    [/autoit]
  • Ansonsten so:

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <ComboConstants.au3>
    #include <GUIComboBox.au3>
    #include <EditConstants.au3>

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

    $Form3 = GUICreate("test", 564, 758, 289, 114)
    $1 = GUICtrlCreateCheckbox("checkbox1", 24, 72, 97, 17)
    $2 = GUICtrlCreateCheckbox("checkbox2", 24, 96, 97, 17)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $3 = GUICtrlCreateCheckbox("checkbox3", 24, 120, 97, 17)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUISetState(@SW_SHOW)

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

    While (TRUE)

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

    Switch (GUIGetMsg(FALSE))

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

    Case $GUI_EVENT_CLOSE
    Exit
    Case $1 ;Wenn auf Checkbox 1 geklickt wird
    ;Checkboxen checken
    If (IsChecked ($1)) Then

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

    If (not IsEnabled ($2) and not IsEnabled ($3)) Then
    GUICtrlSetState($2, $GUI_ENABLE)
    GUICtrlSetState($3, $GUI_ENABLE)
    ;Wenn else weg ist, dann klappt es eigenermaßen
    EndIf

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

    Else

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

    If (IsEnabled ($2) and IsEnabled ($3)) Then
    GUICtrlSetState($2, $GUI_DISABLE)
    GUICtrlSetState($3, $GUI_DISABLE)
    ;Wenn else weg ist, dann klappt es eigenermaßen
    EndIf
    EndIf

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

    EndSwitch

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

    WEnd

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

    Func IsChecked ($controlID)

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

    If (BitAND (GUICtrlRead ($controlID), $GUI_CHECKED)) Then _
    Return TRUE

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

    Return FALSE

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

    EndFunc

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

    Func IsEnabled ($controlID)

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

    If (BitAND (GUICtrlGetState ($controlID), $GUI_ENABLE)) Then _
    Return TRUE

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

    Return FALSE

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

    EndFunc
    ;

    [/autoit]


    Gruß
    Greenhorn


  • Danke, Greenhorn!
    So klappt das gut.

    Dummerweise hab ich doch noch ein problem.
    Ich habe noch eine andere combobox. wenn ich diese anklicke, soll direkt eine inputbox aktiviert werden. Das geht wieder nicht-.- es flackert...
    Bei dieser lösung klappt es zwar, aber wenn ich die combobox wieder auf "0" checke, soll sich die inputbox auch wieder deaktivieren

    [autoit]

    Case $1 ;Wenn auf Checkbox 1 geklickt wird
    ;Checkboxen checken
    If guictrlread($1) = 1 Then
    GUICtrlSetState($2, $GUI_ENABLE)

    [/autoit]

    Sorry, konnte längere zeit nicht online kommen.

    2 Mal editiert, zuletzt von RaYder04 (20. November 2009 um 17:08)