Вот функция, возвращающая номер текущей записи в наборе данных DataSet. В основном я все скопировал и расставил комментарии, которые теперь лишают меня возможности поговорить на эту тему. Могли бы вы получить эти цифирьки из DBIPROCS.INT?
function RecordNumber(Dataset: TDataset): Longint;varCursorProps: CurProps;RecordProps: RECProps; begin{ Возвращаем 0, если набор данных не Paradox или dBASE }Result := 0; with Dataset do begin{ Набор данных активен? }if State = dsInactive thenDBError(SDataSetClosed); { Нам необходимо сделать этот вызов, чтобы "захватить" курсор iSeqNums }Check(DbiGetCursorProps(Handle, CursorProps)); { Синхронизируем курсор BDE с курсором набора данных }UpdateCursorPos; { Заполняем RecordProps текущими свойствами записи }Check(DbiGetRecord(Handle, dbiNOLOCK, nil, @RecordProps)); { С каким типом набора данных мы работаем? }case CursorProps.iSeqNums of0: 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 [000738]