PDA

Ver la Versión Completa : Mover el contenido de dos stringgrid al mismo tiempoal hacer scroll vertical ?


Jcg-Guirola
18-02-2018, 02:16:20
Hola a todos antes que nada agradecer todo el trabajo que se hace en este foro, no soy muy avanzado todavía programando y resuelvo muchisimas de mis dudas gracias a preguntas que otros hicieron y fueron respondidas aquí.
Ahora si al grano, tengo dos stringgrid que siempre tendran la misma cantidad de filas necesito hacer que al hacer scroll vertical en una se mueva de igual forma la otra, puediera servirme tambien algo que me permita ocultar la scrollbar vertical de ambos stringgrid y manejaro a travez de una scrollbar que cree aparte, lo que sucede es que una está a un lado de la otra y muestra información de datos que estan organizados por filas en la primera, espero haberme explicado correctamente.

ecfisa
18-02-2018, 05:55:42
Hola.

Fijate si este ejemplo con tres TStringGrid te resulta útil:

...
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
StringGrid2: TStringGrid;
StringGrid3: TStringGrid;
procedure FormCreate(Sender: TObject);
procedure sgTopLeftChanged(Sender: TObject);
private
public
end;

var
Form1: TForm1;

implementation {$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
i: Integer;
begin
StringGrid1.ColCount := 3;
StringGrid1.RowCount := 10;
StringGrid2.ColCount := 3;
StringGrid2.RowCount := 10;
StringGrid3.ColCount := 3;
StringGrid3.RowCount := 10;

for i := 0 to StringGrid1.RowCount-1 do
begin
StringGrid1.Rows[i].CommaText := IntToStr(i)+','+IntToStr(i+1)+','+IntToStr(i+2);
StringGrid2.Rows[i].CommaText := StringGrid1.Rows[i].CommaText;
StringGrid3.Rows[i].CommaText := StringGrid1.Rows[i].CommaText;
end;

StringGrid1.OnTopLeftChanged := sgTopLeftChanged;
StringGrid2.OnTopLeftChanged := sgTopLeftChanged;
StringGrid3.OnTopLeftChanged := sgTopLeftChanged;
end;

procedure TForm1.sgTopLeftChanged(Sender: TObject);
var
i : Integer;
begin
for i := 0 to ControlCount-1 do
if (Controls[i] is TStringGrid)and(Controls[i] <> Sender) then
TStringGrid(Controls[i]).TopRow := TStringGrid(Sender).TopRow
end;


Funciona con mouse sobre el ScrollBar tanto como con las teclas down/up.

Salida:
https://s10.postimg.org/hvfqpsq89/Jcg-_Guirola.gif

Saludos :)

Jcg-Guirola
18-02-2018, 16:37:02
Eso es justo lo que busco.Muchas Gracias

Jcg-Guirola
18-02-2018, 18:35:56
Ya lo probé y me funcionó ok gracias