Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Mover el contenido de dos stringgrid al mismo tiempoal hacer scroll vertical ? (https://www.clubdelphi.com/foros/showthread.php?t=92836)

Jcg-Guirola 18-02-2018 02:16:20

Mover el contenido de dos stringgrid al mismo tiempoal hacer scroll vertical ?
 
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:
Código Delphi [-]
...
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:


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


La franja horaria es GMT +2. Ahora son las 21:36:26.

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