TRxMemoryData Component

Unit
RxMemDS


Description (Описание)


Компонента TRxMemoryData представляет собой таблицу в памяти (RAM), которая может быть использована как обычный набор данных (dataset) в Delphi. Эта компонента (в отличие от TMemoryTable) не использует доступ к данным через BDE и может быть использована с любыми data-aware элементами управления Delphi VCL.
Все записи таблицы сохраняются в памяти и уничтожаются при закрытии таблицы.
Структуры таблицы вы можете задать в дизайнере Delphi с помощью редактора компоненты "Fields Editor", или скопировать из другого набора данных в run-time с помощью метода CopyStructure.

В настоящее время объектные поля (Delphi 4) не поддерживаются.

Внимание
Компонента TRxMemoryData реализована только для Delphi версии 3.0 и выше.

Hierarchy (Иерархия)
TObject — TPersistent — TComponent — TDataSet

Properties (Свойства)
Run-time only     Key properties

Active Components Name
AutoCalcFields EOF Owner
BOF FieldCount RecNo
Bookmark FieldDefs RecordCount
CanModify Fields RecordSize
ComponentCount FieldValues State
ComponentIndex Modified Tag

Methods (Методы)
Key methods

Append FieldByName MoveBy
Cancel FindField Next
Close First Open
CopyStructure GetBookmark Post
Create GotoBookmark Prior
Delete Insert Refresh
Destroy IsEmpty Resync
DisableControls IsSequenced SaveToDataSet
Edit Last SortOnFields
EmptyTable LoadFromDataSet  
EnableControls Locate  

Events (События)
Key events

AfterCancel AfterScroll BeforePost
AfterClose BeforeCancel BeforeScroll
AfterDelete BeforeClose OnCalcFields
AfterEdit BeforeDelete OnDeleteError
AfterInsert BeforeEdit OnEditError
AfterOpen BeforeInsert OnNewRecord
AfterPost BeforeOpen OnPostError


Примеры работы и некоторые интересные свойства и методы.

Declaration
function LoadFromDataSet(Source: TDataSet; RecordCount: Integer; Mode: TLoadMode): Integer;

Description
Метод позволяет скопировать записи из другого набора данных в таблицу в памяти.
Поддерживаются два возможных режима, задаваемого параметром Mode — lmCopy (в этом случае все сущствующие записи удаляются и копируется также структура исходного набора данных) и lmAppend. Параметр RecordCount задает максимальное число добавляемых записей. Если RecordCount=0, то копируются все записи.

Метод возвращает число скопированных записей.

Пример: Mem->LoadFromDataSet(Query1,0,lmCopy);  — копируем структуру и все данные из запроса Query1 в компонент Mem.


Declaration
procedure SortOnFields(const FieldNames: string; CaseInsensitive, Descending: Boolean);

Description
Метод сортирует данные в таблице в памяти в порядке возрастания или убывания (в зависимости от параметра Descending) значений полей, имена которых переданы в качестве параметра FieldNames. Для строковых полей сортировка может осуществляться с учетом или без учета регистра символов в зависимости от параметра CaseInsensitive.

Если осуществляется сортировка по нескольким полям, то их имена разделяются точкой с запятой (;)

Пример: сортирует таблицу Мем по нажатию заголовка в Gride по выбранному полю без учета регистра в порядке возрастания
//--------------------
void __fastcall TFMain::GridTitleClick(TColumn *Column)
{
Mem->SortOnFields(Column->FieldName,false,false);
Mem->First();
}
//--------------------------------------------------------------------------- или
Mem->SortOnFields("ID;Name",false,false);
 — сортирует таблицу Мем по полям ID и Name без учета регистра в порядке возрастания


Declaration
function IsEmpty: Boolean;

Description
Проверяем таблицу пустая или нет.
Пример: if(Mem->IsEmpty()) { ShowMessage("Вирус или кривые руки пользователя уничтожили всю таблицу в памяти !"); }


Declaration
procedure CopyStructure(ASource: TDataSet);

Description
Метод позволяет скопировать структуру любого набора данных ASource в компоненту TMemoryTable или TRxMemoryData. После вызова метода CopyStructure для активизации таблицы в памяти вызовите метод Open или присвойте Active := True.