![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как убрать скроллбар у DBGrid [D7, XP]
madmech@yandex.ru © (2009-10-14 16:51:00)Доброго дня суток, дамы и господа! Суть проблемы такова: надо убрать скроллбары (опционально) у данного конкретного ДБГрида и я, в принципе, эту проблему решил, найдя решение на др. форуме:
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. И самая главная проблема: приходится отключать скролл(-ы) каждый раз, когда происходит перерисовка грида, например, при обновлении данных по нажатию на определенную кнопку, а это уже чревато некрасивым мерцанием во время очередного отключения скролла.
Посему формулирую вопрос: можно ли как-нибудь отключить НУЖНЫЙ (-ЫЕ) мне скролл(-ы) для определенного ДБГрида один раз в начале запуска программы, чтобы в дальнейшем уже не заниматься его (их) отключением при каждой перерисовке грида?
Игорь Шевченко (2009-10-16 12:39:00) [1]
> А как это можно сделать?
Оставить все, как есть
madmech (2009-10-16 11:34:00) [2]
> Тогда у автора есть три пути: отказаться от управления скроллбарами.
> ..
А как это можно сделать?
Игорь Шевченко (2009-10-14 21:05:00) [3]
> у меня d7, проверил, точно статически.
У меня нет оснований тебе не доверять :)
Тогда у автора есть три пути: отказаться от управления скроллбарами, взять EhLib или какой-то аналогичный готовый компонент или писать более обширного наследника, в ктором предусмотреть управление скроллбарами.
sniknik (2009-10-14 20:23:00) [4]> "Не верь глазам своим" ?
ага.
> [ D7, XP]
у меня d7, проверил, точно статически.
Игорь Шевченко (2009-10-14 20:16:00) [5]sniknik © (14.10.09 20:02) [7]
> так он там вроде объявлен статически
dbgrids.pas
procedure UpdateScrollBar; virtual;
"Не верь глазам своим" ?
sniknik (2009-10-14 20:02:00) [6]> inherited;
так он там вроде объявлен статически, разве так вызовется? и вообще возможность перекрытия без переделки(координальной) генофонда под сомнением...
madmech
обломись, мы на корабле. © анекдот какой то
Игорь Шевченко (2009-10-14 19:43:00) [7]
> Каким образом? Можете кратко пояснить?
procedure TMySuperPuper.UpdateScrollBar;
begin
if ScrollbarNeeded then
inherited;
end;
madmech (2009-10-14 18:56:00) [8]
> Выход - создать наследника, перекрыть метод UpdateScrollbar
> и реализовать там нужное поведение
Каким образом? Можете кратко пояснить?
madmech (2009-10-14 18:53:00) [9]
> Вывести в грид столько записей, сколько их поместиться без
> добавления скролов....
Как это делается? Для данного конкретного грида использование этой возможности мне не понадобится, но в других гридах придется очень кстати.
> Убрать нужно горизонтальный скрол?
>
И тот, и другой.
> тогда удалить не нужные колонки, и зачем убирать скрол?
Скролл я хочу убрать с целью экономии места на форме, и чтобы он (скролл) не портил внешний вид таблицы, в которой количество строк и столбцов невелико и заранее известно. Использование, а самое главное показывание скроллов на малых таблицах я считаю нецелесообразным.
Игорь Шевченко (2009-10-14 18:43:00) [10]
> Посему формулирую вопрос: можно ли как-нибудь отключить
> НУЖНЫЙ (-ЫЕ) мне скролл(-ы) для определенного ДБГрида один
> раз в начале запуска программы, чтобы в дальнейшем уже не
> заниматься его (их) отключением при каждой перерисовке грида?
>
Нет, DBGrid явно изменяет состояние Scrollbar-ов в методе UpdateScrollbar.
Выход - создать наследника, перекрыть метод UpdateScrollbar и реализовать там нужное поведение
{RASkov} (2009-10-14 18:29:00) [11]т.е. колонок вроде... а не записей. Убрать нужно горизонтальный скрол? тогда удалить не нужные колонки, и зачем убирать скрол?
{RASkov} (2009-10-14 18:25:00) [12]Вывести в грид столько записей, сколько их поместиться без добавления скролов.... иначе глупо, записей полно, а все равно их прокрутить нельзя...