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 20-03-2020
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 547
Poder: 17
jhonalone Va por buen camino
TFramedVertScrollBox objetos desordenados

Hola amigos. Yo y mis rarezas.
El título lo dice. Añado controles (TListView y TRctangle) al TFramedVertScrollBox y no salen en el orden añadido. Bueno, la primera vez SI. Las sucesivas NO. Os pongo un trozo de código que uso.

Código Delphi [-]
// Borro los controles anteriores
for xx := FramedVertScrollBox2.ChildrenCount-1 downto 0 do
  if (FramedVertScrollBox2.Children[xx] is TRectangle) or
      (FramedVertScrollBox2.Children[xx] is TListView)
  then
    FramedVertScrollBox2.RemoveObject(FramedVertScrollBox2.Children[xx]);

    // Hay que poner las posiciones a cero para que queden en su sitio
Rectangle7.Position.Y := 0;
Rectangle8.Position.Y := 0;
Rectangle9.Position.Y := 0;
Rectangle10.Position.Y := 0;
Rectangle11.Position.Y := 0;

ListView1.Position.Y := 0;
ListView2.Position.Y := 0;
ListView3.Position.Y := 0;
ListView4.Position.Y := 0;
ListView5.Position.Y := 0;


// Después añado los controles
        FramedVertScrollBox2.AddObject(Rectangle7);
        FramedVertScrollBox2.AddObject(ListView1);

        FramedVertScrollBox2.AddObject(Rectangle8);
        FramedVertScrollBox2.AddObject(ListView2);

        FramedVertScrollBox2.AddObject(Rectangle9);
        FramedVertScrollBox2.AddObject(ListView3);

        FramedVertScrollBox2.AddObject(Rectangle10);
        FramedVertScrollBox2.AddObject(ListView4);

        FramedVertScrollBox2.AddObject(Rectangle11);
        FramedVertScrollBox2.AddObject(ListView5);

Repito, la primera vez salen en el orden que los he añadido.

Las sucesivas me junta los rectángulos al final, pero no todos... Me junta los TListView... Inserta entre los ListView algún TRectangle... Y me mantiene la posición del desplazamiento vertical, que me gustaría que empezara el ScrollBars, siempre, en el principio.

Vamos, un desastre.

Todos los controles están alineados al Top

Agradezco cualquier sugerencia.

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 21-03-2020
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 547
Poder: 17
jhonalone Va por buen camino
Cita:
Empezado por jhonalone Ver Mensaje
Y me mantiene la posición del desplazamiento vertical, que me gustaría que empezara el ScrollBars, siempre, en el principio.
Hola de nuevo.
Esta parte la he resuelto asi:
Código Delphi [-]
 FramedVertScrollBox2.ViewportPosition := PointF(0, 0);
 FramedVertScrollBox2.RealignContent;

Sigo esperando vuestra ayuda.
Gracias y 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
  #3  
Antiguo 21-03-2020
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 547
Poder: 17
jhonalone Va por buen camino
Hola de nuevo.
Sigo investigando...

Sé que el control tiene un método Sort.
Código Delphi [-]
procedure Sort(Compare: TFmxObjectSortCompare); override;
Que según la ayuda, el parámetro Compare debe ser del tipo
Código Delphi [-]
TFmxObjectSortCompare = function(item1, item2: TFmxObject): Integer;

Pero reconozco humildemente que no tengo ni idea de cómo hacerlo.
Había pensado utilizar una propiedad que tienen en común todos los controles: la propiedad Tag para hacerlo. Pero estoy intentando averiguar cómo, sin éxito.

Como os comentaba, la segunda vez que lleno el TFramedVertScrollBox con un orden nuevo, no respeta el orden de asignación de los objetos. Es curioso que siempre los desordena en el mismo orden, aunque repita varias veces la asignación. (¿...?)

Bien. Sigo esperando que alguien más experto me saque de este apuro.
Gracias anticipadas y un saludo.
__________________
"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 22-03-2020
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 547
Poder: 17
jhonalone Va por buen camino
Hola a todos.
Muchas gracias a los que me habéis leído y a los que estuvierais intentando resolver mi problema.

¡¡También HE RESUELTO EL PROBLEMA de la ordenación!!

Fiel a mi costumbre de publicar mis soluciones, por si ayudan a alguien, aquí está la solución:
Código Delphi [-]

// Primero eliminamos los controles que habíamos asignado antes
for xx := FramedVertScrollBox2.ChildrenCount-1 downto 0 do
  if (FramedVertScrollBox2.Children[xx] is TRectangle) or
      (FramedVertScrollBox2.Children[xx] is TListView)
  then
    FramedVertScrollBox2.RemoveObject(FramedVertScrollBox2.Children[xx]);

...........

    // Quitamos esto al  principio de la asignación de controles
{Rectangle7.Position.Y := 0;
Rectangle8.Position.Y := 0;
Rectangle9.Position.Y := 0;
Rectangle10.Position.Y := 0;
Rectangle11.Position.Y := 0;

ListView1.Position.Y := 0;
ListView2.Position.Y := 0;
ListView3.Position.Y := 0;
ListView4.Position.Y := 0;
ListView5.Position.Y := 0;
       }

// Aasignamos los nuevos controles
        FramedVertScrollBox2.AddObject(Rectangle7);
        FramedVertScrollBox2.AddObject(ListView1);

        FramedVertScrollBox2.AddObject(Rectangle8);
        FramedVertScrollBox2.AddObject(ListView2);

        FramedVertScrollBox2.AddObject(Rectangle9);
        FramedVertScrollBox2.AddObject(ListView3);

        FramedVertScrollBox2.AddObject(Rectangle10);
        FramedVertScrollBox2.AddObject(ListView4);

        FramedVertScrollBox2.AddObject(Rectangle11);
        FramedVertScrollBox2.AddObject(ListView5);

........

// Colocamos después en el orden inverso al que deben figurar en el TFramedVertScrollBox
ListView5.Position.Y := 0;
Rectangle11.Position.Y := 0;
ListView4.Position.Y := 0;
Rectangle10.Position.Y := 0;
ListView3.Position.Y := 0;
Rectangle9.Position.Y := 0;
ListView2.Position.Y := 0;
Rectangle8.Position.Y := 0;
ListView1.Position.Y := 0;
Rectangle7.Position.Y := 0;

Consiste en poner los controles en la posición CERO del VertScrollBox (o FramedVertScrollBox) en orden inverso a como quieres que aparezcan en el contenedor, después de haber añadido todos los controles.

Un saludo y hasta la próxima.
__________________
"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 22-03-2020
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
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
Duda sobre destrucción de objetos compuestos por otros objetos noob OOP 11 16-02-2009 00:28:33
Objetos C# Cheswar .NET 1 10-03-2008 16:13:27
Objetos Perdidos. marcoszorrilla La Taberna 8 04-05-2007 19:50:23
almacenamiento de objetos seduerey OOP 2 25-09-2004 21:44:07
Objetos jfontane Varios 1 04-07-2003 15:39:04


La franja horaria es GMT +2. Ahora son las 16:01:31.


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