Что нового

[Элементы GUI] ComboBox не отвечает после инициализации

RUVATA

лучше один раз увидеть, чем десять раз услышать...
Сообщения
132
Репутация
38
Всем доброго времени суток...

Создаю ComboBox (GUICtrlCreateCombo) изначально пустой... потом в цикле обработчика событий GUI
нажатием на кнопку хочу заполнить ComboBox... но он никак не реагирует

PS: Создавая аналогичный пример, только с кнопкой и комобоксом все работает... проблема где-то именно в конкретном скрипте, не могу понять почему...
Что может вызвать такое поведение ?
 

Garrett

Модератор
Локальный модератор
Сообщения
3 999
Репутация
964
Код:
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

Dim $aData[5] = ['Autoit','Perl','PHP','Java','C++']

$GUI1 = GUICreate("Языки программирования", 249, 36, 468, 474)
$Combo1 = GUICtrlCreateCombo("", 12, 7, 145, 25)
$Button1 = GUICtrlCreateButton("Заполнить", 166, 7, 71, 21, 0)
GUISetState(@SW_SHOW)

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Button1
			For $i = 0 To UBound($aData) -1
				If $aData[$i] = 'PHP' Then _
					GUICtrlSetData($Combo1, ""& $aData[$i]&"", $aData[$i])
					GUICtrlSetData($Combo1, ""& $aData[$i]&"")
			Next

	EndSwitch
WEnd
 
Автор
R

RUVATA

лучше один раз увидеть, чем десять раз услышать...
Сообщения
132
Репутация
38
Да я знаю как, я не понимаю, почему у меня в процессе работы, как бы "зависают" разные контролы...
т.е. все мои GUICtrlSetData, GUICtrlSetState и т.д. перестают приносить результат... и ошибок никаких
все инструкции окружал msgbox - ами они отрабатывают... ничего не пойму...
Контролы как ни будь можно перезагрузить? ну или определить их состояние...
так как например у меня Label с определенного момента несмотря на то, что кажет внутри себя текст -
GUICtrlRead возвращает "0"
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 319
RUVATA,
Вы бы пример своего кода привели, а то гадать сложно...
 
Автор
R

RUVATA

лучше один раз увидеть, чем десять раз услышать...
Сообщения
132
Репутация
38
весь код для Вас бесполезен, так как завязан на несколько других приложений включая локальный веб-сервер...
когда я пытаюсь воспроизвести ситуацию с отдельными частями кода - все нормально, стоит собрать все вместе - вот такая загогулина...
Я хотел спросить что может вызвать такое поведение, чтобы поискать проблему...
но ума не приложу... с одним контролом разобрался просто переместив функцию код в обработчика событий, на одноразовый эмиттер... но вскоре обнаружился еще один...
я пробую сделать пример, но при изменении условий пропадает сам факт
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 473
Репутация
2 403
RUVATA [?]
весь код для Вас бесполезен
Для нас да, возможно и бесполезен, но если тебе нужна помощь, то выложив код ты её быстрее получишь.

P.S
Когда я начинал писать коды, и сталкивался с проблемами, корень которых мне не был известен, я делал резервную копию своего творения, и поэтапно удалял функциональность программы (“подозрительные” куски кода), проверяя код после каждого этапа, и так пока проблема не исчезала. Вот так методом элиминаций я находил проблемную часть кода, и уже копался в ней, так по крайней мере было легче решать проблему.
 
Автор
R

RUVATA

лучше один раз увидеть, чем десять раз услышать...
Сообщения
132
Репутация
38
Как не хватает человеческого дебаггера :smile: Правда ?
Проблема обнаружилась... Банальная невнимательность...
Некоторая часть функционала разрабатывалось отдельно, тестировалась потом внедрялась в основной код...
Так вот с одним из вновь добавленных участков кода, было совпадение имени глобальной переменной которая содержит "хендл" контрола, просто с Dim (объявлением) в теле оной из функций - переменной с тем-же именем.
PS: Долго ловил, так как она была объявлена, но не использовалась в коде функции и не бросалась в глаза.

CreatoR [?]
и поэтапно удалял функциональность программы (“подозрительные” куски кода)
да такой подход применим к скриптам (поэтапность выполнения) в частности AutoIt, VBS опять-же, как быть если ошибка проявляется на неопределенной итерации цикла (например того-же GUI)
ведь весь код успешно разрешается интерпретатором много раз подряд...
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 473
Репутация
2 403
RUVATA [?]
Как не хватает человеческого дебаггера
Правда ?
Нет :smile:
Для меня уже нет, раньше тоже этим страдал.

как быть если ошибка проявляется на неопределенной итерации цикла
Убирать постепенно количество итераций ;). Ну или тупо проверять значения после каждой итераций.
 
Верх