Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Checkbox enable i disable w pętli while


Rekomendowane odpowiedzi

Opublikowano

Cześć!

Chciałem, aby po zaznaczeniu checkbox1, checkbox2 został odblokowany (GuiCtrlSetState, $gui_enable), a po odznaczeniu checkbox1, checkbox2 został zablokowany (GuiCtrlSetState, $gui_disable).

 

W pętli while umieściłem:

 

If GuiCtrlRead($Checkbox1) = $GUI_UNCHECKED Then
GuiCtrlSetState($Checkbox2, $GUI_DISABLE)
Else
GuiCtrlSetState($Checkbox2, $GUI_ENABLE)
EndIf

lecz checbox2 cały czas mruga, a tak to działa - po zaznaczeniu checkbox2 odblokowuje się i na odwrót. Tzn. ciągle jest wykonywana funkcja GuiCtrlSetState.

Co zrobić, żeby to pięknie śmigało bez żadnego migania? Chyba wiadomo o co mi chodzi :)

 

Pozdrawiam!

Dumny członek MPCforum od 09 czerwca 2009 ;)

Opublikowano

Pewnie sposób wcale nie jest taki dobry, ale działa.

Specjaliści pewnie po mnie pojadą, ale jestem chory, ciężko mi się myśli.

 

#EDIT

 


#include <GUIConstants.au3>

GUICreate("GUI", 200,200)
$Check1 = GUICtrlCreateCheckbox("CheckBox1", 20, 50)
$Check2 = GUICtrlCreateCheckbox("CheckBox2", 100,50)
GUICtrlSetState($Check2, $GUI_DISABLE)
GUISetState(@SW_SHOW)

While 1
$Msg = GUIGetMsg()
If $msg = -3 Then Exit
If $msg = $Check1 Then check1()

WEnd


Func Check1()
If GUICtrlRead($Check1) = $GUI_CHECKED Then
GUICtrlSetState($Check2, $GUI_ENABLE)
EndIf
If GUICtrlRead($Check1) = $GUI_UNCHECKED Then
GUICtrlSetState($CHeck2, $GUI_DISABLE)
EndIf
EndFunc


1352970251-U713459.png

By Maxiu
"Because limits, like fears, are often just an illusion"

Opublikowano

Wielkość literek Ci się pomieszała lekko.

Poprawione:

#include <GUIConstants.au3>
GUICreate("GUI", 200,200)
$Check1 = GUICtrlCreateCheckbox("CheckBox1", 20, 50)
$Check2 = GUICtrlCreateCheckbox("CheckBox2", 100,50)
GUICtrlSetState($Check2, $GUI_DISABLE)
GUISetState(@SW_SHOW)
While 1
$msg = GUIGetMsg()
If $msg = -3 Then Exit
If $msg = $Check1 Then check1()
WEnd

Func Check1()
If GUICtrlRead($Check1) = $GUI_CHECKED Then
GUICtrlSetState($Check2, $GUI_ENABLE)
EndIf
If GUICtrlRead($Check1) = $GUI_UNCHECKED Then
GUICtrlSetState($Check2, $GUI_DISABLE)
EndIf
EndFunc

Opublikowano

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...