Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   FireMonkey (https://www.clubdelphi.com/foros/forumdisplay.php?f=50)
-   -   FMX: ListView Buscar y enseñar el 1º (https://www.clubdelphi.com/foros/showthread.php?t=96105)

Joviali 13-02-2023 17:57:55

FMX: ListView Buscar y enseñar el 1º
 
Buenas,
Tengo un Listview con por ejemplo 8o elementos, a la hora de posicióname en alguno utilizo:

Código Delphi [-]
  ListView1.ScrollTo( ListView1.Items[i].Index);


Esto me localiza el item y me lo muestra , el problema es que no se como hace rque siempre que sea posible( Que no este al final de la lista) lo muestre el 1º. de la lista visible.

Un saludo.

Joviali 15-02-2023 10:44:07

2 Archivos Adjunto(s)
Buenas, por si no ha quedado claro os paso unas fotos.

Intento buscar el item bitmap48 y me lo encuentra en la lista pero me lo enseña en cualquier sitio, ¿Podría forzarlo para que me lo muestre el 1º ?

Archivo Adjunto 4068

Como aquí.
Archivo Adjunto 4069

Casimiro Notevi 15-02-2023 12:48:31

¿Que lo muestre el primero?
Parece que lo que quieres es que lo ponga el primero en la lista, o sea, moverlo de posición, ¿es eso?

Joviali 15-02-2023 12:57:11

Gracias por contestar.

Es una lista ordena , con lo que no me interesa en principio, mover el item de sitio.El programa esta en un dispositivo en adroid, y me gustaría que estuviera el 1º de la lista visible.Espero haberme explicado.

jcpozi 16-02-2023 18:07:09

Hola.
con esto te debería funcionar.

Código Delphi [-]
var
  itemRect:TRectF;
begin
  itemRect :=  ListView1.GetItemRect(ListView1.Items[i].Index);
  ListView1.ScrollViewPos := ListView1.ScrollViewPos + itemRect.Top;

Joviali 17-02-2023 10:38:14

Buenas, ya se sitúa correctamente, Muchas gracias.^\||/, por cierto he tenido que hacer lo siguiente ya que el listview tengo habilitado un SearchBox.

No se si es lo mas optimo per me funciona correctamente.

Código Delphi [-]
      
       for j := 0 to ListView1 .Controls.Count-1 do
          if  ListView1.Controls[j] is TSearchBox then
          begin
            HeihhtSearch:=    ListView1.controls[j].Height;
            Break;

          end;



         itemRect :=  ListView1.GetItemRect(ListView1.Items[i].Index);
         ListView1.ScrollViewPos := ListView1.ScrollViewPos +( itemRect.Top-HeihhtSearch );


La franja horaria es GMT +2. Ahora son las 13:58:55.

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