Что нового

Элементы GUI Активировать Input по клику на Checkbox

juder

Новичок
Сообщения
19
Репутация
0
Добрый день!
Изначально в форме, поля должны быть неактивны, но по клику на чекбокс становиться доступными для ввода, снятие галки снова недоступны.
AutoIt код:
#include <GUIConstantsEx.au3>
#include <EditConstants.au3>
#include <ComboConstants.au3>
#include <ButtonConstants.au3>
#include <Array.au3>

Global $aColor[49]
Global $aColor1[25]
Global $text
Global $i
Global $ch1



$hGUI = GUICreate("Расцветка ОВ", 300, 200)

GUICtrlCreateLabel("Сколько делать:", 10, 23)
$iCount = GUICtrlCreateInput("", 130, 20, 160, 20)

GUICtrlCreateLabel("В каждом по порядку:", 10, 53)
$iCount1 = GUICtrlCreateInput("", 130, 50, 160, 20)

GUICtrlCreateLabel("С какого начать:", 10, 83)
$iCount2 = GUICtrlCreateInput("1", 130, 80, 160, 20)
 GUICtrlSetState($iCount2, $GUI_DISABLE)
$nCh2 = GUICtrlCreateCheckbox("", 105, 82, 15, 15)

GUICtrlCreateLabel("Текст в конце?:", 10, 113)
$iCount3 = GUICtrlCreateInput("", 130, 110, 160, 20)
 GUICtrlSetState($iCount3, $GUI_DISABLE)
$nCh3 = GUICtrlCreateCheckbox("", 105, 112, 15, 15)

$nCh1 = GUICtrlCreateCheckbox("Сохранить после выполнения?", 10, 140, 180, 20)
GUICtrlSetState($nCh1, $GUI_CHECKED)

$iOK_Button = GUICtrlCreateButton("OK", 20, 170, 80, 20)

GUISetState(@SW_SHOW, $hGUI)

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
        Case $iOK_Button
            $count = GUICtrlRead($iCount)
            $count1 = GUICtrlRead($iCount1)
            $count2 = GUICtrlRead($iCount2)
            $textplus = GUICtrlRead($iCount3)
            $ch1 = GUICtrlRead($nCh1)
            ExitLoop
    EndSwitch
WEnd
Подскажите, как это можно организовать?
 

Cytrus

Новичок
Сообщения
110
Репутация
3
Можно так.

Код:
#include <GUIConstantsEx.au3>
#include <EditConstants.au3>
#include <ComboConstants.au3>
#include <ButtonConstants.au3>
#include <Array.au3>
Global $aColor[49]
Global $aColor1[25]
Global $text
Global $i
Global $ch1
$hGUI = GUICreate("Расцветка ОВ", 300, 200)
GUICtrlCreateLabel("Сколько делать:", 10, 23)
$iCount = GUICtrlCreateInput("", 130, 20, 160, 20)
GUICtrlCreateLabel("В каждом по порядку:", 10, 53)
$iCount1 = GUICtrlCreateInput("", 130, 50, 160, 20)
GUICtrlCreateLabel("С какого начать:", 10, 83)
$iCount2 = GUICtrlCreateInput("", 130, 80, 160, 20)
GUICtrlSetState($iCount2, $GUI_DISABLE)
$nCh2 = GUICtrlCreateCheckbox("", 105, 82, 15, 15)
GUICtrlCreateLabel("Текст в конце?:", 10, 113)
$iCount3 = GUICtrlCreateInput("", 130, 110, 160, 20)
GUICtrlSetState($iCount3, $GUI_DISABLE)
$nCh3 = GUICtrlCreateCheckbox("", 105, 112, 15, 15)
$nCh1 = GUICtrlCreateCheckbox("Сохранить после выполнения?", 10, 140, 180, 20)
GUICtrlSetState($nCh1, $GUI_CHECKED)
$iOK_Button = GUICtrlCreateButton("OK", 20, 170, 80, 20)
GUISetState(@SW_SHOW, $hGUI)
While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
           Case $nCh2
           (GUICtrlRead($nCh2)=1)?GUICtrlSetState($iCount2,320):GUICtrlSetState($iCount2,128)
           Case $nCh3
           (GUICtrlRead($nCh3)=1)?GUICtrlSetState($iCount3,320):GUICtrlSetState($iCount3,128)
        Case $iOK_Button
            $count = GUICtrlRead($iCount)
            $count2 = GUICtrlRead($iCount2)
            $textplus = GUICtrlRead($iCount3)
            $ch1 = GUICtrlRead($nCh1)
            ExitLoop
    EndSwitch
WEnd
 
Последнее редактирование:
Автор
J

juder

Новичок
Сообщения
19
Репутация
0
Можно так.

Код:
#include <GUIConstantsEx.au3>
#include <EditConstants.au3>
#include <ComboConstants.au3>
#include <ButtonConstants.au3>
#include <Array.au3>
Global $aColor[49]
Global $aColor1[25]
Global $text
Global $i
Global $ch1
$hGUI = GUICreate("Расцветка ОВ", 300, 200)
GUICtrlCreateLabel("Сколько делать:", 10, 23)
$iCount = GUICtrlCreateInput("", 130, 20, 160, 20)
GUICtrlCreateLabel("В каждом по порядку:", 10, 53)
$iCount1 = GUICtrlCreateInput("", 130, 50, 160, 20)
GUICtrlCreateLabel("С какого начать:", 10, 83)
$iCount2 = GUICtrlCreateInput("", 130, 80, 160, 20)
GUICtrlSetState($iCount2, $GUI_DISABLE)
$nCh2 = GUICtrlCreateCheckbox("", 105, 82, 15, 15)
GUICtrlCreateLabel("Текст в конце?:", 10, 113)
$iCount3 = GUICtrlCreateInput("", 130, 110, 160, 20)
GUICtrlSetState($iCount3, $GUI_DISABLE)
$nCh3 = GUICtrlCreateCheckbox("", 105, 112, 15, 15)
$nCh1 = GUICtrlCreateCheckbox("Сохранить после выполнения?", 10, 140, 180, 20)
GUICtrlSetState($nCh1, $GUI_CHECKED)
$iOK_Button = GUICtrlCreateButton("OK", 20, 170, 80, 20)
GUISetState(@SW_SHOW, $hGUI)
While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
           Case $nCh2
           (GUICtrlRead($nCh2)=1)?GUICtrlSetState($iCount2,64):GUICtrlSetState($iCount2,128)
           Case $nCh3
           (GUICtrlRead($nCh3)=1)?GUICtrlSetState($iCount3,64):GUICtrlSetState($iCount3,128)
        Case $iOK_Button
            $count = GUICtrlRead($iCount)
            $count2 = GUICtrlRead($iCount2)
            $textplus = GUICtrlRead($iCount3)
            $ch1 = GUICtrlRead($nCh1)
            ExitLoop
    EndSwitch
WEnd
Ошибку пишет, если на & поменять вылетает тоже с ошибкой
AutoIt код:
(GUICtrlRead($nCh2)=1)?GUICtrlSetState($iCount2,64):GUICtrlSetState($iCount2,128)
(GUICtrlRead($nCh2)=1)^ ERROR
>Exit code: 1    Time: 0.215
 

Cytrus

Новичок
Сообщения
110
Репутация
3
Странно, у меня прекрасно работает. Может быть у вас версия AutoIt старая?
Ну тогда делайте так.

Код:
#include <GUIConstantsEx.au3>
#include <EditConstants.au3>
#include <ComboConstants.au3>
#include <ButtonConstants.au3>
#include <Array.au3>
Global $aColor[49]
Global $aColor1[25]
Global $text
Global $i
Global $ch1
Local $nCh3,$nCh2,$iCount2,$iCount3,$hGUI = GUICreate("Расцветка ОВ", 300, 200)
GUICtrlCreateLabel("Сколько делать:", 10, 23)
$iCount = GUICtrlCreateInput("", 130, 20, 160, 20)
GUICtrlCreateLabel("В каждом по порядку:", 10, 53)
$iCount1 = GUICtrlCreateInput("", 130, 50, 160, 20)
GUICtrlCreateLabel("С какого начать:", 10, 83)
$iCount2 = GUICtrlCreateInput("", 130, 80, 160, 20)
GUICtrlSetState($iCount2, $GUI_DISABLE)
$nCh2 = GUICtrlCreateCheckbox("", 105, 82, 15, 15)
GUICtrlCreateLabel("Текст в конце?:", 10, 113)
$iCount3 = GUICtrlCreateInput("", 130, 110, 160, 20)
GUICtrlSetState($iCount3, $GUI_DISABLE)
$nCh3 = GUICtrlCreateCheckbox("", 105, 112, 15, 15)
$nCh1 = GUICtrlCreateCheckbox("Сохранить после выполнения?", 10, 140, 180, 20)
GUICtrlSetState($nCh1, $GUI_CHECKED)
$iOK_Button = GUICtrlCreateButton("OK", 20, 170, 80, 20)
GUISetState(@SW_SHOW, $hGUI)
While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
           Case $nCh2
           If GUICtrlRead($nCh2)=1 Then
           GUICtrlSetState($iCount2,320)
           Else
           GUICtrlSetState($iCount2,128)
           EndIf
           Case $nCh3
           If GUICtrlRead($nCh3)=1 Then
           GUICtrlSetState($iCount3,320)
           Else
           GUICtrlSetState($iCount3,128)
           EndIf
        Case $iOK_Button
            $count = GUICtrlRead($iCount)
            $count2 = GUICtrlRead($iCount2)
            $textplus = GUICtrlRead($iCount3)
            $ch1 = GUICtrlRead($nCh1)
            ExitLoop
    EndSwitch
WEnd
 
Последнее редактирование:
Автор
J

juder

Новичок
Сообщения
19
Репутация
0
Странно, у меня прекрасно работает. Может быть у вас версия AutoIt старая?
Ну тогда делайте так.

Код:
#include <GUIConstantsEx.au3>
#include <EditConstants.au3>
#include <ComboConstants.au3>
#include <ButtonConstants.au3>
#include <Array.au3>
Global $aColor[49]
Global $aColor1[25]
Global $text
Global $i
Global $ch1
Local $nCh3,$nCh2,$iCount2,$iCount3,$hGUI = GUICreate("Расцветка ОВ", 300, 200)
GUICtrlCreateLabel("Сколько делать:", 10, 23)
$iCount = GUICtrlCreateInput("", 130, 20, 160, 20)
GUICtrlCreateLabel("В каждом по порядку:", 10, 53)
$iCount1 = GUICtrlCreateInput("", 130, 50, 160, 20)
GUICtrlCreateLabel("С какого начать:", 10, 83)
$iCount2 = GUICtrlCreateInput("", 130, 80, 160, 20)
GUICtrlSetState($iCount2, $GUI_DISABLE)
$nCh2 = GUICtrlCreateCheckbox("", 105, 82, 15, 15)
GUICtrlCreateLabel("Текст в конце?:", 10, 113)
$iCount3 = GUICtrlCreateInput("", 130, 110, 160, 20)
GUICtrlSetState($iCount3, $GUI_DISABLE)
$nCh3 = GUICtrlCreateCheckbox("", 105, 112, 15, 15)
$nCh1 = GUICtrlCreateCheckbox("Сохранить после выполнения?", 10, 140, 180, 20)
GUICtrlSetState($nCh1, $GUI_CHECKED)
$iOK_Button = GUICtrlCreateButton("OK", 20, 170, 80, 20)
GUISetState(@SW_SHOW, $hGUI)
While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
           Case $nCh2
           If GUICtrlRead($nCh2)=1 Then
           GUICtrlSetState($iCount2,320)
           Else
           GUICtrlSetState($iCount2,128)
           EndIf
           Case $nCh3
           If GUICtrlRead($nCh3)=1 Then
           GUICtrlSetState($iCount3,320)
           Else
           GUICtrlSetState($iCount3,128)
           EndIf
        Case $iOK_Button
            $count = GUICtrlRead($iCount)
            $count2 = GUICtrlRead($iCount2)
            $textplus = GUICtrlRead($iCount3)
            $ch1 = GUICtrlRead($nCh1)
            ExitLoop
    EndSwitch
WEnd
Благодарю, так работает! Да, версия древняя, 3,3,6,1 стоит на рабочем сервере, куда у меня доступа нет, благо хоть такая есть,
 
Верх