...какой метод вовращает номер текущей записи? (т.е.: Я хочу
использовать это вместе с функцией RecordCount и выводить для пользователя в
строке состояния нечто вроде: "Запись #n из x")
Вот функция, возвращающая номер текущей записи в наборе данных DataSet. В
основном я все скопировал и расставил комментарии, которые теперь лишают меня
возможности поговорить на эту тему. Могли бы вы получить эти цифирьки из
DBIPROCS.INT?
|
|
function RecordNumber(Dataset: TDataset): Longint;
var
CursorProps: CurProps;
RecordProps: RECProps;
begin
{ Возвращаем 0, если набор данных не Paradox
или dBASE }
Result := 0;
with Dataset do begin
{ Набор данных активен? }
if State = dsInactive then
DBError(SDataSetClosed);
{ Нам необходимо сделать этот вызов, чтобы
"захватить" курсор iSeqNums }
Check(DbiGetCursorProps(Handle, CursorProps));
{ Синхронизируем курсор BDE с курсором набора
данных }
UpdateCursorPos;
{ Заполняем RecordProps текущими свойствами
записи }
Check(DbiGetRecord(Handle, dbiNOLOCK, nil,
@RecordProps));
{ С каким типом набора данных мы работаем?
}
case CursorProps.iSeqNums of
0: Result := RecordProps.iPhyRecNum;
{ dBASE }
1: Result := RecordProps.iSeqNum; {
Paradox }
end; { case }
end; { with }
end; { function
} |
Затем, в обработчике события OnDataChange DataSet, я использовал команду:
|
|
MyTextVariable := 'Запись ' + IntToStr(
RecordNumber( tImport ) ) +
' из ' + IntToStr( tImport.RecordCount )
; |
Mike Downey |