Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Go Back   Foros Club Delphi > Principal > Desarrollo en Delphi para Android
Register FAQ Members List Calendar Guía de estilo Search Today's Posts Mark Forums Read


Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 11/05/2022
jhonalone jhonalone is offline
Miembro
 
Join Date: Sep 2007
Location: Madrid
Posts: 571
Poder: 20
jhonalone Va por buen camino
Sincronizar desplazamiento vertical en 2 ListBox

Hola amigos.

Necesito ayuda para conseguir desplazar verticalmente 2 Listbox sincronizados con el mismo número de items y distintas Strings (Claro..).

En el buscador de internet he encontrado alguna solución aplicada para Windows utilizando mensajes de Windows en este enlace.

Pero no sé como hacerlo en FMX para Andorid.

Espero que alguien pueda ayudarme.

Gracias de antemano.

Saludos.
__________________
"Pedid y se os dará; buscad y hallaréis ..." (Lc 11,9-10)
"...si no tengo caridad, nada soy..." (1 Cor 13,1-13)
Reply With Quote
  #2  
Old 12/05/2022
[egostar] egostar is offline
Registrado
 
Join Date: Feb 2006
Posts: 6,572
Poder: 27
egostar Va camino a la fama
Hola, debes hacer uso del evento OnViewPortPosition de los ListBox.

Agrega dos ListBox y un boton a la forma, en el ejemplo solo asigno el evento al ListBox2 y cuando te desplazas verticalmente se ve el efecto.

Código Delphi [-]
unit Unit2;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Controls.Presentation,
  FMX.StdCtrls, FMX.Layouts, FMX.ListBox;

type
  TForm2 = class(TForm)
    ListBox1: TListBox;
    ListBox2: TListBox;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    procedure ViewPortPositionChange(Sender: TObject; const OldViewportPosition,
                          NewViewportPosition: TPointF; const ContentSizeChanged: Boolean);
  end;

var
  Form2: TForm2;

implementation

{$R *.fmx}

procedure TForm2.Button1Click(Sender: TObject);
var
  I: Integer;
begin
  for I := 0 to 20 do
  begin
    ListBox1.Items.Add(Format('%d',[I*12]));
    ListBox2.Items.Add(Format('%d',[I*15]));
  end;
  ListBox2.OnViewportPositionChange := ViewPortPositionChange;
end;

procedure TForm2.ViewPortPositionChange(Sender: TObject; const OldViewportPosition,
  NewViewportPosition: TPointF; const ContentSizeChanged: Boolean);
var
  P: TPointF;
begin
  P := ListBox1.ViewportPosition;
  P.Y := ListBox2.ViewportPosition.Y;
  ListBox1.ViewportPosition := P;
end;

end.

Saludos
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Reply With Quote
  #3  
Old 12/05/2022
jhonalone jhonalone is offline
Miembro
 
Join Date: Sep 2007
Location: Madrid
Posts: 571
Poder: 20
jhonalone Va por buen camino
¡¡¡MILLONES DE GRACIAS, egostar!!!

Por aportarme la solución y por hacerlo tan rápido.
Implemento la solución en mi proyecto y te cuento.

Saludos.
__________________
"Pedid y se os dará; buscad y hallaréis ..." (Lc 11,9-10)
"...si no tengo caridad, nada soy..." (1 Cor 13,1-13)
Reply With Quote
  #4  
Old 13/05/2022
jhonalone jhonalone is offline
Miembro
 
Join Date: Sep 2007
Location: Madrid
Posts: 571
Poder: 20
jhonalone Va por buen camino
¡¡¡P E R F E C T O!!!

Sencillamente... ¡¡¡M A R A V I L L O S O!!!

Millones de gracias.

Eres muy G R A N D E egostar.

A pesar de la hora que es (la 1:08 de la noche) no he podido resistirme a darte las graacias.

Un saludo muy cordial.
__________________
"Pedid y se os dará; buscad y hallaréis ..." (Lc 11,9-10)
"...si no tengo caridad, nada soy..." (1 Cor 13,1-13)
Reply With Quote
  #5  
Old 13/05/2022
[egostar] egostar is offline
Registrado
 
Join Date: Feb 2006
Posts: 6,572
Poder: 27
egostar Va camino a la fama
Hola jhonalone

Me alegra que te haya servido, FMX tiene muchas cosas interesantes y ésta es una de ellas.

Saludos
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Reply With Quote
  #6  
Old 13/05/2022
[egostar] egostar is offline
Registrado
 
Join Date: Feb 2006
Posts: 6,572
Poder: 27
egostar Va camino a la fama
Una pequeña mejora.


Código Delphi [-]
begin
  ListBox1.OnViewportPositionChange := ViewPortPositionChange;
  ListBox2.OnViewportPositionChange := ViewPortPositionChange;
end;

procedure TForm2.ViewPortPositionChange(Sender: TObject; const OldViewportPosition,
  NewViewportPosition: TPointF; const ContentSizeChanged: Boolean);
begin
  if (Sender as TListBox).Name = 'ListBox1' then
    ListBox2.ViewportPosition := NewViewportPosition
  else
    ListBox1.ViewportPosition := NewViewportPosition;
end;

Saludos
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Reply With Quote
Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Cambiar ancho de la barra de desplazamiento vertical cmfab Varios 3 21/10/2013 21:01
Desplazamiento vertical en DBGrid dvd2000 Varios 8 25/04/2011 23:22
Pierdo la barra de desplazamiento vertical en un DBGrid zajoma OOP 0 09/02/2010 09:27
Sincronizar desplazamiento horizontal en dos DbGrid Héctor Randolph OOP 0 15/03/2007 23:29
Barras desplazamiento vertical y horizontal Leomedellin Varios 3 06/04/2005 23:50


All times are GMT +2. The time now is 11:08.


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