PDA

Ver la Versión Completa : No se ven controles en herencia visual


Sirkius
07-06-2004, 20:33:04
Hola, tengo un Form con varios controles y algunas propiedades nuevas, y he seguido los pasos para meterlo en el repositorio (con algún que otro problema pero al final bien :)). El problema es que cuando heredo en el IDE no se ven los otros controles, solo cuando ejecuto. ¿Debo hacer algo más?

Gracias por adelantado

PD: ya sé que es una pijotada, pero es más facil situar el resto de los controles viendo los que ya tienes :P.

delphi.com.ar
07-06-2004, 20:38:14
Te cuento que hago uso y abuso de la herencia visual, y nunca me ha sucedido algo similar... ¿Porqué no nos cuentas "los pasos" que haces?

__marcsc
07-06-2004, 20:41:35
Hola,

Posiblemente lo que estás haciendo es cambiar manualmente desde la ventana de código la clase de la que hereda tu form. Cuando haces esto en modo diseño no funciona porqué el dfm se ha creado como un dfm del ancestro original.

Es decir, imagínate que tienes



TForm1 = class(TForm)
...


Si tu sustituyes TForm por TMiForm, que es una clase que tienes en el Object Repository, en diseño lo verás como un form heredado de TForm. A la práctica, vacío.

Lo que tienes que hacer es ir a File->New->Other y desde allí seleccionar el form que has dejado en el Object Repository. De esta forma, el dfm será correcto y podrás ver en diseño tu form como toca :)

Suerte! :)

roman
07-06-2004, 20:49:36
tengo un Form con varios controles y algunas propiedades nuevas

Si por propiedades nuevas te refieres a propiedades publicadas quizá te interese leer esto de gexperts:

http://www.gexperts.org/opentools/

Epecíficamente ve al tópico "How can I add published properties to a TForm descendent?" que en su último párrafo dice:


Note that the IDE won't allow you to add both published properties and components to a custom module at the same time. The workaround is to create a form with your custom properties in a package, and then have a descendent form in the repository which adds the components you want there by default.


// Saludos

Sirkius
07-06-2004, 21:12:34
Guau, que velocidad en responder, así da gusto :D . Muchas gracias!!

Os explico los pasos que he seguido:
1. He metido los controles en el formulario
2. He hecho eso de añadir el formulario en un paquete de ejecución y en un paquete de diseño poner el Register con eso de RegisterModule...
3. He añadido el formulario al Repositer
4. He creado una aplicacion nueva, y he añadido el formulario a partir de New->Others->El formulario y he marcado inherited.

He cerrado la aplicacion y la he vuelto a abrir y nada. Ahora que lo pienso puede que el fallo este en que el formulario está en el paquete de ejecucion y no en el diseño, ahora lo pruebo y comento.

Saludos

EDITO: eso de separarlo en dos paquetes lo hice por un problema de que no encuentra el Proxies.pas, y en la pagina de Borland decia que hiciera eso de separarlo. No puedo añadir el formulario al paquete de diseño pq dice que ya está en el otro paquete :(. Sigo haciendo pruebas...

EDITO 2: se me olvido decir que las propiedades publicadas me funcionan bien (al principio no :p), el problema unicamente está en los controles.

guillotmarc
07-06-2004, 21:22:04
Hola.

Yo no hago nada de todo esto. No pongo el formulario base en el repositorio.

Añado el formulario base (el que se va a heredar) como un formulario más en el proyecto (Naturalmente lo quito de la lista de formularios que se crearán automáticamente).

Después, para añadir un formulario hijo. Simplemente le doy al icono de la hoja en blanco (equivale al File -> Add -> Other), y se muestra el repositorio.

Selecciono la pestaña del proyecto actual, y allí muestra todos los formularios del proyecto. Selecciono el formulario base, y ya está. Te va a crear un formulario heredado de él.

Saludos.

Sirkius
07-06-2004, 21:29:36
Pues nada :(, he probado creando un nuevo formulario con un label y si que iba bien :confused:. Toque el dfm del formulario "padre", así que voy a mirar si es eso.

Sirkius
07-06-2004, 21:54:28
He probado varias cosas (quitandolo del Repository, del package de ejecucion, etc.) y he visto que lo que falla es que esté registrado con RegisterCustomModule... seguire mirando...

roman
07-06-2004, 22:01:25
he visto que lo que falla es que esté registrado con RegisterCustomModule

¿Leíste mi primer mensaje?

Acabo de hacer la prueba y, en efecto, si uso RegisterCustomModule para agregar propiedades publicadas entonces no se muestran los controles. Pero si hago lo que dice en la página que te indiqué entonces puedes ver los controles junto con las propiedades publicadas.

// Saludos

Sirkius
07-06-2004, 22:17:19
Ok, lo siento por no haber leido eso (intendo huir de los textos en ingles :p). La verdad es que prefiero imaginarme donde irán que montarme toda esa historia de heredar dos veces.

Muchas gracias!!

roman
07-06-2004, 22:25:32
La verdad es que prefiero imaginarme donde irán que montarme toda esa historia de heredar dos veces.


Pues sí, suena a mucho. Otra forma de hacer esto, la forma "profesional" es usar un Wizard para crear el formulario. El Wizard aparece también en el repositorio. A mi parecer queda mucho mejor pero requiere más trabajo.

// Saludos