none
Problema de llamada entre Forms y Uso de Variable de un Form a otro

    Pregunta

  • Buenas a todos:

     

    La razón de mi post es la siguiente, estoy realizando un proyecto bastante ambicioso en Visual C++, y en realidad todo ha marchado a la perfección, hasta ayer en la tarde cuando se me presentó un problema que yo considero estúpido porque solo por eso no puedo continuar.

     

    ¿Cual es el error?

     

    Partamos por explicar desde el comienzo que es lo que tengo.

    El programa que estoy compilando consta de 3 archivos de cabecera .h, estos son:

    Archivos MessTeX

     

    Form41.h

    Form2.h

    Form3.h

     

     

    Donde Form41.h es el formulario inicial, y es en donde incluí como cabeceras a Form2.h y Form3.h

    Bueno, hasta ahi ningun problema, de hecho llamaba a los otros dos formularios sin complicaciones, hasta (como mencioné en un principio) ayer, en donde necesitaba ocupar una variable String que se encontraba en Form41.h

    y llamarla desde Form3.h y usarla en ese archivo.

    Para ello, incluí en la "cabecera" del archivo de cabecera Form3.h a Form41.h y ahi comenzaron los verdaderos problemas, por si no se entendió la idea, aquí un fragmento de código para mostrar como quedó el asunto:

     

    Form41.h - "Cabecera"

     

    #pragma once

    #include "Form3.h"

     

     

    Form41.h - Linea 598 a Linea 601

     

    protected: System::Void convertirToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e)

    {

    pyect::Form3^form = gcnew pyect::Form3;

    form->Show();

    }

     

     

    Form3.h - "Cabecera"

     

    #pragma once

    #include "Form41.h"

     

     
    (*) Se supone que hice esto para poder ocupar variables de Form41.h en Form3.h.
     

    Luego, al compilar, los siguientes errores aparecen:

     

    Resultados:

     

    error C2039: 'Form3' : no es un miembro de 'pyect'

    error C2065: 'Form3' : identificador no declarado

    error C2065: 'form' : identificador no declarado

    error C2039: 'Form3' : no es un miembro de 'pyect'

    error C2061: error de sintaxis : identificador 'Form3'

    el operando izquierdo de '->Show' debe señalar al tipo class/struct/union/generic

    el tipo es ''unknown-type''

     

     

    No sé que podría hacer en este caso.

    Aceptaría cualquier clase de ayuda, ya que es un proyecto con calificación, y la verdad es que aun no entiendo que puedo hacer.

     

    Muy agradecido de antemano, se despide.

     

    CamilongO

    sábado, 19 de julio de 2008 0:20

Todas las respuestas

  • Hola.

    Creo que ya paso mucho tiempo de tu pregunta...pero ojala sirva la respuesta y si ya encontraste la solución pues compartela en este lugar ( para los nuevo)

    No se puede hacer eso...xq es una doble herencia o herencia circulas...

    Form41 es el papá, osea el principal....luego Form3, Fomr2 y Fomr1 son los hijos ...ellos pueden heredar del papá...
    pero el papá no puede heredar de los hijos.

    Asi que lo que podrías hacer es tener un metodo principal y de ahi llamar a todos y hacer metodos de getValor y setValor para tener los valores de las variables
    lunes, 16 de marzo de 2009 5:24
  •  A mi me pasa lo mismo, desarroyo en vc++ 2008 express y tengo dos formularios un frm1 y un frm2 mdi y no consigo utilizar una funcion del frm1 a la que le paso un string, no sabia que el padre no pudiera heredar de los hijos. Como se podria hacer para pasar un string a una funcion del frm1 desde un frm2. Sinembargo en c sharp si se puede hacer sin problemas.

    Me he vuelto loco intentado de todo pero no consigo nada, podriais mostrar un ejemplo claro, por favor.

    viernes, 16 de julio de 2010 17:31
  • Soy novato en esto pero creo que si declaras las funciones o las variables de los forms como publicas entonces podes llamarla en cualquier momento desde cualquier lugar del proyecto... 

    sino lo que podes hacer es una superclase incluyendo todas las variables y funciones en común declarándola de tipo MustInherit para podes heredarla desde las subclases...

    es poco pero espero que te sirva... saludos



    • Editado Robertino91 viernes, 23 de junio de 2017 13:24
    viernes, 23 de junio de 2017 13:19