|
101 / 38 / 0
Регистрация: 16.09.2014
Сообщений: 426
|
||||||
ListBox ActiveX с уникальными значениями21.08.2015, 20:52. Показов 1641. Ответов 6
Метки нет (Все метки)
Нужен контрол ListBox, который будет
1) при AddItem проверять, нет ли уже в ListBox такого значения и добавлять только в том случае, если вводимое является уникальным 2) дополнительно к Sorted, нужно свойство SortRevers, то есть сортировка в обратном порядке. То есть нужно чтоб сортировка вообще включалась/отключалась (Sorted=True/False) и если сортировка включена, чтоб сортировало так, как диктует SortRevers=True/False (обратная/прямая сортировка). Проблема собсно, в чём - написать несколько строк проверки уникальности я могу сам, но никак не могу понять куда мне её вписывать, прочёл кучу всяких текстов по созданию контролов, Эскина того же, но, что поделаешь - тупой видимо, никак не могу создать листбокс! Отсюда две просьбы: 1)Не может ли кто-нибудь сделать так сказать "шаблон" пользовательского ListBox контрола из обычного ListBox и указать внутри где мне вставить проверку уникальности. Вроде это для знающего человека совсем несложно. Типа :
То есть я как представляю, если я хочу сделать обратную сортировку, сперва должно устанавливаться Sorted=True (отсортировалось нормально), затем Sorted=False и только после этого я манипулирую с элементами списка для сортировки в обратном порядке, да? или бред? Заранее благодарен!
0
|
||||||
| 21.08.2015, 20:52 | |
|
Ответы с готовыми решениями:
6
Нужно изменять размер шрифта в ActiveX в зависимости от размера самого ActiveX ActiveX и VB, получение значения из ActiveX
|
|
|
||||||
| 22.08.2015, 21:04 | ||||||
|
Если у ListBox-а установлен стиль LBS_SORT, расположение добавляемых через сообщение LB_ADDSTRING строк определяется с помощью другого сообщения - WM_COMPAREITEM.
Поскольку у этого контрола из-за его специфики работы стиль LBS_SORT является ReadOnly, Вы можете либо создать поверх еще один контрол ListBox с .Soretd = true, управляя видимостью или очередностью окон. Либо реализовать это своим алгоритмом сортировки, таким образом прочитав все элементы ListBox-a в массив. На счет проверки, уникален ли элемент, можно воспользоваться сообщением
Добавлено через 3 минуты Если контрол делать свой, то можно и завести себе локально словарь (Scripting.Dictionary), куда параллельно с ListBox-ом заносить добавляемые значения. Таким образом значительно ускорите проверку на уникальность.
2
|
||||||
|
101 / 38 / 0
Регистрация: 16.09.2014
Сообщений: 426
|
|||||||||||||||||||||
| 23.08.2015, 02:45 [ТС] | |||||||||||||||||||||
|
Поскольку, прочитав кучу руководств по созданию ActiveX-контролов (29, Карл! 29!) я так ни черта и не понял (гордо несу знамя заслуженного ламера!), буду пытаться получить ответы здесь. Надеюсь, кто-нибудь поможет.
Непонятного много, поэтому буду спрашивать порциями. Попытаюсь сформулировать, что мне нужно от листбокса (назовём его допустим UVList – то есть, Unical Value List): 1) Unical As Boolean – если True, то при AddItem новый элемент добавляется только если в списке нет такого же, если False – листбокс работает как стандартный, если в теле проги поступает команда UVList1.Unical=True, то если UVList1 непустой, все дупликаты должны удалиться. Создал User контрол UVList с List1 внутри
'---------------- Dragokas, спасибо конечно, за помощь, но я очень ламер и для меня это как-то сложно очень, это не мой уровень к сожалению...
0
|
|||||||||||||||||||||
|
Модератор
|
|
| 23.08.2015, 08:31 | |
|
https://www.cyberforum.ru/post7049019.html
Вот пример необычного листбокса. Можешь модифицировать его как нужно.
2
|
|
|
101 / 38 / 0
Регистрация: 16.09.2014
Сообщений: 426
|
||||||
| 23.08.2015, 17:57 [ТС] | ||||||
|
TheTrick, спасибо вам за контрол, правда почти ничего не понятно, но надеюсь на вашу помощь (с переводом в монохромный рисунок вы мне ОЧЕНЬ помогли и просветили, пользуюсь моментом ещё раз поблагодарить!)
Во-первых никак не смог вычленить из кода всё, что относится к этой нестандартной функции ротации строк листбокса, хочется иметь «чистый» контрол. Не могу понять роль GRANULARITY. Ну, да это ладно, главное, что не понимаю: что надо сделать, чтоб у контрола вообще появились свойства Unical,Sort и SortAscDsc (см. ниже), что надо сделать, чтоб эти свойства были Read/Write в обоих режимах - и Runtime и Designtime. Короче, ни бум-бум… Сортировки, удаление дупликатов – это не проблема, работу с массивами на таком уровне я знаю, проблема в том, что я совершенно не понимаю механизмов, структуры и синтаксиса этого всего дела (29 прочитанных источников мне не помогли, к сожалению)… Я всё же наберусь наглости и попрошу вас - не могли бы вы наваять (простите за фамильярность!) такой же контрол, как вы выложили, но без наворотов, простенький, и сделать структуру, а сами сортировки и удаление дупликатов я бы сам вставил. Да и на примере сделанного вами я бы уже смог понять, как мне в дальнейшем создавать такие контролы с другими, нужными мне свойствами. Контрол используется чисто как контейнер для сортировки и бездупликативности, ему даже скролы не нужны, да и вообще почти ничего, в основном он в режиме Visible=False работает, ну иногда только при отладке проги нужно посмотреть, правильно ли данные в него закачаны. 1) Unical As Boolean – если True, то при AddItem новый элемент добавляется только если в списке нет такого же, если False – листбокс работает как стандартный, если в теле проги поступает команда UVList1.Unical=True, то если UVList1 непустой, все дупликаты должны удалиться. 2) Sort (As Boolean) – если Sort =True, то при AddItem список сортируется, если False – листбокс работает как стандартный, если в теле проги поступает команда UVList1.Sort =True, то если UVList1 непустой, список должен отсортироваться. 3) SortAscDsc (As Boolean) – указывает направление сортировки, SortAscDsc =True - в возрастающем порядке, SortAscDsc = False - в убывающем, если в теле проги поступает команда UVList1. SortAscDsc =True/False , то если UVList1 непустой, список должен отсортироваться соответственно True/False. Со структурой вроде бы несложно и всё ясно:
0
|
||||||
|
Модератор
|
|
| 23.08.2015, 19:41 | |
|
В данный момент не имею компьютера, может позже помогут.
Добавлено через 2 минуты Кстати я как-то здесь выкладывал код сканирования реестра, так вот там использовалась наипростейшая хеш-таблица и дубликаты автоматически отвергались. Добавлено через 11 минут https://www.cyberforum.ru/post6179213.html
1
|
|
|
101 / 38 / 0
Регистрация: 16.09.2014
Сообщений: 426
|
|
| 24.08.2015, 15:08 [ТС] | |
|
С помощью пендюлей от DIS (с форума на Исходниках) и уважаемого TheTrik наваял уродливый (советы-то были отличные, это я сам всё изуродовал), но работающий (вроде) контрол, кто сможет-протестируйте на ошибки и, конечно, критикуйте безжалостно:
0
|
|
| 24.08.2015, 15:08 | |
|
Помогаю со студенческими работами здесь
7
Создать новый список с уникальными значениями Удаление строк с уникальными значениями по столбцам в книге Заполнить массив уникальными значениями в определенном интервале Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет
значение производной при заданном х
Логарифм записывается как: (x-2)log(x^2+2) -. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|