Полосы прокрутки в сетках БД - поиск окончательного подхода

Я вижу много вопросов о полосе прокрутки БД, но, кажется, никогда не нахожу однозначного ответа на этот вопрос.

Нет возможности (свойства) добавлять / скрывать полосы прокрутки сетки БД, по отдельности или вместе. Просто автоматически появляются при необходимости.

Если у меня недостаточно строк для прокрутки, я хочу, чтобы мои столбцы заполняли всю сетку.

Если я спроектирую это так, то при добавлении вертикальной полосы прокрутки во время выполнения автоматически добавляется и горизонтальная полоса прокрутки (поскольку я только что закрыл правую часть самого правого столбца вертикальной полосой прокрутки, теперь нам нужна горизонтальная прокрутка бар, чтобы увидеть, что я покрываю).

Один из вариантов - спроектировать мою сетку таким образом, чтобы при правильном размере (сколько пикселей?) Было достаточно места для размещения вертикальной прокрутки, но это некрасиво, пока не будет достаточно строк для запуска полосы прокрутки (если когда-либо).

Мне кажется, что наиболее эстетичным способом было бы начать с сетки, которая заполнена столбцами шириной X пикселей и увеличить ее ширину до X + width of vertical scroll bar (или уменьшить ширину одного / нескольких столбцов сетки в сумме на width of vertical scroll bar) пикселей при добавлении новой строки вызывает появление вертикальной полосы прокрутки.

Я что-то упускаю? Есть ли «правильный» способ сделать это или стандартный в отрасли способ (я не прошу указать «лучший» способ или что-то слишком субъективное, поэтому, пожалуйста, не закрывайте его. Я считаю, что это нужно знать многим).

Есть ли что-нибудь в стандарте TDBgrid, чтобы облегчить это?

Бонус: я подписываюсь на компоненты TMS, поэтому, если есть способ сделать это просто с помощью TAdvDbgrid, для меня это будет хорошо, но общее решение с TDBgrid подойдет.

Несубъективный вопрос: учитывая, что
- я не хочу увеличивать ширину моего TDBgrid
- и что мне не нужен пустой белый столбец справа, когда нет вертикальной полосы прокрутки
- и что я хочу уменьшить ширину самого правого столбца, чтобы избежать появления горизонтальной полосы прокрутки при появлении вертикальной полосы прокрутки
... как мне это сделать?


[Обновление] Кен был справедливо награжден ответом, потому что его решение лучше всего подходит для большинства пользователей.

Для тех, кто, как я, уже заплатил за подписку TMS, я просто заметил, что их компонент TDbAdvgrid имеет свойство ScrollBars, и когда я устанавливаю его на ssVertical, он делает то, что я хочу.

Если бы я только мог найти хороший способ иметь фиксированную строку заголовка, когда это единственная строка ...


person Mawg says reinstate Monica    schedule 08.05.2013    source источник
comment
TJvDBGrid (из JEDI JVCL) имеет эту возможность, и ее исходный код доступен. Возможно, это поможет?   -  person Ken White    schedule 08.05.2013
comment
+1 Спасибо, как всегда, Кен. Пожалуйста, опубликуйте это как ответ.   -  person Mawg says reinstate Monica    schedule 08.05.2013


Ответы (1)


TJvDBGrid (часть JVCL JEDI) имеет эту встроенную возможность и включает исходный код. Он должен иметь возможность либо делать то, что вам нужно, либо предоставлять вам детали, необходимые для реализации вашего собственного потомка.

person Ken White    schedule 08.05.2013
comment
Спасибо, как всегда, Кен. В JEDI так много всего, но это (если я правильно понимаю) установка "все или ничего". Хотя, думаю, пора укусить пулю. - person Mawg says reinstate Monica; 08.05.2013