DBGrid página de desplazamiento en lugar de la fila
Pregunta
Bueno, tengo un problema con DBGrid de desplazamiento vertical. Cuando me desplazo en posición vertical con la rueda del ratón o la barra de desplazamiento vertical que se mueve fila seleccionada hacia arriba y abajo. Quiero hacer que desplazarse fila no seleccionado, pero toda la rejilla. Al igual que funciona en Microsoft Excel por ejemplo (sólo para hacerle saber lo que me refiero). ¿Alguna sugerencia?
Solución 2
Bueno, casi lo que me gustaría ver. Encontrado el puesto de hanuleye en swissdelhicenter.ch. Este código de le permiten desplazarse libremente DBGrid con la rueda del ratón.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, DB, DBTables;
type
TForm1 = class(TForm)
DataSource1: TDataSource;
Table1: TTable;
DBGrid1: TDBGrid;
procedure FormCreate(Sender: TObject);
procedure DBGridMouseWheel(Sender: TObject; Shift: TShiftState;
WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
private
{ Private declarations }
public
{ Public declarations }
end;
TWheelDBGrid = class(TDBGrid)
public
property OnMouseWheel;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
TWheelDBGrid(DBGrid1).OnMouseWheel := DBGridMouseWheel;
end;
function GetNumScrollLines: Integer;
begin
SystemParametersInfo(SPI_GETWHEELSCROLLLINES, 0, @Result, 0);
end;
procedure TForm1.DBGridMouseWheel(Sender: TObject; Shift: TShiftState;
WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
var
Direction: Shortint;
begin
Direction := 1;
if WheelDelta = 0 then
Exit
else if WheelDelta > 0 then
Direction := -1;
with TDBGrid(Sender) do
begin
if Assigned(DataSource) and Assigned(DataSource.DataSet) then
DataSource.DataSet.MoveBy(Direction * GetNumScrollLines);
Invalidate;
end;
end;
end.
Otros consejos
No creo que eso sea posible, ya que me parece que la barra de desplazamiento en DBGrids son más como un indicador de progreso en lugar de un pergamino. Se comporta de manera diferente de los rollos en listviews donde se desplaza "páginas", en el PP controla incluso si se mueve hacia arriba o hacia abajo una sola fila los cambios de barra de desplazamiento para reflejar la "fila actual" / "el total de filas" fracción