Автор Тема: Упрощение однотипных операций со скрытием-показом контролов  (Прочитано 2356 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн eus_deus [?]

  • Новичок
  • *
  • Сообщений: 55
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Всем привет!
Есть такой отрывок, ему подобных много, операции однотипные, но с разными элементами
Код: AutoIt [Выделить]
  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)

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

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

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

Русское сообщество AutoIt


Помечен как лучший ответ пользователем eus_deus Отправлен Январь 11, 2016, 00:11:59

Оффлайн Yashied [?]

  • AutoIt MVP
  • Глобальный модератор
  • *
  • Сообщений: 5379
  • Репутация: 2700
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.x.x
Все предельно просто. Для каждого типа элемента создаете свой массив, ну а дальше цикл...

Код: AutoIt [Выделить]
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 генерятся последовательно. Но я бы не советовал так делать, т.к. легко запутаться.

Код: AutoIt [Выделить]
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



Думай, прежде чем говорить.

Оффлайн eus_deus [?]

  • Новичок
  • *
  • Сообщений: 55

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Все предельно просто. Для каждого типа элемента создаете свой массив, ну а дальше цикл...
Не совсем просто. Ну нет так нет, тогда пусть громоздким и остается

Русское сообщество AutoIt


Оффлайн Yashied [?]

  • AutoIt MVP
  • Глобальный модератор
  • *
  • Сообщений: 5379
  • Репутация: 2700
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.x.x
А что тут сложного? Развивайте тему, если хотите получить ответ.

Alofa

  • Гость
Код: AutoIt [Выделить]
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 прав. Чтобы работать с элементами вы так и так назначаете им переменные - так почему же эти переменные, для однотипных элементов, не назначить в виде массива?
Так и работать проще.
« Последнее редактирование: Январь 11, 2016, 01:02:15 от Alofa »

Русское сообщество AutoIt


Оффлайн eus_deus [?]

  • Новичок
  • *
  • Сообщений: 55

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Всем спасибо. Телодвижений будет больше, чем планировалось, но ничего - реализуется. Тема закрыта, до встречи

Русское сообщество AutoIt


 

Похожие темы

  Тема / Автор Ответов Последний ответ
7 Ответов
3547 Просмотров
Последний ответ Август 04, 2011, 14:50:31
от prokazzza
2 Ответов
1992 Просмотров
Последний ответ Декабрь 15, 2011, 22:22:18
от prokazzza
15 Ответов
5303 Просмотров
Последний ответ Октябрь 11, 2012, 07:53:06
от Kaster
6 Ответов
3062 Просмотров
Последний ответ Февраль 20, 2014, 16:21:16
от AZJIO
0 Ответов
850 Просмотров
Последний ответ Февраль 20, 2014, 15:00:40
от madmasles
4 Ответов
1357 Просмотров
Последний ответ Март 12, 2016, 17:02:07
от BlackPhreaker
1 Ответов
2373 Просмотров
Последний ответ Апрель 11, 2016, 09:49:37
от Alofa
0 Ответов
2243 Просмотров
Последний ответ Апрель 12, 2016, 01:44:39
от CreatoR
1 Ответов
673 Просмотров
Последний ответ Сентябрь 13, 2016, 00:28:06
от Alofa
3 Ответов
485 Просмотров
Последний ответ Сентябрь 17, 2018, 14:19:41
от joiner