Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Orden de varios paneles alineados altop (https://www.clubdelphi.com/foros/showthread.php?t=40724)

Angel Fernández 24-02-2007 22:11:51

Orden de varios paneles alineados altop
 
Saludos al foro.

Quisiera plantear una duda un poco tonta, pero que no sé como resolver. Para contarlo, tengo que enrollarme un poco; perdón por adelantado:o. (Quizá a alguien le dé ideas para utilizarlo en sus proyectos).

Tengo que presentar mucha información en pantalla y para ello he creado un sistema de paneles que agrupan la información y que los puedo mostrar u ocultar apretando un botón. Sería algo así con todos los paneles mostrados:

-------------------------------------------------------
[-] Datos del fichero (Esto es el panel 1)
-------------------------------------------------------
Fecha acceso ..................(Esto es el panel 2 que
Fecha creación ............... se muestra o no apretando
etc ................................el botón - del panel 1)
-------------------------------------------------------
[-] Datos del cliente (Panel 3)
-------------------------------------------------------
Dato 1 .............................(Esto es el panel 4, mismo
Dato 2 .............................funcionamiento que el 2)
Dato 3
-------------------------------------------------------

Y así con varios paneles.

Cuando están los paneles ocultos sería algo así:
-------------------------------------------------------
[+] Datos del fichero (Esto es el panel 1)
-------------------------------------------------------
[+] Datos del cliente (Panel 3)
-------------------------------------------------------

Vendría a ser como los paneles deslizantes de Outlook pero de modo casero.
Cada panel está alineado altop y están todos juntos dentro de un scrollbox.

Bien, el problema es: Después de mostrar y ocultar los paneles una vez, a veces pasa
que se quedan en una disposición distinta a la diseñada por mí; algo así:

-------------------------------------------------------
[-] Datos del fichero (Esto es el panel 1)
-------------------------------------------------------
Fecha acceso
Fecha creación
etc
-------------------------------------------------------
Dato 1
Dato 2
Dato 3
-------------------------------------------------------
[-] Datos del cliente (Panel 3)
-------------------------------------------------------

Y esta disposición es aleatoria, cada vez de una forma.

El problema reside, creo yo, en que al hacer invisible un panel y luego visible, su alineación altop hace que se coloque por encima de otro panel.

De hecho lo he solucionado de una forma poco convincente: al hacer visible o invisible un panel, recorro todos los paneles por orden (1,2...etc) y, si son visibles, pongo su alineación primero albottom y a continuación altop. Con esto lo resuelvo, pero se crea un efecto de que todo se mueve durante una décima de segundo, que es visible y que llega a marear.

¿Alguien tiene alguna idea de cómo solucionarlo de otra forma?

Espero haberme expresado bien y perdón por el rollo.

Gracias de antemano.

Lepe 25-02-2007 00:56:01

Puedes hacer uso de 2 paneles para construir lo que dices.
Código:

-------------------------------------------------------
panel 1
            --------------------------------------
              panel 2  "Datos del Fichero"
            --------------------------------------

              Fecha de acceso ......
              Fecha creacion... 

Fin del panel 1
-------------------------------------------------------

El panel 1 tendría un borde (border = bsSingle) . El panel 2 puedes ponerlo raised (elevado) para destacar los títulos.

Así cuando quieras expandir/contraer el panel, solo tienes que cambiar el alto del panel 1.

Saludos

Angel Fernández 25-02-2007 02:12:46

Gracias Lepe por tu respuesta. Voy a probar lo que me dices a ver qué tal.

Crandel 25-02-2007 11:49:34

Podrias hacer uso del componente VirtualTreeview que tiene muy buena presentacion para estas cosas

Angel Fernández 25-02-2007 18:04:27

Ya lo he resuelto.
 
Gracias Crandel por tu respuesta. Sin embargo, no me sirve el virtualtreeview, porque dentro de los paneles he puesto dbgrid para mostrar valores.

De todas formas, lo que me dijo Lepe ha funcionado. Siguiendo mi esquema del primer mensaje, es decir:

-------------------------------------------------------
[-] Datos del fichero (Esto es el panel 1)
-------------------------------------------------------
Fecha acceso ..................(Esto es el panel 2 que
Fecha creación ............... se muestra o no apretando
etc ................................el botón - del panel 1)
-------------------------------------------------------
[-] Datos del cliente (Panel 3)
-------------------------------------------------------
Dato 1 .............................(Esto es el panel 4, mismo
Dato 2 .............................funcionamiento que el 2)
Dato 3
-------------------------------------------------------

Lo que hago es ponel el panel 1 dentro del panel 2 y el 3 dentro del 4. Entonces, al pulsar el botón +/- lo que hago es cambiar el alto del panel 2 (o el panel 4) en vez de cambiar la visibilidad. Cuando no quiero mostrar información (panel cerrado) el panel 2 tiene la altura del panel 1, que tiene los títulos y siempre es visible. Cuando quiero mostrar información (panel abierto) aumento la altura. Sencillo y eficaz.

Gracias.


La franja horaria es GMT +2. Ahora son las 00:18: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