|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
||||||
Как добавить в список ListBox большое количество строк, чтобы это было быстро по времени?27.09.2023, 11:31. Показов 7015. Ответов 125
Всем привет! У меня есть листбокс List1 в VB6 и я пытаюсь добавить в этот список много строк, скажем 10 тысяч строк, но я хочу добавить их таким образом, чтобы они добавились быстро по времени, а не ждать целую секунду... Я этого делать не умею, поэтому помогите пожалуйста! Единственный лайфхак который я нашёл это сначала скрывать список а потом показывать так можно добавить в список много строк в 3 раза быстрее, но для 10 тысяч строк это всё равно занимает целых пол секунды времени...
Добавлено через 24 минуты Вопрос: почему не работает сообщение LB_INITSTORAGE? Добавлено через 24 секунды Скорость добавления в листбокс никак не изменилась!
0
|
||||||
| 27.09.2023, 11:31 | |
|
Ответы с готовыми решениями:
125
Как быстро создать список на большое количество элементов? Максимально быстро записать большое количество строк SQLite Как сделать так чтобы из продуктов можно было добавить в блюда и это списывалось все на кухне |
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
|||||||
| 29.09.2023, 23:27 [ТС] | |||||||
|
The trick, да, можно, если взять контрол отсюда: https://www.vbforums.com/showt... n-controls) но там сидеть выковыривать несколько часов нужно код. я наверное для простого листобка попробую повыковыривать)
Добавлено через 13 минут Для текстбокса помню сидел пол дня выковыривал, там у них куча зависимостей моделей и классов писали не ахти, ну оч много зависимостей и что самое печальное нет каждого контрола отдельно Добавлено через 7 минут Контролы эти хоть и очень хорошие, у иностранцев, но написаны они крайне неудобно, нет чтобы всё вшить в одни CTL-файл, так они с кучей зависимостей 500 разных модулей классов и TLB добавлять надо, крайне неудобно, часами выковыривать надо, а в результате ещё + 200 КБ exe будет весить... Добавлено через 1 час 17 минут Кстати ихний контрол ListBoxW1 имеет событие пользовательской отрисовки списка даже! И при этом не нужно даже использовать класс clsTrickListBox.cls. Это очень интересный контрол. Считай свой список - рисуй что хочешь + мгновенное добавление тысячами строк за счёт свойства ListBoxW1.Redraw запрета перерисовки элемента Добавлено через 39 секунд У них есть крутое событие вообще:
Такое же, как и если использовать clsTrickListBox получается... Добавлено через 1 час 6 минут
0
|
|||||||
|
Модератор
|
||
| 30.09.2023, 00:06 | ||
|
По теме, у меня кстати есть идея как можно загрузить в список из массива напрямую.
0
|
||
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
||
| 30.09.2023, 00:13 [ТС] | ||
|
0
|
||
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
|
| 30.09.2023, 00:48 [ТС] | |
|
Вот!
0
|
|
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
|
| 30.09.2023, 00:56 [ТС] | |
|
А вот тут в три раза быстрее. 31 миллисекунда на 10000 позиций. А вот в ListBoxW1 там 100 млск.
1
|
|
|
|
||
| 30.09.2023, 17:52 | ||
|
Тоже вот думаю, заменить у себя в проге все контролы на юникодные от Krool. Только дилема, либо заюзать ocx, отказавшись от stand-alone exe, либо воткнуть в exe и заиметь проблемы с вылетами по нажатию Stop. HackerVlad, полезная тема. Как раз переписывал редактор hosts файла, а там рандомно может попастся хоть 10000 записей в ListBox. И вот думаю, либо последовать совету и выводить список чанками, тогда придётся втыкать доп. контролы перелистывания порций данных, либо какой-то хак ускоренной загрузки прикрутить, либо замена ListBox. В C# для этого есть интересная штука - виртуальный режим: подгружает в список элементы по требованию, по мере прокрутки.
0
|
||
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
||
| 30.09.2023, 17:56 [ТС] | ||
|
0
|
||
|
Модератор
|
||||
| 30.09.2023, 18:46 | ||||
|
1
|
||||
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
||
| 30.09.2023, 21:13 [ТС] | ||
|
Добавлено через 1 минуту Dragokas, даже с кодом выхода "End" нету проблем, убедись сам! Как добавить в список ListBox большое количество строк, чтобы это было быстро по времени?
0
|
||
| 30.09.2023, 22:44 | |
|
Не по теме: HackerVlad, ну там краш из-за сабклассинга. Конкретно, я проверял на ListView. Убирать хук, получив сообщения WM_NCDESTROY, WM_UAHDESTROYWINDOW пробовал, но не спасает. Там ещё не такой простой колбек.
0
|
|
| 30.09.2023, 23:07 | |
|
0
|
|
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
||||
| 01.10.2023, 09:51 [ТС] | ||||
|
Dragokas, The trick, зачем вы скрыли свои рейтинги? чтобы другие не завидовали?))))
Добавлено через 2 минуты Добавлено через 2 минуты Добавлено через 34 секунды Dragokas, ты скачал новую версию сентябрьскую с гитхаба? там пару недель назад обновление было Добавлено через 8 минут
1
|
||||
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
|
| 01.10.2023, 09:56 [ТС] | |
|
Dragokas, специально для тебя: смотри сам, останавливай сколько хочешь раз по кнопке Стоп и хоть через кнопку с кодом End
1
|
|
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
||||||
| 01.10.2023, 10:30 [ТС] | ||||||
|
Вот здесь по этой ссылке лежат все выдранные контролы: https://www.vbforums.com/showt... Twosie-use
Эх, знал бы не выдирал бы сам по три часа... Добавлено через 5 минут Кстати там 10 тысяч строк в ListView добавляется целую секунду, я проверил Добавлено через 28 секунд Хотя там есть свойство Redraw Добавлено через 18 минут 234 млск с отключением через ListView1.Redraw = False
Выходит, что обычный ListBox быстрее чем ListView Добавлено через 3 минуты Все новые обновления контролов скачиваем здесь: https://github.com/Kr00l/VBCCR... ion/Builds Добавлено через 1 минуту Krool до сих пор выпускает обновления и скорей всего сабклассинг он уже давно обновил, что теперь всё работает без вылетов в среде VB6
0
|
||||||
|
|
||||
| 01.10.2023, 11:05 | ||||
|
HackerVlad, спасибо, да, действительно не падает. Это радует. Я пользовался довольно старой версией.
Там всё элементарно собирается. P.S. Зависимости лучше оставлять в подпапках, так проще в плане навигации.
0
|
||||
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
||
| 01.10.2023, 12:20 [ТС] | ||
|
Dragokas, контролы у него хорошие но много зависимостей в модулях, думаю как бы это всё сократить и повыбрасывать всё лишнее
Добавлено через 30 минут Добавлено через 2 минуты Суть в другом, суть в том, что его контролы используют следующие модули: 1. ComCtlsBase.bas 2. Common.bas 3. VisualStyles.bas 4. VTableHandle.bas 5. ISubclass.cls Что занимает целых 153 КБ кода, это очень много я считаю. И использование любого такого контрола влечёт за собой увелечение размера EXE на 150 КБ это очень много, я считаю. Добавлено через 1 минуту Если честно я порой думаю самому проще на API писать всё вручную только то, то мне нужно, управлять всеми свойствами через вызовы SendMessage. Будет гораздо меньше зависимостей и размер будет минимальный. Вообще даже без контрола можно. А просто чисто кодом начиная с CreateWindowExW Добавлено через 11 минут Это охрененно много 150 КБ за собой тягать лишнего мусора, неужели Krool этого не понимает... Добавлено через 13 минут А и ещё плюс может быть проблема пересекающихся функций. Например в Common.bas уже написана функция AppPath а я люблю использовать свою. Таким образом легко Ambiguous name detected схлопотать. Добавлено через 56 секунд Там хоть и очень хорошие функции написаны конечно, но я всё же люблю свои. Добавлено через 11 минут В дельфи кстати, например, IDE сам просчитывает все функции и переменные, которые никогда не используются в коде программы, при компиляции высвечивается сообщение Never used такая-то переменная или функция. Жаль, такого нету в VB6 так мне легче было бы выбрасывать всё лишнее и подчищать всякий мусор
0
|
||
|
|
||||
| 01.10.2023, 12:51 | ||||
|
Не по теме:
Кликните здесь для просмотра всего текста
Иначе говоря, ты ведешь разработку своего проекта с подключенным OCX, а когда нужно собрать проект, юзаешь OCX2StdExe.exe, и он твой проект превращает в Stand-alone exe версию, копируя его в отдельную папку чисто для компиляции. В дальнейшем разработку проводишь все также с OCX зависимостью, что и безопасно в плане отладки, и удобно, т.к. не мешаются лишние файлы в дереве проекта. Если разложить по пунктам, то делается это так: 1) делаешь regsvr32 VBCCR17.OCX 2) создаёшь свой проект, в Components добавляешь ссылку на VB Common Control's replacement 3) сохраняешь, выходишь 4) Запускаешь OCX2StdExe.exe, указываешь путь к твоему проекту 5) Жмешь Options (лучше проставить навверху все галочки) 6) Krool Base folder - вписываешь полный путь к папке \VBCCR\Standard EXE Version\ (исходники VBCCR17) 7) закрывваешь "Save Values & Exit" (это чтобы повторно не заполнять тоже самое) 8) снова запускаешь OCX2StdExe.exe, жмешь Compile w/o OCX И на этом всё, проект соберется и скомпилируется как Stand-alone OCX. Только не деле сейчас конкретно текущую версию VBCCR17 он не поддерживает. См.: report Ждём обновления или фиксим сами. Времена Win98 и медленной памяти и дисков давно закончились. Ты же не прошивку под калькулятор пишешь.
0
|
||||
| 01.10.2023, 12:51 | |
|
Как исправить, чтобы количество столбцов и строк StringGrid было таким, как ввел пользователь Как добавить значения с Листа в Listbox, если количество строк может меняться
Поиск минимального времени выполнения теста, чтобы количество набранных баллов было максимальным Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу)))
Критические ошибки, мешающие компиляции и. . .
|
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата)
Этот документ предназначен для того, чтобы новый чат Claude мог продолжить
работу без необходимости заново разбираться в. . .
|
сукцессия 15 неявная схема
anaschu 29.06.2026
Алиса
Калибровка параметров симбиотической модели: технический обзор
Содержание:
Введение
Постановка проблемы
Технические аспекты реализации
Процесс внедрения изменений
|
сукцессия 14. Обновленная схема модели
anaschu 28.06.2026
ГЛОБАЛЬНАЯ ОПИСАТЕЛЬНАЯ СПЕЦИФИКАЦИЯ ЭКОСИСТЕМНОЙ МОДЕЛИ «SOIL CHEMISTRY & MYCORRHIZA 2. 0»
https:/ / ibb. co/ NnkGpfMd
Представленная интегрированная схема описывает непрерывную нелинейную. . .
|
|
сукцессия 13. Питон модель трехзонного мицелия, пока что в основном арбускулярного
anaschu 28.06.2026
## Разработка агентной модели микоризной сукцессии: от выявления артефактов к созданию комплексной системы
### Аннотация
Представлено исследование по разработке агентной модели микоризной. . .
|
сукцессия 12. краткий список проверок модели перед запуском.
anaschu 27.06.2026
Скрытые отказы в моделях систем динамики (SD-models) экологических систем: два случая из практики
Контекст
Разбирался прототип модели систем динамики (SD-модели) микоризной сукцессии: пять. . .
|
Сукцессия 11. Проверка орудий перед войной: разработка через тестирование
anaschu 27.06.2026
Как не дать модели соврать самой себе: проверки для симуляции микоризной сукцессии
Введение
Когда вы строите математическую модель живой системы — грибов, растений, почвы — главная опасность. . .
|
10 сукцессия. Питон код войны грибов и растений
anaschu 27.06.2026
import numpy as np
class PlantAgent:
def __init__(self, name, strategy, initial_biomass):
self. name = name
self. strategy = strategy # "greedy" (широколиственные) или. . .
|