I am using TDBAdvGrid with PageMode = true and ScrollProportional = true. I have implemented event OnGetRecordCount so that grid knows total number of records. Size of scrollbar is realy proportional but it always remains on top of scroll are like this:
Is this a feature or bug ? Is there a way how to force the component to behave correctly ?
More information about TMS TDBAdvGrid & PageMode can be found here:
But then what is motivation to switch to TMS grid instead of standard VCL grid ? It is simple solution but from user point of view it doesnt get much sense. When the user sees that scrollbox is in the middle, he expects that it is currently in the middle of some huge database with million rows. It get sense from the point of view of developer because it stems from TDataSet interface: TDataSet::Eof, TDataSet::Bof. But the user is not interested in what is under the hood. If it is not too hard to change this behaviour I would welcome it.
P.S.
If grid only sees visible records than what is the purpose of calling OnGetRecordCount ?
In PageMode = true, this behavior cannot be changed. The behavior is driven by the dataset. If the dataset does not provide any more info with respect to cursor position than : first, middle, last, that is the only information the grid can use to position the scrollbar. So, the behavior of the scrollbar is inherent to the behavior of the dataset. When PageMode = false, all records are retrieved from the dataset and the grid can determine by itself where the selected row is within all rows.