Что нового

Упрощение однотипных операций со скрытием-показом контролов

eus_deus

Новичок
Сообщения
75
Репутация
0
Всем привет!
Есть такой отрывок, ему подобных много, операции однотипные, но с разными элементами
Код:
GUICtrlSetState($aEdit[1], $GUI_HIDE)
  GUICtrlSetState($aEdit[2], $GUI_HIDE)
  GUICtrlSetState($Button1, $GUI_HIDE)
  GUICtrlSetState($Button3, $GUI_HIDE)
  GUICtrlSetState($Button4, $GUI_HIDE)
  GUICtrlSetState($Button5, $GUI_HIDE)
  GUICtrlSetState($Button10, $GUI_HIDE)
  GUICtrlSetState($Button11, $GUI_HIDE)
  GUICtrlSetState($Button13, $GUI_HIDE)
  GUICtrlSetState($Button16, $GUI_HIDE)

Хотел прописать так
Код:
For $i=1 To $aArray[0]
     GUICtrlSetState($aArray[$i], $GUI_HIDE)
  Next

Объявив такой массив (переменные вынесены в отдельный файл)
Код:
Global $aArray1=StringSplit("$aEdit[1]|$aEdit[2]|$Button1|$Button3|$Button4|$Button5|$Button10|$Button11|$Button13|$Button16","|")

Ожидаемого результата не вижу.
Понимаю, что массивы придется делать чуть ли не под каждый случай, но все таки это хоть немного сузит код
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5 379
Репутация
2 713
Все предельно просто. Для каждого типа элемента создаете свой массив, ну а дальше цикл...

Код:
Global $Button[10], $Edit[4], $Input[7]

$Button[0] = GUICtrlCreateButton()
$Button[1] = GUICtrlCreateButton()
$Button[2] = GUICtrlCreateButton()

For $i = 0 To 2
	 GUICtrlSetState($Button[$i], $GUI_HIDE)
Next


Есть еще одна хитрость - при создании элементов, их ID генерятся последовательно. Но я бы не советовал так делать, т.к. легко запутаться.

Код:
Global $Button[10], $Edit[4], $Input[7]

$Button[0] = GUICtrlCreateButton()
$Button[1] = GUICtrlCreateButton()
$Button[2] = GUICtrlCreateButton()

For $i = $Button[0] To $Button[2]
	 GUICtrlSetState($i, $GUI_HIDE)
Next
 
Автор
E

eus_deus

Новичок
Сообщения
75
Репутация
0
Yashied сказал(а):
Все предельно просто. Для каждого типа элемента создаете свой массив, ну а дальше цикл...
Не совсем просто. Ну нет так нет, тогда пусть громоздким и остается
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5 379
Репутация
2 713
А что тут сложного? Развивайте тему, если хотите получить ответ.
 
A

Alofa

Гость
Код:
Global $aArray[10]=[$aEdit[1], $aEdit[2], $Button1, $Button3, $Button4, $Button5, $Button10, $Button11, $Button13, $Button16]

For $i In $aArray
    GUICtrlSetState($i, $GUI_HIDE)
Next


Yashied прав. Чтобы работать с элементами вы так и так назначаете им переменные - так почему же эти переменные, для однотипных элементов, не назначить в виде массива?
Так и работать проще.
 
Автор
E

eus_deus

Новичок
Сообщения
75
Репутация
0
Всем спасибо. Телодвижений будет больше, чем планировалось, но ничего - реализуется. Тема закрыта, до встречи
 
Верх