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

Вниз

Как убрать(скрыть) горизонтальный скролбар(прокрутку) у TDBGrid-а?   Найти похожие ветки 

 
cahek2000 ©   (2001-12-21 08:40) [0]

Необходимо насовсем скрыть горизонтальный скролбар у ДБГрида.
Просто скрыть с помощью функции SetWindowLong удалось, но при изменении размера у формы он опять появляется.
Вариант перехвата ОнРесайз у формы и все время убирать скролбар не годиться, т.к. происходит нежелательное мигание!


 
Lusha ©   (2001-12-21 10:29) [1]

Вообще то это проще лечится. Просто переопределяется конструктор DBGrid

TMyDBGrid = class(TDBGrid)
public
constructor Create(AOwner : TComponent); override;
end;

constructor TMyDBGrid.Create(AOwner : TComponent);
begin
inherited Create(AOwner);
Scrollbars := ssNone;
end;

И все дела.

Удачи



 
Юрий Зотов ©   (2001-12-21 10:49) [2]

Дык... А зачем компоненты-то плодить без надобности? То же самое можно сделать внешним кодом - например, в FormCreate.


 
Lusha ©   (2001-12-21 10:55) [3]

Да ну?


 
Юрий Зотов ©   (2001-12-21 11:23) [4]

Не "Да ну?", а "ну да". И даже не надо спорить. Никогда не работали с protected-секцией? Уже устал писать примеры на эту тему.


 
Юрий Зотов ©   (2001-12-21 11:55) [5]

Во избежание следующих вопросов...

type
TFriendGrid = class(TDBGrid);

procedure TForm1.FormCreate(Sender: TObject);
begin
TFriendGrid(DBGrid1).ScrollBars := ssVertical
end;

Разница в том, что здесь НЕ создается новый компонент, а используется простое приведение класса. В итоге - экономится память, не засоряется палитра, минимум правки кода и т.д.


 
Lusha ©   (2001-12-21 12:26) [6]

Спорить никто и не собирался. Просто если сказал "А" - говори "Б".
P.S. Про палитру, я правда, как то не уловил... (


 
Lusha ©   (2001-12-21 12:33) [7]

А экономия памяти, это те несколько байт переопределенной процедуры?


 
Юрий Зотов ©   (2001-12-21 12:36) [8]

Это вместо "спасибо"? Я правильно понял?


 
Romkin ©   (2001-12-21 12:37) [9]

Экономия памяти существенная - все виртуальные методы, как переопределнные, так и предка, присутствуют в потомке как собственные...


 
Lusha ©   (2001-12-21 12:54) [10]

>Romkin
Применительно к данному случаю, пожалуйста. На сколько увеличится размер памяти?
>Юрий Зотов
А могли бы и ответить. Тем не менее, СПАСИБО :o)



 
Юрий Зотов ©   (2001-12-21 13:21) [11]

Все ОК, отвечаю.

1. О палитре и правках кода. Сейчас у Вас на используется компонент стандартного класса TDBGrid. Если породить от него свой компонент (с переопределенным конструктором), то его придется регистрировать и править все PAS и DFM, в которых он задействован - иначе Вы не сможете поднимать формы в design-time. В итоге - много ручной работы, плюс "замусоривание" палитры, плюс лишний расход памяти в design-time (на новый класс).

2. О памяти в run-time. Да, это тот самый новый конструктор. Да, это всего несколько байт. Но это и есть "стиль". Ведь любая программа состоит именно из маленьких кусочков и каждый из них должен быть написан грамотно. Иначе "несколько байт" накапливаются и в итоге перерастают в те самые десятки и сотни килобайт.


 
Lusha ©   (2001-12-21 13:30) [12]

>Господь
Слава тебе!!! Я уж было испугался, что снова что-то пропустил...
>Юрий Зотов
Спасибо еще раз за описанный способ работы с protected секцией. Все остальное я уже знаю. (Опять задумчиво) И уже давно...


 
cahek2000 ©   (2001-12-21 15:01) [13]

Спасибо всем!!!
И особенная благодарность Юрию Зотову за ответ на этот вопрос.
Я подозревал, что можно подправить какое-то защищенное свойство, но не знал толком какое, теперь буду иметь в виду!




Страницы: 1 вся ветка

Текущий архив: 2002.01.10;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.008 c
1-28506
Nikky F
2001-12-23 14:40
2002.01.10
Как


1-28452
Lis
2001-12-20 14:51
2002.01.10
MemoryManager & MMX


14-28528
Васильев П.
2001-11-09 23:01
2002.01.10
Прибалтийцы и живущие в дальнем зарубежье!


1-28491
MK
2001-12-21 21:28
2002.01.10
Как перемещать картинку в TImage мышью


6-28513
dimen
2001-10-15 02:19
2002.01.10
исходник копмпоненты http или как организовать его...