¿Como hacer invisible y que no ocupe lugar un componente?
Hola, Tengo un formulario en el que un TComboBox aparece dependiendo de lo que haya seleccionado con anterioridad el usuario, la cuestión es que cuando esta no visible queda un espacio y no me gusta mucho, quería saber si hay alguna forma de que no ocupe lugar el componente cuando no esta visible. Busque en los tutoriales pero no eh visto ningún ejemplo... sera posible? :confused:
Saludos y gracias. :) |
Hola Jere_84, solo con el componente no, lo que puedes hacer es colocar en un panel sin borde ( BevelInner->bvNone, BevelOuter->bvNone, BorderStyle->BsNone ) tus componentes que están debajo de tu combobox y mover dicho panel arriba (Visible->False) o abajo (Visible->True) para que no se vea el espacio, para esto puedes utilizar la propiedad Top de dicho panel.
Saluditos |
Cita:
A ver, te doy una idea... Quiero suponer que tienes un TPanel o algo así, y como sabes, es un contenedor de componentes, ¿por qué no posicionas el TComboBox en el eje vertical que le corresponde, pero en un eje horizontal QUE SALGA DE LA VISTA. Así, cuando sea necesario hacerlo visible, lo posicionas en el eje horizontal y listo... Ahora que lo más "elegante", natural y normal es tener el componente deshabilitado y visible, hasta que se cumple la condición que permite habilitar y utilizar el contenido del componente... |
Cita:
¿Quieres que otros componentes ocupen ese lugar? ¿Quieres que el formulario se haga más pequeño? ... Dependiendo de lo que necesites la táctica es una u otra. |
Cita:
. |
El formulario es modal y tengo un group box que contiene dos combos y debajo dos bitbtn. El combo inferior no siempre aparece, entonces queda un espacio medio grande del group box vacio cuando no esta visible hasta llegar el limite inferior del mismo y luego aparecen los botones. La idea seria que cuando no aparece el combo inferior el group box se encogiera un poco, los dos botones subieran y el formulario fuera mas pequeño, no se si este comportamiento es posible con propiedades o habría que hacer alguna maniobra por código :confused:
gracias por las respuestas. |
Cita:
Saluditos |
1 Archivos Adjunto(s)
Jere_84,
Cita:
Espero sea útil :) Nelson. |
Cita:
|
Cita:
Es que, además del autosize, hay que mover los componentes al nuevo "top" que queda vacío. Par eso podrían ser los anchors, pero eso funciona sólo respecto del formulario, no respecto de un panel, por ejemplo. No sé porqué, pero me parece que en Delphi XE2 hay paneles para hacer layouts más dinámicos, ¿no es así? // Saludos |
He hecho una pequeña prueba y más o menos me referíá a esto. Subo el ejemplo al FTP (Redimensionar Formulario).
En mi caso con un código como este, que básicamente oculta el panel y cambia un par de alineaciones para que se "reajuste".
|
¡Ah! Ya veo como le haces. Oye, pero ni siquiera necesitas ese código ¿no? Es decir, tu ejemplo me funciona si sólo pongo Panel2.Align en alTop y Self.AutoSize en true en diseño.
// Sludos |
Es posible, es posible.
Lo he generado rápido probando las propiedades, pero afinando un poco más es posible que como comentas se pueda "ahorrar" alguna línea más. En este caso quería que al volver a pulsar el check, el formulario "volviera" otra vez a como estaba. Si es algo que sólo se desea hacer en el Show (hacerlo más pequeño) y no va a cambiar mientra ese form está visible, sobrarán lineas seguro. |
Cita:
// Saludos |
Correcto.
Pues entonces queda claro que se puede hacer. Si es que Delphi es mucho delphi... ;-) |
La franja horaria es GMT +2. Ahora son las 03:22:34. |
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