Что нового

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

eus_deus

Новичок
Сообщения
118
Репутация
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,724
Все предельно просто. Для каждого типа элемента создаете свой массив, ну а дальше цикл...

Код:
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

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

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
А что тут сложного? Развивайте тему, если хотите получить ответ.
 
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

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