Аватар для bedvit
1208 / 259 / 22
Регистрация: 20.05.2016
Сообщений: 1,136
Записей в блоге: 21

DataGridView для массивов COM SafeArray

04.12.2025, 22:33. Показов 725. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Мое почтение, джентльмены.
Хочу представить вашему вниманию подпиленный ListViev для массивов COM SafeArray (VT_ARRAY | VT_VARIANT).


См. Видео

Умеет:
+Показывать данные из массива в форме с помощью WinApi ListViev с возможностью редактирования строк и заголовка
+Сортировать
+Фильтровать
+Транспонировать
+Сериализовать данные в файл
+Десериализовать данные из файл
+Шифровать данные
+Выгружать на лист Excel
+Загружать данные с листа Excel
+Дозагружать данные с листа Excel
+Выгружать данные в новую или уже существующую сводную таблицу.
+Добавлять новые строки
+Копировать строки
+Удалять строки
+Перемещать строки
+Добавлять новые столбцы
+Копировать столбцы
+Удалять столбцы
+Перемещать столбцы
+Растягивать столбцы
+Копировать строки в буфер обмена
+Откатывать к сохраненному состоянию.

Особенности:
+Максимальное количество строк: 100 000 000
+Максимальное количество столбцов: через Excel C API xltypeMulti - максимум 65536 столбцов, через COM - тестировал 1 000 00 - работает, больше - не тестировал.
+Работает довольно шустро, т.к. данными и отрисовкой занимается сам, а не штатный WinApi ListViev.
+Для заголовка есть всплывающая подсказка с индексом столбца в текущем представлении с учетом перетаскивания столбца и индексом, который был первоначально у столбца при загрузки массива и сам текст заголовка.
+Для строк есть всплывающая подсказка, если текст не помещается полностью в ячейку - показывается полный текст ячейки в подсказке.

Как использовать - открыть файл-надстройку, выполнить код
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Option Explicit
 
Sub Test_XLLcmdDataGridView()
 
    Dim row, col, arrOut, x
    Dim sizeRow As Long: sizeRow = 65536
    Dim sizeCol As Long: sizeCol = 20
    Dim arrIn: ReDim arrIn(0 To sizeRow, 1 To sizeCol) 'первоначальный массив данных, далее заполняем рандомно (sizeRow=0-заголовок)
    
    'заполняем первоначальный массив с данными
    For row = 0 To sizeRow '0-заголовок
        For col = 1 To sizeCol
            arrIn(row, col) = row + col
        Next
    Next
 
    'XLL -передача массива СОМ через стандартный механизм Excel C API (xltypeMulti, максимум 65536 столбцов)
    arrOut = Application.RUN("XLLcmdDataGridView", 0, , arrIn)
 
    'COM - изменение массива на месте
    Dim bVBA As Object: Set bVBA = CreateObject("BedvitCOM.VBA") 'позднее связывание
    bVBA.DataGridView arrIn
 
End Sub
Бесплатно скачать надстройку можно здесь (мой архив на Народе ) или с моего сайта (там можно скачать по этой же ссылке, но есть информация по другим бесплатным инструментам)

P.S. Beta-версия, не все реализовано, что хотелось бы, и есть некоторые соображения, что еще можно добавить, но хотел послушать комьюнити.

Интересен ли такой инструмент?
4
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.12.2025, 22:33
Ответы с готовыми решениями:

Программирование одномерных массивов. Программирование двумерных массивов. Программирование динамических массивов VBA
1. Написать процедуру по упорядочению элементов заданного массива В в следующем порядке: сначала...

Как скопировать строки , отобранные по параметру из Datagridview в другой Datagridview
Добрый день! Имеется исходный Datagridview в котором есть строки в таком формате...

DataGridView в .txt
Добрый вечер. Делаю програмку. В DataGridView имею пять столбцов. Как построчно экспортировать...

1
 Аватар для bedvit
1208 / 259 / 22
Регистрация: 20.05.2016
Сообщений: 1,136
Записей в блоге: 21
05.12.2025, 12:48  [ТС]
Цитата Сообщение от bedvit Посмотреть сообщение
+Максимальное количество столбцов: через Excel C API xltypeMulti - максимум 65536 столбцов, через COM - тестировал 1 000 000 - работает, больше - не тестировал.
Пропал нолик (тестировался 1 млн.столбцов).

Сейчас работаю над форматом сохраняемого массива и заголовка для ListViev (нужно учесть разное: ширину столбца, ориентация текста или изображения, ID ресурса для изображения, класс окна для элементов массива данных и сами данные для заполнения списков (Edit, CheckBox, ComboBox, и т.д., см. рис.), возможно хранить состояние фокуса/выделения, возможно хранить тип данных (сейчас не хранится, а вычисляется автоматически, как в Excel, преобразуется, если может, по порядку в Long->Duoble->String).
Поэтому "Транспонировать/Сериализовать/Десериализовать/Шифровать" функционал только добавляется, но сам по себе уже есть в других инструментах и добавится, как только будет доработан формат для сохранения.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.12.2025, 12:48
Помогаю со студенческими работами здесь

Удаление строки datagridview и сохранение в базу данных access
как удалить выбраную строку в VB, и можно сохранить в БД через tableadapter1.update

Как перебрать DataGridView на форме циклом?
Привет всем! На форме есть 8 вкладок, и на каждой вкладке DataGrid (DataGrigView1, DataGridView2, и...

DataGridView операции с переменными в VB
Формула суммы: Вгран. Km, Нгран. n = 1 , т.е. n изменяется до m. C(m,n)*q (m,n) у меня...

Работа с DataGridView
Даны два массива, я ввожу данные в первый массив, сумма первых двух ячеек, т.е. (0,0) и (0,1)...

Выбранное значение из combobox выбрать в datagridview
ребята помогите пожалуста такой у меня вопрос : я выбираю значения из combobox которые...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru