Автор Тема: GUISelButton - Выбор нескольких вариантов из выпадающего списка  (Прочитано 2450 раз)

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

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7827
  • Репутация: 2288
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
AutoIt: 3.3.10.2 - 3.3.14.2
Версия: 1.2

Категория: Элементы GUI

Описание: Создание (псевдо) элемента GUISelButton для выбора нескольких вариантов из выпадающего списка.
Что то вроде ComboBox но с CheckBox-ами.
(используется библиотека GUIScrollBars_Ex от Melba23)

Код/Пример:
(нажмите для показа/скрытия)

Снимок:
Нажмите для отображения изображения в оригинальном размере.

Файл: GUISelButton.zip

История версий:
(нажмите для показа/скрытия)

Источник: autoit-script.ru
Автор(ы): G.Sandler (CreatoR)
« Последнее редактирование: Март 09, 2017, 05:46:59 от CreatoR »


Правила, Поиск, Супер тема


AutoIt is simple, subtle, elegant.


«Не оказываю тех. поддержку через ПМ/ICQ, и по электронной почте - для этого есть форум. (C)»
«Законы Мэрфи неоспоримы!»


Мои работы

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


Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7827

  • Автор темы
  • Репутация: 2288
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
Небольшое обновление:

Цитировать
1.1
* Добавлена возможность отмечать все элементы сразу.
* Несколько мелких исправлений.

Оффлайн ra4o [?]

  • Скриптер
  • ****
  • Сообщений: 800
  • Репутация: 140
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Почему-то игнорирует первый пункт в выпадающих списках - если выбран , то не показывает в списке выбранных, даже если установить "Sellect all", то первого пункта не будет.

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7827

  • Автор темы
  • Репутация: 2288
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
Да это моя ошибка, в следующей версии исправлю.
А пока можно заменить в библиотеке:

Код: AutoIt [Выделить]
    Local $iStart = ($ahGCSB_IDs[$hSelButton][$iGCSB_sSellAllText] ? 2 : 1)
   
    For $i = $iStart To $aInfo[0][0]


на

Код: AutoIt [Выделить]
    For $i = 1 To $aInfo[0][0]


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

Re: GUISelButton - Выбор нескольких вариантов из выпадающего списка
« Ответ #3 Отправлен: Январь 27, 2017, 02:52:20 »

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7827

  • Автор темы
  • Репутация: 2288
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
Цитировать
1.2
* Исправлена проблема связанная с тем что _GUICtrlSelButton_GetSelected не возвращала первый выбранный элемент.

Оффлайн TERMINAL [?]

  • Новичок
  • *
  • Сообщений: 18
  • Репутация: 1
    • Награды
Ув.CreatoR, я сначало создаю через _GUICtrlSelButton_Create пустышку, потом обрабатываю информацию для получения списка. Если попадается один пункт и я указываю без параметра "Select All" в _GUICtrlSelButton_SetData($TestKnopka, "Это пример"), то пункт этот не высвечивается-кнопка не реагирует.

Проблема получается в _GUICtrlSelButton_Create. Если указывать один пункт без разделителя "|"-срабатывает на ошибку и пропускается этот пункт для добавления. Если же добавить к пункту разделитель, тогда появляется два пункта с чекбоксами, один который пустой. Как для меня, выход-передавать обязательно разделитель, но не обрабатывать пустые значения. Поэтому добавил поправки в циклы _GUICtrlSelButton_Create и _GUICtrlSelButton_SetData:
Код: AutoIt [Выделить]
For $i = 1 To $aItems[0]
    If StringStripWS($aItems[$i], 3) = "" Then ContinueLoop
    If StringLen($aItems[$i]) > StringLen($sBigStr) Then
        $sBigStr = $aItems[$i]
    EndIf
Next

и
Код: AutoIt [Выделить]
For $i = 1 To $aItems[0]
    If StringStripWS($aItems[$i], 3) = "" Then ContinueLoop
    $aItems[$i] = GUICtrlCreateCheckbox($aItems[$i], 10, $iT, $aStrSize[0] + 10, 15)
    $iT += (($sSellAllCBText And $i = 1) ? 40 : 20)
Next

Буду дальше тестировать на глюки при внесении на мои изменения.
« Последнее редактирование: Октябрь 11, 2018, 11:35:55 от TERMINAL »

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

Re: GUISelButton - Выбор нескольких вариантов из выпадающего списка
« Ответ #5 Отправлен: Октябрь 10, 2018, 17:09:19 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
6 Ответов
2860 Просмотров
Последний ответ Август 01, 2014, 16:18:04
от madmasles
0 Ответов
954 Просмотров
Последний ответ Август 01, 2014, 13:50:37
от madmasles
9 Ответов
3444 Просмотров
Последний ответ Декабрь 18, 2014, 08:01:02
от xlgrgrc
0 Ответов
1114 Просмотров
Последний ответ Декабрь 16, 2014, 16:46:18
от madmasles
6 Ответов
2464 Просмотров
Последний ответ Январь 20, 2015, 10:42:29
от metlt
1 Ответов
938 Просмотров
Последний ответ Декабрь 03, 2015, 14:33:00
от kvitnitskiy
2 Ответов
1955 Просмотров
Последний ответ Июль 13, 2016, 03:03:52
от rafaga
1 Ответов
663 Просмотров
Последний ответ Август 22, 2017, 23:17:56
от Alofa
4 Ответов
1206 Просмотров
Последний ответ Ноябрь 04, 2017, 23:07:34
от Ruzarj
2 Ответов
696 Просмотров
Последний ответ Май 20, 2018, 06:53:49
от Arfull