Есть 4 комбо. При выборе в первом одного из пунктов появляется второй, при выборе во втором одного из пунктов появляется третий и т. д.
Проблема в том, что пока скрипт мониторит не выбран ли тот или иной пункт, он применяет к элементам окна определенные состояния. Из-за того, что цикл постоянно повторяется, элементы постоянно мигают. Проще увидеть, чем объяснить.
А также, если я выбрал все 4 combo, а потом изменил во втором ("Выберите раздел") значение с "Третий" на "Четвертый", то необходимо, чтобы расположенные ниже combo стали Disable.
Надеюсь, доступно объяснил. Заранее спасибо!
Проблема в том, что пока скрипт мониторит не выбран ли тот или иной пункт, он применяет к элементам окна определенные состояния. Из-за того, что цикл постоянно повторяется, элементы постоянно мигают. Проще увидеть, чем объяснить.
Код:
#include <GUiConstants.au3>
#include <StaticConstants.au3>
#include <Array.au3>
Opt("GUIOnEventMode", 1)
Opt("TrayAutoPause", 0)
_start ()
Func _start ()
Global $gui = GUICreate ("Редактор", 600, 500)
GUISetFont (10, 400)
GUISetOnEvent ($GUI_EVENT_CLOSE, "_CLOSE")
GUICtrlCreateLabel ("Выберите пункт:", 10, 22, 130, 25)
Global $v_land = GUICtrlCreateCombo ("", 140, 20, 200, 25)
GUICtrlSetFont ($v_land, 8.5, 400)
GUICtrlSetData ($v_land, "Первый|Второй", "")
$v_razdel_l = GUICtrlCreateLabel ("Выберите раздел:", 10, 52, 130, 25)
$v_razdel = GUICtrlCreateCombo ("", 140, 50, 200, 25)
GUICtrlSetFont ($v_razdel, 8.5, 400)
GUICtrlSetData ($v_razdel, "Третий|Четвертый", "")
$v_podrazdel_l = GUICtrlCreateLabel ("Выберите подраздел:", 10, 82, 130, 25)
$v_podrazdel = GUICtrlCreateCombo ("", 140, 80, 200, 25)
GUICtrlSetState ($v_podrazdel, $GUI_DISABLE)
GUICtrlSetState ($v_podrazdel_l, $GUI_DISABLE)
GUICtrlSetFont ($v_podrazdel, 8.5, 400)
GUICtrlSetData ($v_podrazdel, "Пятый|Шестой", "")
$v_punkt_l = GUICtrlCreateLabel ("Выберите пункт:", 10, 112, 130, 25)
$v_punkt = GUICtrlCreateCombo ("", 140, 110, 200, 25)
GUICtrlSetState ($v_punkt, $GUI_DISABLE)
GUICtrlSetState ($v_punkt_l, $GUI_DISABLE)
GUICtrlSetFont ($v_punkt, 8.5, 400)
GUICtrlSetData ($v_punkt, "Седьмой|Восьмой", "")
Global $go = GUICtrlCreateButton ("Добавить", 10, 200, 85, 25)
GUICtrlSetOnEvent ($go, "_go")
$1 = GUICtrlCreateLabel ("1", 1, 1, 1, 1)
GUISetState (@SW_SHOW, $gui)
Do
If GUICtrlRead ($v_land) = "" Then
GUICtrlSetState ($v_razdel, $GUI_DISABLE)
GUICtrlSetState ($v_razdel_l, $GUI_DISABLE)
Else
GUICtrlSetState ($v_razdel, $GUI_ENABLE)
GUICtrlSetState ($v_razdel_l, $GUI_ENABLE)
Do
$2 = GUICtrlRead ($v_razdel)
If $2 = "" Then
GUICtrlSetState ($v_podrazdel, $GUI_DISABLE)
GUICtrlSetState ($v_podrazdel_l, $GUI_DISABLE)
Else
If $2 = "Третий" Then
GUICtrlSetState ($v_podrazdel, $GUI_ENABLE)
GUICtrlSetState ($v_podrazdel_l, $GUI_ENABLE)
Do
If GUICtrlRead ($v_podrazdel) = "" Then
GUICtrlSetState ($v_punkt, $GUI_DISABLE)
GUICtrlSetState ($v_punkt_l, $GUI_DISABLE)
Else
GUICtrlSetState ($v_punkt, $GUI_ENABLE)
GUICtrlSetState ($v_punkt_l, $GUI_ENABLE)
EndIf
Until 1
Else
GUICtrlSetState ($v_podrazdel, $GUI_DISABLE)
GUICtrlSetState ($v_podrazdel_l, $GUI_DISABLE)
EndIf
EndIf
Until 1
EndIf
Until 0
EndFunc
While 1
sleep (1000)
WEnd
Func _CLOSE ()
Exit
EndFunc
А также, если я выбрал все 4 combo, а потом изменил во втором ("Выберите раздел") значение с "Третий" на "Четвертый", то необходимо, чтобы расположенные ниже combo стали Disable.
Надеюсь, доступно объяснил. Заранее спасибо!