Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Problema de llamar un Form en Oncreate del Main

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Problema de llamar un Form en Oncreate del Main Responder citando

Buen día a todos,

quiero saber como mando llamar, digamos, el Form3, cuando se está creado en MainForm (Form1), pongo en el evento Oncreate: Form3->Show() o Form3->ShowModal(), pero me manda un error.

Lo que quiero hacer es: Tenog el MainForm pero a última hora se quiere meter un Password antes de entrar a la forma principal.
Que puedo hacer???? Y a ver si me pueden poner un ejemplo, por favor.

De antemano Gracias.
_________________
Sin pena, ni gloria
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Re: Problema de llamar un Form en Oncreate del Main Responder citando

podrias hacer algo asi. En el cpp del proyecto.

si tienes cuatro formas, y la forma 4 es la que va a pedir la contraseña entonces tienes que crearla antes que todas las otras,

...
Application->Initialize();

Form4 = new TForm4(Application);
Application->ProcessMessages();
Form4->Show();
Application->ProcessMessages();

Application->CreateForm(__classid(TForm1), &Form1);
Application->CreateForm(__classid(TForm2), &Form2);
Application->CreateForm(__classid(TForm3), &Form3);
Application->Run();
...

de esta manera se verá el form indicado para pedir la clave

Espero que te sirva de algo
_________________
"Cállate, o di algo mejor que el silencio"
Volver arriba
Ver perfil de usuario Enviar mensaje privado MSN Messenger
Mensaje    Asunto: Responder citando

Hola, voy a hacer alguna aclaración al texto de -Spencer-:

En primer lugar, para que se reconozca el Form4 en el cpp del proyecto tendrás que indicárselo con #include "Unit4.h".

Luego no te recomiendo usar el método Form4->Show() si no el ShowModal(). Así te aseguras que se "utiliza" antes de seguir adelante con tu programa.

Por último, y suponiendo que tu formulario principal sea Form1, en su cpp deberías incluir la cabecera del Form4 (#include "Unit4.h") para poder quitarte de encima el Form4 una vez lo hayas usado (es de esperar que ya no lo necesites por lo que ¿para qué quieres seguir teniéndolo en memoria?). Un buen momento sería el de la presentación del formulario principal:
Código:
void __fastcall TForm1::FormShow(TObject *Sender)
   {
   if (Form4)            //Si está activada el Form4 lo "cierra"
      {
      ... //Antes de cerrarlo quizá quieras "leer" los datos del usuario
      delete Form4;
      Form4 = NULL;
      }
   }

Si lo único que quieres es mostrar un formulario desde otro sólo necesitas incluir su cabecera (releyendo tu pregunta sería escribir #include "Unit3.h" en Unit1.cpp). El rollo que te hemos metido entre -Spencer- y yo es útil cuando quieres ahorrar memoria en la ejecución de tu programa (práctica bastante saludable, por cierto).

Suerte.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Intenta en el evento, OnActivate del Form, lo siguiente

Código:

    TFAcceso *AC = new TFAcceso(this);
    switch(AC->ShowModal()){
        case mrOk:
            this->SetFocus();
            break;
        case mrCancel:
            Application->Terminate();
            break;
    };
    delete AC;

Donde AC, es el Formulario en forma Modal, y dependiendo de el resultado, verificas, en este caso si se cierra termino la apliacion..
saludos..
bye
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

Buen dia,

gracias atodos por la ayuda, pero, CEsar... puse el código exactamente como lo pusiste pero me marca el sig. error:

Undefined symbol 'TFAcceso'
Improper use of TForm3
Type name expected

Aunque para el segundo error ya lo puse como Form, y no como TForm.

Podrías ayudarme ???'.[/url]
_________________
Sin pena, ni gloria
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Si mira, el FAcceso, es el Nombre del Form que quieres abrir, es decir si tu form de acceso se llama, Acceder, pues el dato quedaria asi..


Código:

   FAcceder *AC = new TFAcceder(this);
    switch(AC->ShowModal()){
        case mrOk:
            this->SetFocus();
            break;
        case mrCancel:
            Application->Terminate();
            break;
    };
    delete AC;


espero que ahora si te sirva..
si dime donde esta el fallo y lo corregimos rapido..
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

ok, Cesar eso, ya me quedó bien,ahora, dos cosas:

- Al momento de correrlo, primero aparace, el Formulario1 (que es el Main original) y despues el formulario para acceso, como hago que solo me salga el formulario de acceso, sin que se vea el formulario1.

- En el formulario3 (para acceder), escriben su password y dan enter, lo que hago es:

Mando la información del usuario al formulario1 y despues cierro la forma3 (acceder), pero me manda un error de Violación; me puedes decir como lo tengo que cerrar, o si no lo tengo que cerrar, !!! o que diablos tengo que hacer ¡¡¡

Gracias de Antemano.
_________________
Sin pena, ni gloria
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Lo que pides está más en la línea de lo que te sugirió -Spencer- que de lo de César, pero al fin y al cabo deberías usar una mezcla de ambas ideas.

Primero deberías crear el formulario de Acceso en el cpp del proyecto, y ejecutar también allí su ShowModal().

Luego cambias la variable del switch que te propone César (AC->ShowModal()) por (AC->ModalResult).

En el caso de haber cancelado la entrada (mrCancel) el código de César es el apropiado.

Si se ha aceptado la entrada (se ha escrito un usuario y su contraseña) entrarás en mrOk, momento en el que debes comprobar que los datos son correctos. Si no es así puedes terminar la aplicación o volver a mostrar el formulario de acceso (cosa tuya). Si los datos de acceso son correctos ya puedes mostrar el formulario1.

Respecto al error que te da, sería mejor que postees el código. Realmente el formulario3 no lo cierras tú, lo ha cerrado el usuario de tu programa, tú sólo lo borras (delete) después de lo cual no debes intentar usarlo, pues no existe.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Tienes razón Enrique, ya lo i mplementé y quedó poca m%&$#, ahora; en dado caso que metan mal su pass.

Que instruccion le doy para que termine la aplicaion, si que entre al Form1 (mainForm Principal), Por que le dor

Application->Terminate();

pero como tengo el form2 para que se vaya mostrando poco apoco; se muestra y después termina.

Gracias de Antemano.
_________________
Sin pena, ni gloria
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Supongo que lo mejor sería hacerlo en el WinMain(), que es donde tienes el CreateForm del resto de formularios.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.