none
Herencia en formularios Visual C++ RRS feed

  • Pregunta

  • Hola a todos,
    Resulta que tengo una aplicacion con varios formularios. El objetivo de la aplicacion es comunicarme a traves del puerto serie a traves de un protocolo con una serie de comandos con el controlador de una placa.
    Como lo tengo implementado, defino un control serialPort en cada formulario, y todo funciona correctamente.
    Pero lo que quiero, es definir un serialPort unicamente en el formulario principal, y que en el resto de formularios usara este serialPort. Me gustaria esto, por que quiero incluir la funcionalidad de poder configurar los parametros del puerto serie, y que esta configuracion fuese efectiva en todos los formularios.
    Lo logico, y lo que yo habia pensado, es hacer publico el componente serialPort del formulario principal, y mediante los #include poder usar este componente en el resto de formularios, pero da errores en la compilacion, tipicos de que no reconocen el componente en el resto de formularios distintos al principal.

    Espero haber sido claro en la especificacion del problema.

    Gracias a todos
    SAludos


    miércoles, 9 de diciembre de 2009 11:39

Respuestas

  • Declara también el componente como estático, pero lo tendrás que crear a mano. Copia el texto que se corresponda al puerto serie dentro de InitializeComponent.

    Luego desde la parte visual borra el componente serie.

    Luego crea una variable del componente de puerto serie estática y crea un constructor estático para la ficha, y pon dentro el código que has copiado de InitializeComponent.

    Luego en los demás forms referencia el puerto serie con el nombre de la clase en donde lo has declarado:

    MiFichaPrincipla::PuertoSere->Write(...)

    Haz eso, o pasa una referencia a la ficha principal a cada ficha hija...

    Visita mi blog sobre desarrollo: http://geeks.ms/blogs/rfog/
    sábado, 12 de diciembre de 2009 11:21
    Moderador

Todas las respuestas

  • Declara también el componente como estático, pero lo tendrás que crear a mano. Copia el texto que se corresponda al puerto serie dentro de InitializeComponent.

    Luego desde la parte visual borra el componente serie.

    Luego crea una variable del componente de puerto serie estática y crea un constructor estático para la ficha, y pon dentro el código que has copiado de InitializeComponent.

    Luego en los demás forms referencia el puerto serie con el nombre de la clase en donde lo has declarado:

    MiFichaPrincipla::PuertoSere->Write(...)

    Haz eso, o pasa una referencia a la ficha principal a cada ficha hija...

    Visita mi blog sobre desarrollo: http://geeks.ms/blogs/rfog/
    sábado, 12 de diciembre de 2009 11:21
    Moderador
  • Gracias RFOG, despues de darle muchas vueltas, habia llegado tambien a la conclusión de que la solución era declarar el puerto como estático.

    martes, 15 de diciembre de 2009 14:18
  • Para probar todo esto de la herencia, me creado dos formularios, y simplemente quiero representar una cadena en una caja de texto de otro formulario. Para ello declaro el textBox del formulario secundario como publico y estatico, y lo llamo desde el formulario principal mediante FormularioSecundario::texBox1->Text = ......

    No me da problemas de compilacion, pero me salta una excepcion al ejecutarlo:

    An unhandled exception of type 'System.TypeInitializationException' occurred in InterfazProma.exe
    Additional information: Se produjo una excepción en el inicializador de tipo de 'InterfazProma.MonitorPuertoSerie'.

    Tengo que decir que InterfazProma.MonitorPuertoSerie es el formulario secundario

    Gracias
    Saludos

    martes, 15 de diciembre de 2009 17:23
  • Se ve que tienes algún problema con el constructor estático de la clase en donde está el puerto serie. El error te está diciendo que no puede construir bien el puerto serie... o eso creo.
    Visita mi blog sobre desarrollo: http://geeks.ms/blogs/rfog/
    sábado, 19 de diciembre de 2009 12:34
    Moderador