Hola cmfab.
Una forma que se me ocurre, es usando la funcion
GetScrollInfo .
Código Delphi
[-]
...
function TForm1.GetScrollHrzPos(Hnd: THandle): Integer;
var
Info: TScrollInfo;
begin
Info.cbSize:= SizeOf(TScrollBarInfo);
Info.fMask:= SIF_POS;
GetScrollInfo(Hnd, SB_HORZ, Info);
Result:= Info.nPos;
end;
function TForm1.GetScrollVerPos(Hnd: THandle): Integer;
var
Info: TScrollInfo;
begin
Info.cbSize:= SizeOf(TScrollBarInfo);
Info.fMask:= SIF_POS;
GetScrollInfo(Hnd, SB_VERT, Info);
Result:= Info.nPos;
end;
...
Ejemplo de llamada:
Código Delphi
[-]
procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if Key in [VK_LEFT, VK_RIGHT] then
Caption:= 'Hor: ' + IntToStr(GetScrollHrzPos(TDBGrid(Sender).Handle));
if Key in [VK_UP, VK_DOWN] then
Caption:= 'Ver: ' + IntToStr(GetScrollVerPos(TDBGrid(Sender).Handle));
end;
Un saludo.