Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Como mover El scroolbar de un stringgrid (https://www.clubdelphi.com/foros/showthread.php?t=39007)

grone35 08-01-2007 16:18:18

Como mover El scroolbar de un stringgrid
 
Hola a todos:


Mi problema es el siguiente, necesito mientras un stinggrid se va llenando este vaya bajando el scrollbar a la ultima posicion de tal manera que siempre este viendo el ultimo registro de la tabla.

Gracias por su atencion
Salu2:confused:

Bicho 08-01-2007 16:33:21

Hola,

el StringGrid y todos sus decendientes tienen las propiedades Row y Col, que te indica en que columna y fila (es decir, en que celda), está situado el foco en ese momento.
Lo que debes hacer es cada asignar esa propiedad al último row actual, es decir, al rowcount - 1, cada vez que insertas un registro nuevo en el StringGrid:

Código Delphi [-]
  for aRow := 1 to 25 do begin //es un ejemplo
    StringGrid1.Cells[0, aRow] := 'loquesea';
    StringGrid1.Cells[1, aRow] := 'loquesea';
    StringGrid1.Cells[2, aRow] := 'loquesea';
    StringGrid1.Cells[3, aRow] := 'loquesea';
    StringGrid1.Cells[4, aRow] := 'loquesea';
    ...
    StringGrid1.Row := StringGrid1.RowCount - 1; //Al final del bucle, mueves el foco al último row, así se tendrá el efecto que querías.
  end;

Espero te sirva.

Saludos

dec 08-01-2007 16:42:41

Hola,

No tengo mucha idea de ese control, pero, haciendo alguna prueba, me parece que bastaría conque según fueras añadiendo las distintas filas, actualizaras la propiedad "Row" del "StringGrid". Algo así:

Código Delphi [-]
var
  i: integer;
begin
  StringGrid1.RowCount := 100;
  for i := 0 to StringGrid1.RowCount-1 do
  begin
    StringGrid1.Rows[i].Add(IntToStr(i));
    StringGrid1.Row := i;
  end;
end;

Edito: Bicho se me adelantó y puede que su respuesta merezca más la pena que la mía aunque diría que son similares. :)

Y sin embargo el anterior código no se comporta igual que este otro:

Código Delphi [-]
var
  i: integer;
begin
  StringGrid1.RowCount := 100;
  for i := 0 to StringGrid1.RowCount-1 do
  begin
    StringGrid1.Rows[i].Add(IntToStr(i));
    StringGrid1.Row := StringGrid1.RowCount-1;
  end;
end;

Cosas del StringGrid, digo yo, vamos. :D

Bicho 08-01-2007 16:55:54

Pues no lo había probado, lo había hecho de cabeza, y el efecto esperado se consigue con la solución de dec

Código Delphi [-]
var
  i: integer;
begin
  StringGrid1.RowCount := 100;
  for i := 0 to StringGrid1.RowCount-1 do
  begin
    StringGrid1.Rows[i].Add(IntToStr(i));
    StringGrid1.Row := i;
  end;
end;

Es curioso, y no lo entiendo. Hubiera jurado que era culpa del optimizador de Delphi, pero lo he desactivado y sigue haciendo el mismo efecto.
Será como dice David, cosas del StringGrid.

Saludos

grone35 08-01-2007 17:15:15

Gracias Gente!!!

Justo lo que necesitabamos!:)


La franja horaria es GMT +2. Ahora son las 05:29:47.

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