documentation, filter in RxMemDataSet

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@1152 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
alexs75 2010-02-02 20:31:21 +00:00
parent 3d1414df44
commit 2b71476e7d
4 changed files with 96 additions and 3 deletions

View File

@ -44,6 +44,13 @@
не учитывается регистр символов
+ В RxDBGrid сохраняется между сеансами порядок сортировки
+ В RxDBGrid при автоматическом подборе ширины колонки учитывается ширина заголовка
+ модуль
+ В объекте TRxMemoryData переключил фильтрацию на стандартный механизм из модуля DB - раньше был код
для обхода ошибок. В дальнейшем событие OnFilterRecordEx будет полностью исключено из компонента
+ Новый модуль rxFileUtils - набор дополнительных функций для работы с файлами:
GetFileOwnerUser - возвращает имя пользователя-владельца файла (пока только windows)
GetFileOwnerData - возвращает информацию о владельце файла (пока только windows)
NormalizeDirectoryName - приводит все разделитили каталогов в имени файла к тому виду, как принятов данной ОС.
22.05.2008 - версия 2.0.0.136 (svn revision 100)
+ У объекта TRxCustomDBLookupCombo введён контроль на CircularDataLink
+ У объекта TRxCustomDBLookupCombo ускорена отрисовка данных

View File

@ -523,6 +523,7 @@ TRxDBCalcEdit является наследником TDBCalcEdit и имеет
Кол-во элементов данного массива находится в свойстве
<b>Count</b>
</descr>
<seealso>
@ -545,6 +546,7 @@ TRxDBCalcEdit является наследником TDBCalcEdit и имеет
Свойство FileFolder определяет каталог с файлами, который будет сканироваться при вызове метода
<b>Execute</b> и по содержимому которого будет произведено заполнение массива Files</descr>
<seealso>
<link id="TFolderLister.Execute"/>
@ -811,6 +813,9 @@ Description
<short>property Interval: Word;</short>
<descr>Свойство определяет временной интервал (в милисекундах), с которым происходит смена изображений в компоненте.
при Rotate = True это частота смены битовых изображений.</descr>
<seealso>
<link id="TRxDice.Rotate"/>
</seealso>
</element>
<element name="TRxDice.ParentColor"/>
<element name="TRxDice.ParentShowHint"/>
@ -1575,5 +1580,54 @@ Description
<short>Возвращает формат даты по умолчанию</short>
</element>
</module>
<module name="rxFileUtils">
<topic name="GetFileOwnerUser"/>
<element name="GetFileOwnerUser">
<short>Возвращает имя владельца файла</short>
<descr>
<p>function <b>GetFileOwnerUser</b>(const SearchDomain, FileName:<b>String</b>):<b>String</b>;
</p>
<p>Функция возвращает имя пользователя операционной системы владельца указанного файла. </p>
<p>Входные параметры:
SearchDomain - Домен, в котором будет производится поиск оператора (пустой для текущего домена оператора).
FileName - Полное имя файла.
</p>
<remark>В данный момент функция реализована только для windows.</remark>
</descr>
<seealso>
<link id="GetFileOwnerData"/>
</seealso>
</element>
<element name="GetFileOwnerData">
<short>Возвращает данные владельца файла</short>
<descr>
<p>procedure GetFileOwnerData(const SearchDomain, FileName:<b>String</b>;out UserName, DomainName:<b>String</b>);
</p>
<p>Процедура возвращает имя и домен пользователя операционной системы владельца указанного файла. </p>
<p>Входные параметры:
SearchDomain - Домен, в котором будет производится поиск оператора (пустой для текущего домена оператора).
FileName - Полное имя файла.
Выходные параметры:
UserName - Имя пльзователя.
DomainName - Домен, в котором найден данный пользователь.
</p>
<remark>В данный момент функция реализована только для windows.</remark>
</descr>
<seealso>
<link id="GetFileOwnerData"/>
</seealso>
</element>
<element name="NormalizeDirectoryName">
<short>Функция приводит к принятому в данной ОС виду все разделители каталогов.</short>
<descr>
<p>
<b>function</b> NormalizeDirectoryName(
<b>const</b> DirName:
<b>string</b>):
<b>string</b>;</p>
Функция проверяет все разделители каталогов в указанном имени файла/каталога и, если нужно, меняет их на значение константы
<b>DirectorySeparator</b>.</descr>
</element>
</module>
</package>
</fpdoc-descriptions>

View File

@ -10,7 +10,7 @@
{.$DEFINE RXDBGRID_OPTIONS_WO_CANCEL_ON_EXIT}
{.$DEFINE USED_BiDi}
{$DEFINE DEFAULT_POPUP_CALENDAR}
{.$DEFINE FIX_TRxMemoryData_Filter}
{.$DEFINE FIX_BUG_FieldNo}
//

View File

@ -28,7 +28,9 @@ type
TRxMemoryData = class(TDataSet)
private
{$IFDEF FIX_TRxMemoryData_Filter}
FOnFilterRecordEx: TFilterRecordEvent;
{$ENDIF}
FRecordPos: Integer;
FRecordSize: Integer;
FBookmarkOfs: Integer;
@ -43,11 +45,13 @@ type
FCaseInsensitiveSort: Boolean;
FDescendingSort: Boolean;
function AddRecord: TMemoryRecord;
function GetOnFilterRecordEx: TFilterRecordEvent;
function InsertRecord(Index: Integer): TMemoryRecord;
function FindRecordID(ID: Integer): TMemoryRecord;
procedure CreateIndexList(const FieldNames: string);
procedure FreeIndexList;
procedure QuickSort(L, R: Integer; Compare: TCompareRecords);
procedure SetOnFilterRecordEx(const AValue: TFilterRecordEvent);
procedure Sort;
function CalcRecordSize: Integer;
function FindFieldData(Buffer: Pointer; Field: TField): Pointer;
@ -151,7 +155,7 @@ type
property OnDeleteError;
property OnEditError;
property OnFilterRecord;
property OnFilterRecordEx: TFilterRecordEvent read FOnFilterRecordEx write FOnFilterRecordEx;
property OnFilterRecordEx: TFilterRecordEvent read GetOnFilterRecordEx write SetOnFilterRecordEx;
property OnNewRecord;
property OnPostError;
end;
@ -462,6 +466,15 @@ begin
Result := TMemoryRecord.Create(Self);
end;
function TRxMemoryData.GetOnFilterRecordEx: TFilterRecordEvent;
begin
{$IFDEF FIX_TRxMemoryData_Filter}
Result:=FOnFilterRecordEx;
{$ELSE}
Result:=OnFilterRecord;
{$ENDIF}
end;
function TRxMemoryData.FindRecordID(ID: Integer): TMemoryRecord;
var
I: Integer;
@ -882,20 +895,29 @@ var
SaveState: TDataSetState;
begin
Result := True;
{$IFDEF FIX_TRxMemoryData_Filter}
if Assigned(OnFilterRecordEx) then
{$ELSE}
if Assigned(OnFilterRecord) then
{$ENDIF}
begin
if (FRecordPos >= 0) and (FRecordPos < RecordCount) then
begin
SaveState := SetTempState(dsFilter);
try
RecordToBuffer(Records[FRecordPos], TempBuffer);
{$IFDEF FIX_TRxMemoryData_Filter}
OnFilterRecordEx(Self, Result);
{$ELSE}
OnFilterRecord(Self, Result);
{$ENDIF}
except
Application.HandleException(Self);
end;
RestoreState(SaveState);
end
else Result := False;
else
Result := False;
end;
end;
@ -1418,6 +1440,16 @@ begin
until I >= R;
end;
procedure TRxMemoryData.SetOnFilterRecordEx(const AValue: TFilterRecordEvent);
begin
{$IFDEF FIX_TRxMemoryData_Filter}
CheckBiDirectional;
FOnFilterRecordEx:=AValue;
{$ELSE}
OnFilterRecord:=AValue;
{$ENDIF}
end;
function TRxMemoryData.CompareRecords(Item1, Item2: TMemoryRecord): Integer;
var
Data1, Data2: PChar;