Форум: "Начинающим";
Текущий архив: 2009.12.06;
Скачать: [xml.tar.bz2];
ВнизКак убрать скроллбар у DBGrid Найти похожие ветки
← →
madmech@yandex.ru (2009-10-14 16:51) [0]Доброго дня суток, дамы и господа! Суть проблемы такова: надо убрать скроллбары (опционально) у данного конкретного ДБГрида и я, в принципе, эту проблему решил, найдя решение на др. форуме:
Type TFake=class(TCustomGrid);
public
property ScrollBars;
end;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
TFake(DBGrid1).ScrollBars:=ssVertical;
end;
Но, после того, как я реализовал это решение, возникли две проблемы:
1. Свойство ScrollBars работает так, как ему вздумается, т.е. установка его в ssVertical вовсе не означает, что останется только вертикальный скролл. Приходится исхитряться и выдумывать разные комбинации и последовательности переключения этого свойства с целью получения интересующего меня результата.
2. И самая главная проблема: приходится отключать скролл(-ы) каждый раз, когда происходит перерисовка грида, например, при обновлении данных по нажатию на определенную кнопку, а это уже чревато некрасивым мерцанием во время очередного отключения скролла.
Посему формулирую вопрос: можно ли как-нибудь отключить НУЖНЫЙ (-ЫЕ) мне скролл(-ы) для определенного ДБГрида один раз в начале запуска программы, чтобы в дальнейшем уже не заниматься его (их) отключением при каждой перерисовке грида?
← →
{RASkov} © (2009-10-14 18:25) [1]Вывести в грид столько записей, сколько их поместиться без добавления скролов.... иначе глупо, записей полно, а все равно их прокрутить нельзя...
← →
{RASkov} © (2009-10-14 18:29) [2]т.е. колонок вроде... а не записей. Убрать нужно горизонтальный скрол? тогда удалить не нужные колонки, и зачем убирать скрол?
← →
Игорь Шевченко © (2009-10-14 18:43) [3]
> Посему формулирую вопрос: можно ли как-нибудь отключить
> НУЖНЫЙ (-ЫЕ) мне скролл(-ы) для определенного ДБГрида один
> раз в начале запуска программы, чтобы в дальнейшем уже не
> заниматься его (их) отключением при каждой перерисовке грида?
>
Нет, DBGrid явно изменяет состояние Scrollbar-ов в методе UpdateScrollbar.
Выход - создать наследника, перекрыть метод UpdateScrollbar и реализовать там нужное поведение
← →
madmech © (2009-10-14 18:53) [4]
> Вывести в грид столько записей, сколько их поместиться без
> добавления скролов....
Как это делается? Для данного конкретного грида использование этой возможности мне не понадобится, но в других гридах придется очень кстати.
> Убрать нужно горизонтальный скрол?
>
И тот, и другой.
> тогда удалить не нужные колонки, и зачем убирать скрол?
Скролл я хочу убрать с целью экономии места на форме, и чтобы он (скролл) не портил внешний вид таблицы, в которой количество строк и столбцов невелико и заранее известно. Использование, а самое главное показывание скроллов на малых таблицах я считаю нецелесообразным.
← →
madmech © (2009-10-14 18:56) [5]
> Выход - создать наследника, перекрыть метод UpdateScrollbar
> и реализовать там нужное поведение
Каким образом? Можете кратко пояснить?
← →
Игорь Шевченко © (2009-10-14 19:43) [6]
> Каким образом? Можете кратко пояснить?
procedure TMySuperPuper.UpdateScrollBar;
begin
if ScrollbarNeeded then
inherited;
end;
← →
sniknik © (2009-10-14 20:02) [7]> inherited;
так он там вроде объявлен статически, разве так вызовется? и вообще возможность перекрытия без переделки(координальной) генофонда под сомнением...
madmech
обломись, мы на корабле. © анекдот какой то
← →
Игорь Шевченко © (2009-10-14 20:16) [8]sniknik © (14.10.09 20:02) [7]
> так он там вроде объявлен статически
dbgrids.pas
procedure UpdateScrollBar; virtual;
"Не верь глазам своим" ?
← →
sniknik © (2009-10-14 20:23) [9]> "Не верь глазам своим" ?
ага.
> [D7, XP]
у меня d7, проверил, точно статически.
← →
Игорь Шевченко © (2009-10-14 21:05) [10]
> у меня d7, проверил, точно статически.
У меня нет оснований тебе не доверять :)
Тогда у автора есть три пути: отказаться от управления скроллбарами, взять EhLib или какой-то аналогичный готовый компонент или писать более обширного наследника, в ктором предусмотреть управление скроллбарами.
← →
madmech © (2009-10-16 11:34) [11]
> Тогда у автора есть три пути: отказаться от управления скроллбарами.
> ..
А как это можно сделать?
← →
Игорь Шевченко © (2009-10-16 12:39) [12]
> А как это можно сделать?
Оставить все, как есть
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.12.06;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.004 c