23 юни, 2009

Preserve left visible column in DBGrid

От край време се опитвам да накарам дадена DBGrid таблица, след като сменя избрания ред, да си стои там, до където съм я изместил с хоризонталния плъзгач (scroller) - т.е. лявата видима колона да си седи лява, а не да се премества винаги на първата такава.

Изпробвах малкото варианти, които намерих в Интернет, но нито един не ми свърши работа.

Добре, че е този голям проект, по който работя сега, та да открия решение.
Тъй като имам доста такива таблици по различни форми, забелязах, че на някои места "съм успял" да постигна желания ефект, а на други - не. Сравнявайки свойствата на тези таблици открих нещо интересно: и на двете места използвам OnDrawColumnCell с изключен DefaultDrawing; разликата, която се оказа, че играе важна роля, е опцията dgMultiSelect, която при изключен DefaultDrawing няма същия ефект. Може би ще има страничен ефект, който още не съм открил, но за сега ми служи идеално за целта :)

Та, рецептата е: DefaultDrawing=false, OnDrawColumnCell и dgMultiSelect=true в Options.

ПП: Оказа се, че и още една опция играе съществена роля - dgRowSelect=true.

Няма коментари: