Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 Показ списка TMyRecord в виде таблицы без БД (VirtualDataSet)  [new]
Basketbol
Member

Откуда:
Сообщений: 50
Добрый день!
Какой best way для показа данных типа
  TMyList = array of TMyRecord;

или
  TMyList = TList<TMyRecord>


в виде таблицы?
6 сен 19, 13:41    [21965335]     Ответить | Цитировать Сообщить модератору
 Re: Показ списка TMyRecord в виде таблицы без БД (VirtualDataSet)  [new]
Basketbol
Member

Откуда:
Сообщений: 50
Подробнее:
Есть тип:
type TMyRecord = record 
  field1: integer;
  field2: string;
end

TListMyRecord = array of TMyRecord;
{или
TListMyRecord = TList<TMyRecord>;
}


Раньше, чтобы показать эти списки - я писал процедуры сохранения в базу, и показывал их как обычную таблицу.
Если бы научиться показывать данные прямо из переменных - мне бы не пришлось писать процедуры для сохранения и изъятия и
этих данных из базы.
6 сен 19, 13:48    [21965340]     Ответить | Цитировать Сообщить модератору
 Re: Показ списка TMyRecord в виде таблицы без БД (VirtualDataSet)  [new]
rgreat
Member

Откуда:
Сообщений: 5211
Сделай своего наследника от TDataSet на основе этого массива.
6 сен 19, 13:52    [21965348]     Ответить | Цитировать Сообщить модератору
 Re: Показ списка TMyRecord в виде таблицы без БД (VirtualDataSet)  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 11154
Basketbol,

Ключевое отличие списка от массива в том, что увеличение размера списка происходит более оптимально, за счет выделения избыточной памяти.

Т.е. если при формировании данных вы знаете их количество, то лучше использовать массив, если нет, то TList
6 сен 19, 13:53    [21965350]     Ответить | Цитировать Сообщить модератору
 Re: Показ списка TMyRecord в виде таблицы без БД (VirtualDataSet)  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 48141

Basketbol
в виде таблицы?

TDrawGrid.

TListView стиля Report в режиме virtual.

Posted via ActualForum NNTP Server 1.5

6 сен 19, 14:05    [21965360]     Ответить | Цитировать Сообщить модератору
 Re: Показ списка TMyRecord в виде таблицы без БД (VirtualDataSet)  [new]
Basketbol
Member

Откуда:
Сообщений: 50
Я забыл уточнить:
это master - detail данные.
Т.е.
type TMyDetailData = record
  field1 : integer;
  field2 : string;
end;

type TMyMasterData = record
  name: string;
  listDetail: array of TMyDetail;
end; 

Что то типа того.
6 сен 19, 14:15    [21965368]     Ответить | Цитировать Сообщить модератору
 Re: Показ списка TMyRecord в виде таблицы без БД (VirtualDataSet)  [new]
Basketbol
Member

Откуда:
Сообщений: 50
rgreat
Сделай своего наследника от TDataSet на основе этого массива.

Можете ткнуть меня в пример ?
6 сен 19, 14:15    [21965370]     Ответить | Цитировать Сообщить модератору
 Re: Показ списка TMyRecord в виде таблицы без БД (VirtualDataSet)  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 48141

Basketbol
это master - detail данные.

Сугубо пофиг, но ели требудется отображение в виде дерева, то к списку добавляется
VirtualTreeView.

Posted via ActualForum NNTP Server 1.5

6 сен 19, 14:17    [21965373]     Ответить | Цитировать Сообщить модератору
 Re: Показ списка TMyRecord в виде таблицы без БД (VirtualDataSet)  [new]
Basketbol
Member

Откуда:
Сообщений: 50
Вот это сейчас нагугил:
http://rsdn.org/article/delphi/dbcontrols.xml
6 сен 19, 14:18    [21965374]     Ответить | Цитировать Сообщить модератору
 Re: Показ списка TMyRecord в виде таблицы без БД (VirtualDataSet)  [new]
DimaBr
Member

Откуда:
Сообщений: 11229
Опишите природу появления данных.
6 сен 19, 15:25    [21965413]     Ответить | Цитировать Сообщить модератору
 Re: Показ списка TMyRecord в виде таблицы без БД (VirtualDataSet)  [new]
DimaBr
Member

Откуда:
Сообщений: 11229
VirtualDataSet - это таблица в памяти TClientDataset, TRXMemoryData, TdxMemData и так далее
6 сен 19, 15:30    [21965416]     Ответить | Цитировать Сообщить модератору
 Re: Показ списка TMyRecord в виде таблицы без БД (VirtualDataSet)  [new]
JaDi
Member

Откуда: Сызрань, Россия
Сообщений: 4028
Причем компонент TVirtualTable от DevArt бесплатный:

Картинка с другого сайта.
6 сен 19, 16:44    [21965485]     Ответить | Цитировать Сообщить модератору
 Re: Показ списка TMyRecord в виде таблицы без БД (VirtualDataSet)  [new]
Basketbol
Member

Откуда:
Сообщений: 50
DimaBr
Опишите природу появления данных.

В общих абстрактных чертах:
В программе есть некие строково - числовые данные.
По этим данным периодические строится тот самый master-detail список который и нужно показать пользователю.
Исходные данные постоянно меняются, соответственно и итоговый список тоже.
И нужно постоянно обновлять этот список.
Соответствеено - записывать сначала данные в базу, потом их оттуда доставать - это все лишние операции, от которых хотелось бы избавиться
6 сен 19, 16:52    [21965493]     Ответить | Цитировать Сообщить модератору
 Re: Показ списка TMyRecord в виде таблицы без БД (VirtualDataSet)  [new]
DesWind
Member

Откуда:
Сообщений: 109
Basketbol,

Ну дык, если это действительно мастер-детализация. то загрузить детейл в, например, ClientDataset и использовать стандартные средства, или руками StartRange|EndRange|ApplyRange(как-то так там). Или я чего-то не понимаю?
6 сен 19, 16:58    [21965505]     Ответить | Цитировать Сообщить модератору
 Re: Показ списка TMyRecord в виде таблицы без БД (VirtualDataSet)  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 48141

DesWind
Или я чего-то не понимаю?

Лично я не понимаю зачем вообще тут DB-aware. Кому-то хочется сэкономить кожу пальцев не
набирая пару десятков строк кода?..

Posted via ActualForum NNTP Server 1.5

6 сен 19, 17:23    [21965527]     Ответить | Цитировать Сообщить модератору
 Re: Показ списка TMyRecord в виде таблицы без БД (VirtualDataSet)  [new]
Basketbol
Member

Откуда:
Сообщений: 50
DesWind, может и правильно.
Я просто не понял конкретное решение.
Глобальный смысл моего вопроса - как в принципе показывать данные (списки рекордов, массивы рекордов ) не используя при этом различные TTable. Т.е. избежать написания функций SaveToBase(myListRecord: TListMyRecord)
и LoadFromBase(var myListRecord), а работать именно с переменной.
6 сен 19, 17:23    [21965528]     Ответить | Цитировать Сообщить модератору
 Re: Показ списка TMyRecord в виде таблицы без БД (VirtualDataSet)  [new]
rgreat
Member

Откуда:
Сообщений: 5211
Basketbol
rgreat
Сделай своего наследника от TDataSet на основе этого массива.

Можете ткнуть меня в пример ?
Помотрите на TCilentDataSet.

А можно не парится со своим а загрузить данные прямо в него.
6 сен 19, 17:23    [21965529]     Ответить | Цитировать Сообщить модератору
 Re: Показ списка TMyRecord в виде таблицы без БД (VirtualDataSet)  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 48141

Basketbol
Глобальный смысл моего вопроса - как в принципе показывать данные (списки рекордов,
массивы рекордов ) не используя при этом различные TTable.

Повторяю медленно: TDrawGrid, TListView, TVirtualTreeView. Первые два - штатные, последний
- левый.

Posted via ActualForum NNTP Server 1.5

6 сен 19, 17:25    [21965530]     Ответить | Цитировать Сообщить модератору
 Re: Показ списка TMyRecord в виде таблицы без БД (VirtualDataSet)  [new]
krapotkin
Member

Откуда: Екатеринбург
Сообщений: 688
Совсем немного требуется чтобы написать шаблон, от которого наследоваться для каждого конкретного ObjectList<T> и все это будет реактивно отображаться хоть в String/DrawGrid хоть в VirtualTreeView
6 сен 19, 21:14    [21965733]     Ответить | Цитировать Сообщить модератору
 Re: Показ списка TMyRecord в виде таблицы без БД (VirtualDataSet)  [new]
stanilar
Member

Откуда: Спб
Сообщений: 833
У Марко Кэнту был пример написания датасета по работе со списком объектов. Кстати, существует в виде бесплатного набора компонент от него-же.
9 сен 19, 12:31    [21966747]     Ответить | Цитировать Сообщить модератору
 Re: Показ списка TMyRecord в виде таблицы без БД (VirtualDataSet)  [new]
Sinemurius
Member

Откуда:
Сообщений: 79
Если я правильно понял, то Basketbol до сих пор не понял, что ClientDataset (и прочие memory tables) - это не какие то там базы данных, а данные хранящиеся в памяти.
9 сен 19, 12:52    [21966767]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить