On 10/30/2014 10:44 PM, Michael Van Canneyt wrote:
On Thu, 30 Oct 2014, Joost van der Sluis wrote:
On 10/30/2014 04:34 PM, Michael Van Canneyt wrote:
On Thu, 30 Oct 2014, Michael Van Canneyt wrote:
On Thu, 30 Oct 2014, Luca Olivetti wrote:
Hello,
TFixedFormatDataSet (ancestor of TSdfDataSet) overrides GetRecNo
(correct) but it does a strange contortion instead of simply returning
FCurRec:
function TFixedFormatDataSet.GetRecNo: Longint;
var
BufPtr: TRecordBuffer;
begin
Result := -1;
if GetActiveRecBuf(BufPtr) then
Result := PRecInfo(BufPtr + FRecInfoOfs)^.RecordNumber;
The records in the buffer may be in a different order than they are
displayed in the grid.
Forget this. I was too quick to respond.
I have done some digging, but cannot find a reason for the current
behaviour.
Easy: Some systems use the recno as some sort of 'bookmark'. And some
people insist that this is the correct behaviour for a dataset. (Note
that for TBufDataset a call to recno is really slow, as it has to
iterate over all records to get the correct recno.)
AFAIK RecNo has no meaning when you work with multiple indexes and filters.
Well, that depend on the dataset. Each TDataset descendant can do
whatever it want. (We even got bug-reports about TBufDataset's recno,
and that it was not possible to use it as a bookmark)
So some datasets have recno's that uniquely identify a record. I've
tried to unify that once, but that was not easily done. So I decided
to leave this decision to the author of each dataset. Hence the GetRecNo.
I understand why the GetRecNo is there, just not why it is implemented
as it is in TSDFDataset.
(which is what I was investigating)
But that TDBGrid uses the recno is troublesome... But I don't see a
better solution.
Delphi DBGrid does not use recno, so it must be possible... AFAIK
TDatalink has special provisions to provide a window buffer.
Indeed, there are datalink-events that passes around information about
how many records there are in the buffer and by how many the buffer has
scrolled.
Joost.
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal