FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Muchas gracias por sus respuestas, seguire investigando, aunque creo que la duda en general es ¿Como crear una propiedad de tipo Objeto especificamente en TForm?, ya sea en Delphi o en C++ Builder.
Posteare en el foro que me has indicado. Saludos y gracias. |
#2
|
||||
|
||||
Hola,
Mi gozo en un pozo, se suele decir en estos casos. ¡Pues no resulta que puedo asignar desde el Inspector de Objetos un formulario a la propiedad del componente pero no otro formulario! Me explico. Tengo dos unidades en el proyecto en que hago pruebas. Cada una de ellas representan formularios: "Form1" y "Form2". Pues bien, puedo asignar desde el Inspector de Objetos, como digo, a la propiedad "MiForm" el formulario "Form1", pero, a la que trato de asignar a dicha propiedad "Form2" obtengo un "Invalid property value" muy bonito, en un diálogo con su icono de error y todo. Decididamente, no aprende uno y se mete no ya donde no le llaman, pero de donde es probable que no sepa salir... He probado a añadir el componente conque estoy probando también en el formulario "Form2" y ahí sí puedo añadir este a la propiedad del componente que se supone puede albergar variables del tipo "TForm"... Esto de suponer... es mucho suponer... De todos modos hay algo que me extrañó de tu primer mensaje: comprendería que un formulario tuviera un objeto "TListView" en su interior, pero, ¿para qué necesitas que un "TListView" tenga "en su interior" un formulario? |
#3
|
||||
|
||||
Cita:
// Saludos |
#4
|
||||
|
||||
Hola,
Llevas razón en los dos mensajes que publicaste antes roman. Y otra vez digo que me metí en donde no debí, porque quien sabe, sabe, y ya se ve que yo no sé. Respecto de tu penúltimo mensaje, sí, comprendo que lo que estaba haciendo no era, precisamente, copiar, sino solamente asignar la referencia a otro objeto, que no es lo que se pretende con el método "Assing". Lo que ocurre es que me pierdo, entonces. Quiero decir, ¿habría entonces que hacer algo como lo siguiente? Va a ser que no, pero, ¿qué tal parece esto? ¿Mejor que lo anterior?
Última edición por dec fecha: 07-09-2005 a las 21:51:11. Razón: (corrección del texto) |
#5
|
||||
|
||||
Hola,
Trataré de traducir el código a C++ Builder. Cita:
Cita:
En mi caso el propósito de la propiedad MiForm me servirá para mostrar ese form al ejecutar cierta accion... (digamos al hacer doble clic sobre algun elemento del ListView). Entonces lo que trato de hacer es apuntar hacia cierto formulario y despues mostrarlo dependiendo de ciertas acciones, pero esto a tráves de la propiedad MiForm... de esta forma simplifico las tareas y solo tengo que ligar algun form a mi componente y listo. !Bueno al menos eso es lo que intento hacer!. Saludos. |
#6
|
||||
|
||||
Hola,
Cita:
|
#8
|
||||
|
||||
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. |
#9
|
||||
|
||||
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. |
|
|
|