![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вертикальная полоса прокрутки в DBGrid [D5, D6, Paradox]
Елена © (2002-08-11 13:00:00)Как от нее избавиться? Заранее благодарна.
gek (2002-08-13 12:27:00) [1]делай как говорит
cherepovets © (12.08.02 11:07)
или замучаешься
Елена (2002-08-13 12:11:00) [2]Или этого не избежать?
Елена (2002-08-12 17:14:00) [3]Не засорять палитру, наверное :o)
gek (2002-08-12 14:49:00) [4]Да можно, но тогда надо ропределить когда это делать.
В принципе какая разница?
Елена (2002-08-12 14:38:00) [5]cherepovets, спасибо, но можно ли сделать то же самое без создания нового компонента и его регистрации?
cherepovets (2002-08-12 11:07:00) [6]Для этого необходимо переопределить метод 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;
Vov (2002-08-12 10:37:00) [7]Если использовать DBGridEh - там есть свойство видимости для каждого (вертикального и горизонтального) скроллинга
Елена (2002-08-12 06:07:00) [8]Yngwar, как это непросто :o)
Нельзя ли иначе?
Yngwar (2002-08-11 13:21:00) [9]Поправка: Каждый раз, когда курсор перемещается на другую строку. (т.е. AfterScroll)
Yngwar (2002-08-11 13:19:00) [10]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 каждый раз, когда меняется набор данных в таблице.