Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-05-2011
mizzard mizzard is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 100
Poder: 14
mizzard Va por buen camino
minimizar formulario

Hola, tengo un formulario de bienvenida que pide una contraseña, en cuanto se introduce correctamente, hago lo siguiente:

Código:
TfrmMain *frmMain;
        frmMain = new TfrmMain(this);
        frmPassword->Visible=false;
        frmMain->Timer1->Enabled=true;
        frmMain->ShowModal();
En el evento OnClose introduzco este código para cerar ambos formularios ya que lo que hago con el de la contraseña es ocultarlo:

Código:
    this->Close();
    frmPassword->Close();

El problema que tengo es que cuando estoy en el segundo formulario (con el de la contraseña visible =false), y le doy a minimizar en lugar de aparecerme en la barra de inicio, se va a abajo a la izquierda y desaparece, por lo q me toca dar ALT+TAB para volver a restaurarlo...

Como propiedades he puesto:

Botones de cerrar y minimizar
el estilo del borde single
style form normal
posicion desktop center
y windows state Normal

Alguna idea de pq puede ser??, puede que haga mal lo de ocultar el form de password y deberia hacerlo de otra forma mejor??

Muchas gracias y espero q mis threads sirvan a mas gente!!!

Un saludo!
Responder Con Cita
  #2  
Antiguo 12-05-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
El problema es la llamada al form que loguea.
Tienes el form principal y el loguin.
En el evento Oncreate del form principal llama al form loguin, si estan correctos los datos el loguin se cierra, NO SE OCULTA.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #3  
Antiguo 12-05-2011
mizzard mizzard is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 100
Poder: 14
mizzard Va por buen camino
Hola, gracias por la respuesta.

Lo que hice en su momento es como el formulario del login es el primero en mostrar, lo tengo como principal y el otro como secundario.... supongo que esto viene indicado aqui:

Código:
WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
{
    try
    {
        Application->Initialize();
        Application->MainFormOnTaskBar = true;
        Application->CreateForm(__classid(TfrmPassword), &frmPassword);
        Application->CreateForm(__classid(TfrmMain), &frmMain);
        Application->Run();
Me dices que deberia cambiar el orden y el el evento del Main, antes de nada mostrar el frmPassword y si todo OK, entonces cerrarlo y visualizar el frmMain?

Un saludo y gracias!
Responder Con Cita
  #4  
Antiguo 12-05-2011
_cero_ _cero_ is offline
Miembro
 
Registrado: abr 2007
Posts: 147
Poder: 17
_cero_ Va por buen camino
Thumbs up

Hola. ps si el problema es que la aplicación toma como formulario padre al primer form que se crea teniendo como padre a “Application”, entonces lo que puedes hacer es crear tu form password sin padre y desde el crear el principal si es que dan la contraseña correcta.

Algo así
Código:
WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
{
    try
    {
        Application->Initialize();
        Application->MainFormOnTaskBar = true;

        TForm2* f2=new TForm2(NULL); // Creas un form sin padre y desde el creas el principal con Application->CreateForm
        f2->ShowModal();             //
        delete f2;                   // Si no creas un form principal la aplicación se cerrara cuando cierres form2

        Application->Run();
    }
...
Pd. Te adjunto un ejemplo para que veas como.
http://www.megaupload.com/?d=D5S58JTH
Responder Con Cita
  #5  
Antiguo 12-05-2011
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.195
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Yo propongo algo parecido a la propuesta de _cero_ con otro enfoque:

Código:
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
   try
   {
       Application->Initialize();

       TLogin *Log = new TLogin(0);
       if(Log->ShowModal() == mrOk)
          Application->CreateForm(__classid(TForm1), &Form1);
       delete Log;
       Application->Run();
   }
//.................................................................
Si la salida del Log->ShowModal el mrOk el programa continua, si no, se termina. TLogin se encargará de gestionar si el usuario se autentificó de forma correcta y en ese caso devolverá mrOK.
Código:
void __fastcall TLogin::Button1Click(TObject *Sender)
{
   if(Edit1->Text == "1234")
     ModalResult = mrOk;
   else
     ModalResult = mrCancel;
}
Subo un ejemplo.

Saludos.
Responder Con Cita
  #6  
Antiguo 12-05-2011
mizzard mizzard is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 100
Poder: 14
mizzard Va por buen camino
Muchas gracias a ambos por la respuesta, en tener un poco de tiempo lo pruebo, pero vamos, con el ejemplo adjunto no creo que tenga problemas .

Un saludo!

Última edición por mizzard fecha: 12-05-2011 a las 12:45:40.
Responder Con Cita
  #7  
Antiguo 24-03-2018
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Cita:
Empezado por escafandra Ver Mensaje
Yo propongo algo parecido a la propuesta de _cero_ con otro enfoque:

Código:
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
   try
   {
       Application->Initialize();

       TLogin *Log = new TLogin(0);
       if(Log->ShowModal() == mrOk)
          Application->CreateForm(__classid(TForm1), &Form1);
       delete Log;
       Application->Run();
   }
//.................................................................
Si la salida del Log->ShowModal el mrOk el programa continua, si no, se termina. TLogin se encargará de gestionar si el usuario se autentificó de forma correcta y en ese caso devolverá mrOK.
Código:
void __fastcall TLogin::Button1Click(TObject *Sender)
{
   if(Edit1->Text == "1234")
     ModalResult = mrOk;
   else
     ModalResult = mrCancel;
}
Subo un ejemplo.

Saludos.
Me gusta este planteamiento que haces para un formulario de login. ¿Puedes pasarme el ejemplo que añadiste en este hilo? El enlace de descarga no me funciona.
Responder Con Cita
  #8  
Antiguo 24-03-2018
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.195
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Cita:
Empezado por Angel.Matilla Ver Mensaje
Me gusta este planteamiento que haces para un formulario de login. ¿Puedes pasarme el ejemplo que añadiste en este hilo? El enlace de descarga no me funciona.
Aquí está: Login.rar

Saludos.
Responder Con Cita
  #9  
Antiguo 26-03-2018
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Muchas gracias
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Click en minimizar ventana y minimizar aplicacion dmassive Varios 5 16-02-2009 18:01:16
Detectar boton Minimizar Formulario Gabriel Varios 2 10-03-2008 18:59:19
Cambiar propiedad de componente del formulario padre al cerrar el formulario hijo jzginez OOP 5 22-06-2007 22:40:51
pasar datos de un formulario vista a cualquier formulario @-Soft OOP 2 28-09-2004 22:56:01
Minimizar superhopi OOP 2 18-06-2003 06:10:42


La franja horaria es GMT +2. Ahora son las 07:11:42.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi