Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Scrolbars (https://www.clubdelphi.com/foros/showthread.php?t=72342)

cmfab 11-02-2011 16:06:11

Scrolbars
 
Hola foreros. tengo la siguiente preguntilla. como puedo en tiempo de ejecución capturar la posición en una rejilla de datos de los scrolbars
tanto vertical como horizontal. se pueden modificar estos valores ?


Saludos, y gracias por su atención

BlueSteel 11-02-2011 17:29:19

uff... no entendí mucho la pregunta.... :confused::confused::eek:

podrias especificar más... no se si eso dependa del componente que quieras utilizar... por que puede ser el Scroll de un Grid, de un DBGrid o de otro componente...

Salu2:p:cool:

cmfab 11-02-2011 17:54:09

Gracias por responder

si es en un dbgrid

necesito capturar la posicion que tienen los scrollbars de un dbgrid
cuando el usuario se mueve con ayuda de ellos. es posible ?

ecfisa 11-02-2011 23:57:10

Hola cmfab.

Una forma que se me ocurre, es usando la funcion GetScrollInfo .


Código Delphi [-]
...
// Obtener posición horizontal
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;

// Obtener posición vertical
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.

cmfab 14-02-2011 15:54:56

Gracias por las respuestas. funciona la lectura (captura) del dato. ahora como puedo cambiar el estado en tiempo de ejecución. osea guardar la posicion del scroll bars y en un momento dado restablecerla

Saludos

ecfisa 14-02-2011 17:11:42

Hola cmfab.

Usando la función SetScrollInfo

Código Delphi [-]
...
// Situar posición horizontal 
procedure TForm1.SetScrollBarHrzPos(Hnd: THandle; Pos: Integer);
var
  Info: TScrollInfo;
begin
  Info.cbSize:= SizeOf(TScrollInfo);
  Info.fMask:= SIF_POS;
  Info.nPos:= Pos;
  SetScrollInfo(DBGrid1.Handle,SB_HORZ,Info, True);
end;

// Situar posición vertical
procedure TForm1.SetScrollBarVerPos(Hnd: THandle; Pos: Integer);
var
  Info: TScrollInfo;
begin
  Info.cbSize:= SizeOf(TScrollInfo);
  Info.fMask:= SIF_POS;
  Info.nPos:= Pos;
  SetScrollInfo(DBGrid1.Handle,SB_VERT,Info, True);
end;
...

Un saludo.

cmfab 15-02-2011 14:56:51

gracias mucha por todo


La franja horaria es GMT +2. Ahora son las 15:31:20.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi