Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.12.06;
Скачать: CL | DM;

Вниз

Как убрать скроллбар у 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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.008 c
15-1254414106
boriskb
2009-10-01 20:21
2009.12.06
И не сомневался даже... к сожалению


15-1254506831
fics)
2009-10-02 22:07
2009.12.06
Windows&Сom порт


15-1255081170
ZeroDivide
2009-10-09 13:39
2009.12.06
Нобелевская премия опустилась в моих глазах


2-1255952808
Fedor
2009-10-19 15:46
2009.12.06
Нажать кнопку ОК в javascript окне WebBrowser а


15-1254730781
Артур. В
2009-10-05 12:19
2009.12.06
Как загрузить хтмл код с данного юрл?