How to show more than 200 rows in TStringGrid using LiveBindings?
Asked Answered
C

2

6

I have a TDataSource that is backed by a TClientDataset bound to a TStringGrid. I did this by right-clicking on the grid, selecting "Link to DB Datasource...", and selecting the DataSource. This setup the LiveBindings for me.

When I run the application, the grid only fills with 200 rows, even though there are 5000 records in the dataset.

I'm unable to find any documentation regarding how to change the number of rows displayed or the proper way to allow the user to scroll through all of the data.

I did find the hard coded 200 value in TBindScopeDBEnumerator.Create in the unit Data.Bind.DBScope, and when I increase it to 10000, I see all 5000 rows in the grid, but this seems like a hack.

What's the proper way to show more than 200 rows in a TStringGrid?

Cyprinodont answered 21/12, 2011 at 14:58 Comment(2)
@kobik - FireMonkey doesn't have a TDBGrid component or any TDB style components. Instead you use standard TEdit, TStringGrid components with the new LiveBindings feature which amongst other things allows you to bind the values of the standard controls to the values of database fields.Merriott
sorry didn't realized it's a FireMonkey issue in the first place... :-PTung
M
3

You need to change the TBindDBGridLink.BufferCount at designtime from -1 to whatever value you need.

Merriott answered 21/12, 2011 at 22:32 Comment(2)
I had tried changing this value already in code, in the OnCreate method of the form. Apparently, that was too late. You must change the value in the IDE at design time so that the value is set when it is created. It's crazy that -1 means 200. Thanks for the hint.Cyprinodont
@lachlang Seems that for xe6 that is not valid anymore, do know about that?Sporule
I
5

You can change the TBindDBGridLink.BufferCount for a value you want rather -1. But it's better to set the TBindDBGridLink.AutoBufferCount to True.

Insinuation answered 4/11, 2012 at 6:18 Comment(1)
setting the buffercount manually can really eat your memory, but so is loading giant datasets in the livebindings.Ponderous
M
3

You need to change the TBindDBGridLink.BufferCount at designtime from -1 to whatever value you need.

Merriott answered 21/12, 2011 at 22:32 Comment(2)
I had tried changing this value already in code, in the OnCreate method of the form. Apparently, that was too late. You must change the value in the IDE at design time so that the value is set when it is created. It's crazy that -1 means 200. Thanks for the hint.Cyprinodont
@lachlang Seems that for xe6 that is not valid anymore, do know about that?Sporule

© 2022 - 2024 — McMap. All rights reserved.