Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.06.2024, 08:58   #1
NNK_RTR
Пользователь
 
Регистрация: 14.08.2019
Сообщений: 18
По умолчанию Сортировка в VirtualTreeView

В моей программе для сохранения и обработки данных (строк) используется 8 списков строк. Каждый список строк отображается в отдельном столбце VirtualTreeView
На данный момент сортировка по столбцу VirtualTreeView выполняется средствами TStringList, но списки строк большие (5000 строк и может быть больше) и сортировка выполняется очень медленно.

Как выполнить сортировку средствами VirtualTreeView?
Все найденные в сети примеры основаны на записях (record).
Сейчас мною используется запись:
Код:
type
  // PCounter = ^TCounter;
  TCounter = record
    Num:String;   // порядковый номер
    Ang: String;   // текст на английском
    Rus: String;   // текст на русском
    LenO: String; // размер оригинала
    LenT:String;  // размер перевода
    LinO:String;  // ссылка на оригинальную строку
    LinT:String;  // ссылка на переведенную строку
    sCo:String;   // кодировка
    sEr:String;   // номер ошибки
    end;
    PCounter = ^TCounter;
Попытка изменить String на TStringList ни к чему не привела, все работает, как прежде (понятно почему)
Функция "VSTGetText" требует указатель. Если передать PCounter, то списки строк пустые

1. Расскажите, желательно популярно, как отсортировать таблицу средствами VirtualTreeView с учетом выше сказанного
2. Как создать указатель на уже заполненный список строк

С уважением, Николай
NNK_RTR вне форума Ответить с цитированием
Старый 30.06.2024, 08:47   #2
Алексей1153
фрилансер
Участник клуба
 
Регистрация: 11.10.2019
Сообщений: 1,018
По умолчанию

NNK_RTR, я не дельфист, у меня общие вопросы:
а почему вообще там списки? Почему не один единственный массив?

И почему там огульно строки, хотя некоторые поля - это просто числа?
Алексей1153 вне форума Ответить с цитированием
Старый 30.06.2024, 10:15   #3
NNK_RTR
Пользователь
 
Регистрация: 14.08.2019
Сообщений: 18
По умолчанию

В моем случае абсолютно неважны типы полей списка, неважно, что это, массив или запись.
Все равно я обрабатываю и сохраняю данные в списках строк (TStringList), а таблицу использую только для отображения.
Компоненту (VirtualTreeView) нужно передать указатель на блок памяти и размер этого блока, который он может использовать в своих интересах. (то есть, можно просто выделить блок памяти и передать размер блока и указатель на блок)

В общих случаях, массив можно использовать для отображения статических данных (данные будут только отображаться, изменить их вероятно можно, но добавить новые не получится. Если использовать записи (record), то таблицу можно заполнять в процессе работы.

Это мой первый опыт работы с этим компонентом. Все, что я знаю, я почерпнул из статьи и если Вам это нужно, или просто интересно, просмотрите ее (статью). А я мог чего нибудь переврать или не полностью ответить на Ваш вопрос

С уважением, Николай
NNK_RTR вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по VirtualTreeView v258 Компоненты Delphi 1 02.10.2019 11:55
Группировка в virtualtreeview phpmullin Компоненты Delphi 3 03.06.2016 14:58
VirtualTreeView bilibian Общие вопросы Delphi 6 06.08.2014 17:02
VirtualTreeView vs. Delphi XE Kasyan666 Компоненты Delphi 6 30.06.2011 15:54
Работа с VirtualTreeView Mitron Общие вопросы Delphi 31 20.07.2010 13:45