Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Подскажите как сделать 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 );


Наверх

Титульная страница Поиск, карта сайта Написать письмо