![]() |
![]() |
| 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 |
|
|
|
#2
|
||||
|
||||
|
Hola,
Lo único que me queda claro (o es lo que me esfuerzo para que me quede claro) es que publicar (de modo que pueda editarse en el Inspector de Objetos) una propiedad de tipo "TForm" es, cuando menos, problemático. Así que habría que publicarla de tipo "string" o similar (?) de manera que fuera la que albergara el nombre de la clase del formulario que nos interese, para luego utilizar una función como "GetClass" para poder trabajar con esta. Desde luego buscando en Google no parecen encontrarse muchas (por no decir ninguna concreta y que sirva para lo que nos ocupa) referencias al asunto de publicar una propiedad de tipo "TForm" manipulable desde el Inspector de Objetos. ¿Alguien saca algo más en claro del texto que roman ha enlazado más arriba? Definitivamente hay días que mejor no haberse levantado uno de la cama, como suele decirse. Así que, como ya va siendo hora, voy a hacer como si no me hubiera levantado echándome de nuevo a leer un rato, por lo menos, a ver si se me levanto con otro pie. |
|
#3
|
||||
|
||||
|
Que tal Dec,
Efectivamente, estoy de acuerdo contigo. Al parecer es algo no muy sencillo de hacer, y hasta puede que no sea posible. La propuesta de publicar la propiedad de tipo string creo que pueda ser la solución, y explicare por que. Esta explicación esta basada en un componente que esta incluido en la suite de componentes de "ABC for Delphi" (en su versión para C++ Builder). Bien pues resulta que tiene un componente llamado "abcFormTabControl", dicho control te permite crear varias "pestañas" y en cada una de ellas puedes mostrar un formulario. La forma en como se hace la referencia al formulario es a través de una propiedad llamada Forms, que no es mas que una lista de los forms que te interesan presentar en cada una de las pestañas. Se deduce que al tener solamente el nombre del formulario se crea una instancia del mismo. Hice algunas pruebas al respecto y me encontre que al especificar un nombre de formulario no valido (por ejemplo MiForm) la aplicación envia el mensaje "Class TMiForm not found". Es decir hace uso de la función FindClass para verificar si la clase esta registrada. En conclusión la forma de poder trabajar con forms haciendo referencia a ellos (en mi caso desde un componente personalizado) es a tráves del nombre del formulario. Ahora en lo que me he enfocado es en averigüar ¿cómo crear la instancia de un form a través del nombre del formulario?, es decir, que con la propiedad de tipo string que me indica el nombre, poder crear y descargar el form. Esto puede ser menos complicado que lo anterior pero en este momento no sé como hacerlo. Saludos. |
|
#4
|
||||
|
||||
|
Cita:
Para que esto funcione debes registrar previamente la clase del formulario con RegisterClass o RegisterClasses. Lo más cómodo es hacerlo en la sección initialization de la unidad del formulario. // Saludos |
|
#5
|
||||
|
||||
|
Hola,
Pues muchas gracias por su ayuda, al fin en conseguido lo que necesitaba (claro traduciendo el codigo a C++ Builder ) y va de maravilla. Sus aportaciones me ampliaron mucho el panorama. ![]() En definitiva la opción que tomé fue la de la propiedad tipo string para generar la instancia del form. Un saludo y nuevamente, gracias. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|