Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > навигация по Dbgrid


Автор: innok 9.11.2004, 15:11
проблема такая:
нужно сделать прокрутку в dbgrid колесом мыши. По умолчанию - прокручивается только в видимой области, причем indicator(треугольник) не смещается.
пробовал создать:
Код

procedure TForm.FormMouseWheelUp(Sender: TObject; Shift: TShiftState;
 MousePos: TPoint; var Handled: Boolean);
begin
if DBGrid1.Focused then
DataModule1.Table1.Next;
DBGrid1.Repaint;
end;

но при наличии dbgrid на форме форма не ловит событие MouseWheelUp

Автор: Guest 9.11.2004, 16:39
http://forum.sources.ru/index.php?showtopic=48491&unread=1&hl=msg\.wparam

Автор: p0s0l 9.11.2004, 19:26
Можно так:
Код

type
 TForm1 = class(TForm)
   DataSource1: TDataSource;
   DBGrid1: TDBGrid;
   Table1: TTable;
   procedure FormCreate(Sender: TObject);
   procedure DBWheelUp (Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
   procedure DBWheelDown (Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
 private
 public
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.DBWheelUp;
begin
 DBGrid1.DataSource.DataSet.Prior;
 DBGrid1.Refresh;
 Handled := True;
end;

procedure TForm1.DBWheelDown;
begin
 DBGrid1.DataSource.DataSet.Next;
 DBGrid1.Refresh;
 Handled := True;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 TDrawGrid(DBGrid1).OnMouseWheelUp := DBWheelUp;
 TDrawGrid(DBGrid1).OnMouseWheelDown := DBWheelDown;
 DBGrid1.DoubleBuffered := True;
end;

Автор: Medved 10.11.2004, 03:45
Как альтернативой, можно воспользоваться гридом из библиотеки EhLib. Он поддерживает прокрутку по умолчанию.

Кстати там можно посмотреть и реализацию. Она поставляется с исходниками.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)