![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Подскажите как сделать DBGrid без скролов [D7, XP]
KyRo © (2006-12-25 10:41:00)Подскажите как избавить грид от скролбаров.
Я пытаюсь перекрыть метод пейнт вот таким способом
unit NoScrollDBGrid;
interface
uses
SysUtils, Classes, Controls, Grids, DBGrids,windows;
type
TNoScrollDBGrid = class(TDBGrid)
private
{ Private declarations }
protected
procedure Paint; override;
{ Protected declarations }
public
{ Public declarations }
published
{ Published declarations }
end;
procedure Register;
implementation
procedure TNoScrollDBGrid.Paint;
begin
SetScrollRange(Handle, SB_HORZ, 0, 0, false);
SetScrollRange(Handle, SB_VERT, 0, 0, false);
inherited;
end;
procedure Register;
begin
RegisterComponents('Samples', [TNoScrollDBGrid]);
end;
end.
Таким образом у меня получилось избавится от вертикального скрола , а от горизонтального нет !!
Подскажите как убрать горизонтальный скрол ?
Desdechado (2006-12-28 11:23:00) [1]Я и на больших пробовал на слабых машинах.
Но я не понимаю, зачем "быстро прокручивать большой набор данных"?
Зачем он тогда большой? Только чтобы прокручивать?
Не проще ли ограничить до читаемого размера?
KyRo (2006-12-28 11:11:00) [2]
> Desdechado © (27.12.06 18:20) [8]
> я [1] делал после открытия датасета
> при этом не замечал, чтобы моргало
Если быстрор прокручивать то получается что грид сначала рисует скрол , а потом его убирает. Это происходит быстро но если пролистывать большой набор данных то это видно !
allrussia (2006-12-28 00:17:00) [3]KyRo (27.12.06 17:23) [7]
Это конечно хорошо . Но так у меня вообще не в каком гриде их не будет , а мне надо в некоторых !
Тебе же Desdechadoуже писал:
в каких надо делаешь
ShowScrollBar( dbgrid1.Handle, SB_BOTH, True )
Desdechado (2006-12-27 18:20:00) [4]я [1] делал после открытия датасета
при этом не замечал, чтобы моргало
KyRo (2006-12-27 17:23:00) [5]
> poprobui sleduuschee:
>
> V papke Delphi\Source\Vcl vozmi fail
> Grids.pas naidi tam strochku
> FScrollBars := ssBoth;
> pereimenui ee v
> FScrollBars := ssNone;
> i sohrani Grids.pas v papku
> Delphi\Lib
>
> teper tebe uzhe ne nado budet vse chto ranshe tut pisali
> Desdechado i ya
Это конечно хорошо . Но так у меня вообще не в каком гриде их не будет , а мне надо в некоторых !
rar (2006-12-25 20:34:00) [6]Попробуй так
TNewDBGrid(DBGRidFind).ScrollBars:=ssVertical;
allrussia (2006-12-25 19:57:00) [7]KyRo
poprobui sleduuschee:
V papke Delphi\Source\Vclvozmi fail
Grids.pasnaidi tam strochku
FScrollBars := ssBoth;
pereimenui ee v
FScrollBars := ssNone;
i sohrani Grids.pas v papku
Delphi\Lib
teper tebe uzhe ne nado budet vse chto ranshe tut pisali Desdechado i ya
KyRo (2006-12-25 16:36:00) [8]
> allrussia © (25.12.06 16:16) [3]
> KyRo
> попробуй
> DBGrid1.DoubleBuffered:=true;
Помогло спасибо .
Но появился еще один вопрос !
Когда быстро пролистываеш список записей в гриде то все равно видно скрол ! Он сначала прорисовывается , а потом исчезает , но все это он делает очень быстро.
Можно ли сделать так что бы грид вообще его не рисовал ?
allrussia (2006-12-25 16:16:00) [9]KyRo
попробуй
DBGrid1.DoubleBuffered:=true;
KyRo (2006-12-25 13:31:00) [10]Да помогло скролы убрались но при этом появилось какое то неприятное мерцание компонента во время пролистывания записей !!
Можно ли как то его убрать ?
Desdechado (2006-12-25 12:55:00) [11]
EnableScrollBar( gridAbTerms.Handle, SB_VERT, ESB_DISABLE_BOTH );
ShowScrollBar( gridAbTerms.Handle, SB_VERT, False );