Автор Тема: [Элементы GUI] как правильно создать дополнительные элементы GUI  (Прочитано 3170 раз)

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

Оффлайн proteus86 [?]

  • Новичок
  • *
  • Сообщений: 9
  • Репутация: 0
    • Награды
Здравствуйте! Давно меня интересовал ворос создания элементом GUI  ранее не описанных и не предусмотренных в программе.
Есть заготовка окна.
При нажатии кнопки BeginClick создается еще одна вкладка.Вопрос в том как правильно в таком случае вытаскивать данные со всех вкладок и как поступатьс функциями обработки нажатия кнопок? Нашел функцию  Assign .Только с ее помощью можно создавать ранее не созданные гуи  элементы в программе.
И вообще посоветуйте как правильно организовывать создание ранее не предусмотренных гуи элементов в программе. Что делать с переменными как вытягивать данные из вновь созданных элементов.
(нажмите для показа/скрытия)

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


Оффлайн erlik [?]

  • Продвинутый
  • ***
  • Сообщений: 317
  • Репутация: 83
    • Награды
  • Версия AutoIt: 3.3.8.1
proteus86
Сложности тут большой нет (только причем тут Assign так и не понял, ни разу эта функция не пригодилась). Создать новый элемент можно(а зачастую и нужно) в любой момент работы скрипта, динамически. Примеры как есть, наверно, в большинстве программ выложенных здесь в разделе рабочих проектов. В моей программе OperaHistory есть, например, вкладка Tab'а 'Настройки',  а  в ней TreeView c пунктами\разделами настроек, элементы которых отображаются в правой части от TreeView на клик того или иного пункта. Таким образом получаем минимум рабочего пространства для кучи настроек, все элементы правой части создаются и удаляются динамически после клика на новый пункт. А идентификаторы контролов пишутся в специальный массив $aSettings.
    Если ты создаешь элемент, с которым в дальнейшем будешь работать - получать от него данные, события и т.д., то значит нужно\желательно, где то сохранять его идентификатор\хендел. Сохранять можно просто в глобальных (для доступа из вне функции) переменных, но если элементов много, то стоит подумать о создании глобального массива, куда и писать нужные идентификаторы\данные.  Вариант с массивом лично для меня предпочтительней, так как это  зачастую просто удобнее: можно потом простым циклом и удалить элементы или чего-нибудь другое сделать с ними в массовом порядке.
PS: В любом случае тебе стоит глянуть примеры скриптов, где элементы создаются динамически, чтобы понять сам принцип их создания и работы с ними.

Оффлайн AZJIO [?]

  • VIP
  • *
  • Сообщений: 2741
  • Репутация: 1143
    • мой сайт
    • Награды
  • Версия AutoIt: 3.3.8.1
proteus86
Используй GUISwitch. Там пример есть показывающий добавление кнопки. Кроме переключения окон используется именно для создания новых элементов на вкладках. Не забывай закрывать добавление, все как в примере и описании.

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


Оффлайн proteus86 [?]

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

  • Автор темы
  • Репутация: 0
    • Награды
Спасибо за комментарии теперь я немного представляю как создавать новые кнопки и формы !
буду пробовать.


Добавлено: Январь 28, 2014, 00:55:58
Попытался разобраться в приведенном примере программы опера хистори (нашел еще и сборку с кучей готовых скриптов) но там столько много кода что  :stars: есть возможность у знатоков накидать манюсенький пример кода создания динамической формы\таба с кнопками функциями обработки кнопок и вытаскиванием инфы из элементоф гуи
« Последнее редактирование: Январь 28, 2014, 00:55:58 от proteus86, Причина: Объединение сообщений »

Оффлайн AZJIO [?]

  • VIP
  • *
  • Сообщений: 2741
  • Репутация: 1143
    • мой сайт
    • Награды
  • Версия AutoIt: 3.3.8.1
proteus86
Пример писать лень, но могу на словах: В главный цикл опроса новый под-Case не вставить. Поэтому при добавлении элемента нужно использовать массив с количеством элементов в первом [0 ] элементе массива. Если вы хотите добавить новый элемент, то увеличиваете массив и добавляете новый идентификатор. В главном цикле запускаешь цикл For по количеству элементов массива и уверенно получишь событие от любого идентификатора, потому что For пройдётся по всем элементам массива, сколько бы он не увеличивался.

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


 

Похожие темы

  Тема / Автор Ответов Последний ответ
6 Ответов
4519 Просмотров
Последний ответ Декабрь 07, 2011, 11:01:42
от BaRsupillamy
6 Ответов
5266 Просмотров
Последний ответ Июнь 05, 2012, 15:38:32
от general66
6 Ответов
4056 Просмотров
Последний ответ Февраль 06, 2013, 14:03:04
от madmasles
22 Ответов
6490 Просмотров
Последний ответ Июль 04, 2013, 19:21:59
от Jan-Jak
1 Ответов
2783 Просмотров
Последний ответ Август 19, 2013, 19:49:03
от ivsatel
0 Ответов
907 Просмотров
Последний ответ Июль 07, 2015, 02:46:38
от joiner
1 Ответов
1034 Просмотров
Последний ответ Февраль 16, 2016, 14:36:31
от mmsgeorge
8 Ответов
2039 Просмотров
Последний ответ Ноябрь 27, 2016, 19:09:53
от mrPuh
2 Ответов
937 Просмотров
Последний ответ Декабрь 28, 2017, 23:51:42
от RAVAD
6 Ответов
587 Просмотров
Последний ответ Март 25, 2019, 04:42:16
от AZJIO