PDA

Ver la Versión Completa : Paneles en Orden ......


Efren2006
10-06-2010, 03:09:54
Saludos


Mi problema es el siguiente ... Tengo en un Tform Varios Paneles ,,, y otros componentes ,, dependiendo de lo que el usuario seleccione necesito colocar Visible o no algunos Paneles,,, todo va bien,, como el Tform debe Tener un tamaño Fijo... coloque los Panel con Align = alTop .. y como ya explique funciona bien... el problema es que en algunos Casos los Paneles no estan en el Orden que necesito... es decir Ejemplo:

Tengo :
Tpanel1
Tpanel2
Tpanel3
Tpanel4
Tpanel5

Si el usuario Selecciona de un Tcombo
El valor =1 Desaparecen los Paneles 2 y 4 y Aparecen 1,3,5
El valor =2 Desaparecen los Paneles 3 y 5 y Aparecen 1,2,4
El valor =3 Desaparecen los Paneles 1,2,3 y Aperence 4,5

El Problema que tengo es que en algunos Casos no aparencen en ORDEN .. osea en ves de aparecer en caso del valor =1 ---> 1,3,5 aparecen 3,1,5 .... existe alguna propiedad que me permita colocar en pantalla los Panel en el orden que los necesito ... ???

Espero haberme explicado.-..

Caral
10-06-2010, 03:52:42
Hola
La famosa propiedad TAG, que esta ahi, nadie sabe para que sirve, no se usa, no la ven, ni nada de nada.
Pero esta ahi, es un integer y es un comodin para lo que se quiera.
Saludos

movorack
10-06-2010, 05:02:13
no es mejor utilizar un PageControl???

coso
10-06-2010, 12:33:28
Hola,
quiza los metodos .bringtofront y .sendtoback te sirvan para ordenarlos. Un saludo.

cloayza
10-06-2010, 16:23:34
Puedes utilizar la propiedad TabOrder de cada componente visual para asignar el orden...

Saludos...

maeyanes
10-06-2010, 16:40:25
Hola...

Trata de hacer que se pongan visibles en el orden que deben estar, esto es, siempre pon primero visible el 1, luego el 2, etc...


procedure Form1.ShowPanels(Pnl1, Pnl2, Pnl3, Pnl4, Pnl5: Boolean);
begin
Panel1.Visible := Pnl1;
Panel2.Visible := Pnl2;
Panel3.Visible := Pnl3;
Panel4.Visible := Pnl4;
Panel5.Visible := Pnl5
end;

// Uso:

ShowPanels(True, False, True, False, True); // Muestra panels 1, 3 y 5



Saludos...

ContraVeneno
10-06-2010, 18:13:23
no es mejor utilizar un PageControl???

esto es correcto, sería mucho más sencillo utilizar un PageControl.

maeyanes
10-06-2010, 18:31:44
Hola...

El TPageControl solo sería necesario si necesitase que un solo panel esté visible a la vez, pero (al menos yo) entiendo que el necesita tener más de un panel visibles al mismo tiempo, uno abajo del otro...


+---------+
| Panel 1 |
+---------+
| Panel 2 |
+---------+
| Panel 3 |
+---------+



Saludos...

Efren2006
11-06-2010, 02:58:51
Hola...

El TPageControl solo sería necesario si necesitase que un solo panel esté visible a la vez, pero (al menos yo) entiendo que el necesita tener más de un panel visibles al mismo tiempo, uno abajo del otro...


+---------+
| Panel 1 |
+---------+
| Panel 2 |
+---------+
| Panel 3 |
+---------+

Saludos...

Amigo [maeyanes] (http://www.clubdelphi.com/foros/member.php?u=159) es como lo dices,, necesito mas de uno , dependiendo de las opciones...

Probare con la propiedad TabOrder a ver como me va ..

Gracias a Todos por sus susgerencias ..

Neftali [Germán.Estévez]
11-06-2010, 12:36:02
A mi me ha pasado algunas veces, sobre todo cuando se crean paneles en ejecución o cualdo se visualizan o se ocultan, como te pasa a tí.

La única solución que he encontrado es reposicionar los paneles después de hacer las operaciones de creación o de visualización.

Es decir, si los paneles tienen de alto 100 pixels, pues realizar un bucle que los recoloque en el orden correcto. Algo así

for i := 0 to 10 ...
Panel[i].Top := (PANEL_HEIGHT * i);
...
end;