Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1255860293
A.L.E.X.A.N.D.E.R.
2009-10-18 14:04
2009.12.06
Реализация float8/16/24


2-1255722657
AlexDan
2009-10-16 23:50
2009.12.06
игнорировать biMinimaze, biMaximize..


1-1227707159
DmitriyG
2008-11-26 16:45
2009.12.06
На этапе компиляции определить подключен или нет модуль


15-1254894885
MBo
2009-10-07 09:54
2009.12.06
Срединедельная задачка


3-1231164216
zorik
2009-01-05 17:03
2009.12.06
Invalid cursor declaration





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский