Скролинг в Dbgrid

  • Автор темы dzhserv
  • Дата начала
D

dzhserv

Подскажите пожалуйста!
Как можно сделать скролинг в стандартном DBGrid-е :p
 
B

Barmutik

Скролинг в DBGrid присутствует стандартно.. чем он Вас не устраивает?
 
D

dzhserv

он не работает

вернее он не прокручивает когда много записей
 
B

Barmutik

Он прокручивает .. только имеет три состояния всего... нчало.. середина и конец прокрутки...

Такая проблема есть.. используйте другой компонент грида ..

Надеюсь я Вас правильно понял ...
 
A

acorn

Я обычно сам загоняю таблицу в StringGrid - там такого бага нету.
 
B

Barmutik

Хороший вариант для 100.000 записей в курсоре...
 
D

dzhserv

А если их больше 100.000?

я уже много разных компонентов Grid -ов перепробовал, но ни у одного этой функции нет.
(Для D-7)
 
D

DZX

Если их даже и 100.000, то скорость работы такой программы будет ужасно медленная. Не надо придумывать колесо. И переходите на 10 версию, не понимаю упорства фанатов 7-ой
версии, да хороша, но всеравно время идет и баги 7-ой версии Борланд править не
собирается. Больше вероятнось , что он исправит баги 10-Й :)
 
D

dzhserv

Это совершенно верно, в 7-ке удобный интерфейс...
 
B

Barmutik

Для: DZX

7-ка общепризнанная самая удачная версия Дельфи.. а 2006 это в общем-то жалкие попытки Борлянда вскочить в вагончик .NET технологии...

Так что смысле переходить на версию выше 7-ой нет никакого...

А насчёт 100.000 записей я вообще-то имел ввиду в кавычках.... но как-то никто и не понял этого...

Если Вам надо свой грид .. используйте виртуальные контролы и в нём уже отображайте сами содержимое курсора...
 
Z

zubr

Вообще то вопрос решается достаточно просто, вот один из вариантов:
Код:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, Grids, DBGrids, DBTables;

type
TForm1 = class(TForm)
Table1: TTable;
DBGrid1: TDBGrid;
DataSource1: TDataSource;
private
{ Private declarations }
procedure MouseWheelHandler(var Message: TMessage);override;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.MouseWheelHandler(var Message: TMessage);
var
p:TPoint;
begin
GetCursorPos(p);
If WindowFromPoint(p)=DBGrid1.Handle then
begin
If Message.WParam<0 then
DBGrid1.Perform(WM_VSCROLL, SB_LINEDOWN, 0)
else
DBGrid1.Perform(WM_VSCROLL, SB_LINEUP, 0);
end;
end;

end.
Собирал в Delphi6.
 
D

dzhserv

Для: zubr

Все работает...
Большое спасибо за помощь со скролингом в DBGrid-е :( :lol:


Я проставляюсь пивом по URL link removed
 
Z

zubr

Таким же образом можно сделать и горизонтальный скролл. Определяем положение курсора - если в полосе горизонтальной прокрутки посылаем WM_HSCROLL. Гораздо удобнее, чем мышью щелкать, имхо.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!