FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Propiedad del tipo TComponentClass
Hola foreros
He creado un componente que contiene un Edit, un Combo y tres botones. El objetivo del componente es el siguiente, con un ejemplo creo que quedará más clara la explicación: Supongamos que estoy en un formulario de facturas y quiero seleccionar el cliente. 1º.- Puedo escribir el código, si lo sé en el Edit. 2º.- Puedo selecionarlo desde el Combo, por el nombre. 3º.- Puedo usar uno de los botones, que me abrirá un formulario de búsqueda. 4º.- Si no existe el cliente, puedo usar otro de los botones para abrir el formulario de mantenimiento de clientes. En este último paso, es donde tengo un pequeño problema. Tengo una propiedad del tipo TComponentClass donde puedo asignar el formulario que quiero que abra. Todo funciona correctamente, pero me gustaría que esta propiedad apareciese en el Object Inspector (cosa que no sé porqué no hace), y que se pudiese seleccionar el formulario en él. Ahora mismo lo hago por código. Definición de la propiedad:
Así es como la asigno ahora:
Gracias de antemano |
#2
|
||||
|
||||
¡Hola a todos!
Cita:
Una manera habitual de resolver el problema es cambiar el tipo de esa propiedad publicada a String, y en tiempo de ejecución utilizar la función FindClass para "convertir" esa cadena a la clase que corresponde y entonces usar ésta para los fines pretendidos. Un detalle relevante es que la clase en cuestión debe ser registrada (agregada a una lista especial que maneja el programa) en tiempo de ejecución para que FindClass tenga éxito, pero esto no es necesario con las clases de formas que hayan sido definidas en tiempo de diseño y las clases de sus componentes contenidos; con ellas el registro se realiza de manera automática como lo dice la propia ayuda («Form classes and component classes that are referenced in a form declaration (instance variables) are automatically registered with the streaming system»). Si en algún momento te ves obligado a registrar una clase explícitamente, te sugiero utilizar la función RegisterClass. Algo que me entusiasmó con la salida de .NET fue pensar que en las nuevas versiones de Delphi podríamos contar con un tratamiento de clases más enriquecido para manejar todas estas cuestiones de forma más fácil y potente. Incluso en las nuevas versiones para Win32, tengo entendido hubo algunos avances al respecto, pero más allá de Delphi 7 no me he movido todavía (desconozco realmente el terreno). Un abrazo clasificado. Al González. |
#3
|
|||
|
|||
Hola Al González, gracias por tu ayuda, supongo que tendré que crear una propiedad string, tal y como dices. Esperaba que se pudiese hacer de otra manera, para no tener que hacer un editor de propiedades que busque los formularios.
Ah, perdón por no haber dicho que utilizo Delphi 7. Un saludo |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Propiedad tipo TFileName | Kreyser | OOP | 3 | 20-10-2005 18:44:54 |
Propiedad tipo Objeto (TForm) | buildero_d | C++ Builder | 1 | 15-09-2005 09:31:16 |
Propiedad tipo Objeto | buildero_d | OOP | 16 | 09-09-2005 00:01:55 |
Propiedad tipo Font | diegofhernando | OOP | 3 | 30-03-2004 00:15:37 |
Propiedad de tipo TShortCut | eMax | OOP | 8 | 11-06-2003 22:47:01 |
|