Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Desarrollo en Delphi para Android
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy


Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-05-2022
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 547
Poder: 17
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)
Responder Con Cita
  #2  
Antiguo 12-05-2022
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
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
Responder Con Cita
  #3  
Antiguo 12-05-2022
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 547
Poder: 17
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)
Responder Con Cita
  #4  
Antiguo 13-05-2022
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 547
Poder: 17
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)
Responder Con Cita
  #5  
Antiguo 13-05-2022
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
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
Responder Con Cita
  #6  
Antiguo 13-05-2022
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
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
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Cambiar ancho de la barra de desplazamiento vertical cmfab Varios 3 21-10-2013 21:01:32
Desplazamiento vertical en DBGrid dvd2000 Varios 8 25-04-2011 23:22:07
Pierdo la barra de desplazamiento vertical en un DBGrid zajoma OOP 0 09-02-2010 09:27:57
Sincronizar desplazamiento horizontal en dos DbGrid Héctor Randolph OOP 0 15-03-2007 23:29:00
Barras desplazamiento vertical y horizontal Leomedellin Varios 3 06-04-2005 23:50:58


La franja horaria es GMT +2. Ahora son las 08:58:17.


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
Copyright 1996-2007 Club Delphi