![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Cita:
Quizá es fácil pero hasta el momento no veo como lograr esto. Cuando se usa "View as text" y luego "View as form" el constructor Create se ejecuta antes de leer el dfm creando una instancia de los paneles interiores que nunca serán las que contengan componentes insertadas en diseño. Posiblemente redefiniendo DefineProperties, no lo sé. Creo que es demasiada complicación para algo que se resuelve con Frames (hasta ahora no he visto la razón para no usarlos). // Saludos |
|
#2
|
|||
|
|||
|
La verdad es que un compañero mío ha intentado crear el componente a partir de Frames y el problema es el mismo.
|
|
#3
|
||||
|
||||
|
Cita:
Pongo un ejemplo que construí para la ocasión:
Si lo probáis veréis que se crea un panel con dos paneles en su interior y que se pueden añadir controles en ambos paneles sin que se pierdan en ejecución. Tambien vereis, si visualizais el formulario como texto, que los controles añadidos forman parte del formulario (gracias a esto se mantiene la persistencia) y que, al volver a la vista de formulario normal, no ocurre el error de que tal panel ya existe (gracias a la comprobación que hacemos en el metodo "CrearPanels"). La desventaja, como ya dije, es que se pueden modificar los paneles en diseño y eliminar ( aunque siempre que la aplicación se ejecute los paneles aparecerán). Cita:
Cita:
Ten encuenta que un frame casi se comporta como si fuera un componente más. Fíjate que, incluso, cuando lo añadimos a un formulario pareciera que añadimos un control normal. Si tu problema para usar los frames es porque necesitas propiedades en tiempo de diseño (es decir, propiedades que aparezcan en el inspector de objetos) te comento que puedes crearlas, aunque tendrás que realizar alguna operación especial (comentame si es por esto y te digo como hacerlo). Saludos! |
|
#4
|
||||
|
||||
|
Hola,
Escribí mi anterior mensaje y me fui a dormir y me quedé pensando en el método Loaded y ahora mismo iba a hacer las pruebas pero visto que ya las hiciste y te han funcionado veo que es posible. Lo de evitar que se destruyan los paneles en el diseño pienso que podría hacerse en el método Notification. Aún así, ya CAOS decidirá si posiblemente use finalmente frames. Como ya le comentas, si lo que quiere es añadir propiedades publicadas al mismo frame, puede hacerse. // Saludos |
|
#5
|
||||
|
||||
|
Cita:
(Sigo pensando que la mejor solución para CAOS está en utilizar los frames) Saludos! |
|
#6
|
|||
|
|||
|
La verdad es que al final voy a poder evitar el problema, no solucionarlo sólo evitarlo.
De todas maneras, probaré vuestras últimas ideas, ya más por curiosidad que por ir a utilizarlo en este caso concreto. Muchas gracias por vuestra ayuda, la verdad es que ideas no os han faltado. Otra vez gracias y un saludo. |
|
#7
|
||||
|
||||
|
Hola, les tengo buenas noticias. El código que muestro es prácticamente lo que originalmente se quería: un panel con dos subpaneles en los cuales se pueden insertar componentes pero que no son modificables durante el diseño. Claro está que las componentes se quedan donde deben estar al ejecutar la aplicación y/o reabrir el formulario.
Quisiera decir que esto se me ha ocurrido a mi pero no es así. Esto no evita que me de gusto descubrir, una vez más, que Delphi es mucho más potente de lo que imaginamos. Como ahora ya me voy a dormir les dejaré en suspenso hasta más tarde en cuanto a la procedencia del código. Sólo diré ahora que lo he adaptado para nuestro caso y si algo falla seguramente será culpa mía y no desde luego del autor original. La componente tiene aún un pequeño problema pero estoy seguro que jmariano lo podrá arreglar. Los demás también pero él fue quien tomó en cuenta dicho problema. Confieso además que no he terminado de entender cabalmente el código pero ya entre todos hallaremos la explicación. Por hoy sólo me resta comentarles que lo he probado con Delphi 7 pero supongo que con algunos cambios funcionará en otras versiones (lo supongo porque para simplificar quité algunas condicionales de compilación ).
// Saludos |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|