Am 27.11.2017 um 13:43 schrieb Torsten Bonde Christiansen via Lazarus:
I am looking for grid component that can display string. Simple enought and i know of a few already, but the ones i know of cannot do both of the following requirements i have:

a) Fast (very low delay on 100.000+ lines of test)
b) Allow selecting multiple cells spanning rows and colomns.

For a) i know of VirtualTreeview which handles large data very very fine. The problem is that is does not allow for selecting multiple columns and rows combined.

For b) there is the native LCL stringgrid, the lazarus package TKontrols is also good, but they don't handle large data very well. Mostly because all rows/columns are traversed (initialized) instead of the just the actual rows/columns displayed onscreen.

(a) What is "fast"? If I populate a standard TStringGrid with 100.000 rows x 100 columns (= 10 millions of cells) it takes about 9 seconds on my PC - if BeginUpdate/EndUpdate is used. Not too bad in my eyes. If it's too long you should use a TDrawGrid and paint the cells in the OnDrawCell event. Since this draws only the visible cells it will occur within the blink of an eye. Editing a TDrawGrid is a bit more complicated, though, but doable.

(b) Multiselection has been added to the LCL grids (StringGrid and DrawGrid) some time ago. Set option goRangeSelect, and - if the cells selected are not contiguous - change RangeSelectMode to rsmMulti. Then you can select individual cells by Ctrl- and Shift-Clicks like you know from Excel.

Of course you should ask yourself the question: Is a grid with millions of cells really something a user wants to work with?
--
_______________________________________________
Lazarus mailing list
Lazarus@lists.lazarus-ide.org
https://lists.lazarus-ide.org/listinfo/lazarus

Reply via email to