Скролинг в Dbgrid

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

dzhserv

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

Barmutik

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

dzhserv

Гость
#3
он не работает

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

Barmutik

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

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

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

Barmutik

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

dzhserv

Гость
#8
А если их больше 100.000?

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

DZX

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

dzhserv

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

Barmutik

Гость
#11
Для: DZX

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

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

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

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

zubr

Гость
#12
Вообще то вопрос решается достаточно просто, вот один из вариантов:
Код:
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

Гость
#13
Для: zubr

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


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

zubr

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