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

Вниз

Вертикальная полоса прокрутки в DBGrid   Найти похожие ветки 

 
Елена ©   (2002-08-11 13:00) [0]

Как от нее избавиться? Заранее благодарна.


 
Yngwar ©   (2002-08-11 13:19) [1]

Var
SINew: TScrollInfo;
Begin
With SINew Do Begin
cbSize:=0; fMask:=SIF_ALL; nMin:=0; nMax:=0;
nPage:=0; nPos:=0; nTrackPos:=0; End;
SetScrollInfo(DBGrid.Handle,SB_VERT,SINew,True);
End;

Но есть одна проблема:
это надо делать каждый раз, когда вызывается TDBGrid.UpdateScrollBar; а эта процедура статическая и определена в разделе Private - ее не перехватить.
Придется убивать ScrollBar каждый раз, когда меняется набор данных в таблице.


 
Yngwar ©   (2002-08-11 13:21) [2]

Поправка: Каждый раз, когда курсор перемещается на другую строку. (т.е. AfterScroll)


 
Елена ©   (2002-08-12 06:07) [3]

Yngwar, как это непросто :o)
Нельзя ли иначе?


 
Vov ©   (2002-08-12 10:37) [4]

Если использовать DBGridEh - там есть свойство видимости для каждого (вертикального и горизонтального) скроллинга


 
cherepovets ©   (2002-08-12 11:07) [5]

Для этого необходимо переопределить метод Paint. Внутри метода Paint Вы должны вызвать API процедуру SetScrollRange для установки минимального и максимального значений скроллирования в ноль (тем самым запретив скроллбар), а затем вызвать inherited. Следующий код, это unit содержащий новый компонент под названием TNoScrollBarDBGrid, который делает это.


type
TNoScrollBarDBGrid = class(TDBGrid)
private
protected
procedure Paint; override;
public
published
end;

procedure Register;

implementation

procedure Register;
begin
RegisterComponents("Samples", [TNoScrollBarDBGrid]);
end;

{ TNoScrollBarDBGrid }

procedure TNoScrollBarDBGrid.Paint;
begin
SetScrollRange(Handle, SB_VERT, 0, 0, false);
inherited;
end;


 
Елена ©   (2002-08-12 14:38) [6]

cherepovets, спасибо, но можно ли сделать то же самое без создания нового компонента и его регистрации?


 
gek ©   (2002-08-12 14:49) [7]

Да можно, но тогда надо ропределить когда это делать.
В принципе какая разница?


 
Елена ©   (2002-08-12 17:14) [8]

Не засорять палитру, наверное :o)


 
Елена ©   (2002-08-13 12:11) [9]

Или этого не избежать?


 
gek ©   (2002-08-13 12:27) [10]

делай как говорит
cherepovets © (12.08.02 11:07)
или замучаешься



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

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

Наверх




Память: 0.49 MB
Время: 0.016 c
8-3533
Сергей Чурсин
2002-04-15 16:50
2002.09.02
Несколько DirectDraw в одном приложении ?


14-3621
fool
2002-08-08 11:12
2002.09.02
Срочно!!! Последствия наглого вируса!!!!


1-3500
Praco
2002-08-21 11:41
2002.09.02
Знатоки dll и dpl, помогите, плз.


14-3605
Night cold
2002-08-05 11:41
2002.09.02
Pleaseeee!!!!UNIX


3-3289
Nina
2002-08-13 08:19
2002.09.02
Каскадное удаление