Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-08-2011
mantraxer21 mantraxer21 is offline
Miembro
 
Registrado: ago 2010
Posts: 94
Poder: 14
mantraxer21 Va por buen camino
Formlulario Login/Pass y Form Principal

Estimados:

Tengo una muy pequeña aplicación, para poder hacer funcionar Login y Clave y luego de ello que se vaya al Formulario Principal.

Realidad:

FormLogin (fsNormal)
FormPrincipal (fsMDIForm)

Código del Boton Ingresar del Formulario LOGIN

Código Delphi [-]
procedure TForm1.IngresarClick(Sender: TObject);
var form : TMainForm;
begin

qLogin.close;
qlogin.ParamByName('txtlogin').AsString:=Login.Text;
qlogin.ParamByName('txtclave').AsString:=Clave.Text;
//Validaciones.Validate;

qlogin.Open;
if qlogin.Eof then begin
  MessageDlg('Usuario incorrecto, vuelva a intentarlo.',mtError,[mbOk],0);
    exit;
end;
FormPrincipal.Tag:=1;
  self.Hide;
       FormPrincipal.StatusBar1.Panels[1].text:=qLoginNOMBRE_COMPLETO.text;
       Application.MessageBox( 'Bienvenido al Sistema',
  MB_ICONINFORMATION );
    Application.CreateForm(TFormPrincipal, FormPrincipal);
    FormPrincipal.Tag:=0;
    Principal.FormPrincipal.show;

En la última línea invoca al formulario Principal, el tema está todo bien, pero en el Formulario Principal, en un botón que llama a un "Formulario Hijo", da un error diciendo que no está activo.

Alguien puede ayudar con esto ???

Saludos Cordiales
Responder Con Cita
  #2  
Antiguo 14-08-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola mantraxer21.

Correcto. Pero ayudaría más si pusieras la llamada al form hijo y el código mediante el cuál lo mostras.

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 14-08-2011
mantraxer21 mantraxer21 is offline
Miembro
 
Registrado: ago 2010
Posts: 94
Poder: 14
mantraxer21 Va por buen camino
Hola, gracias por responder....

Por ejemplo un boton está programado asi.

Código Delphi [-]
procedure TFormPrincipal.GraficoClick(Sender: TObject);
Var FormGrafico :TFormGraficoAgenda;
begin

  FormGrafico :=TFormGraficoAgenda.Create(Self);
  FormGrafico.Show;

Responder Con Cita
  #4  
Antiguo 14-08-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola mantraxer21.

Lo siento, he intentado entender la lógica de la apertura de los forms basándome en tu código y no lo logro. No puedo enteder el papel que juegan Form1, MainForm y Principal.

Es decir, TFormPrincipal es el MDIForm y TFormGraficoAgenda es el MDIChild. ¿ Pero que son Form1, MainForm y Principal ?


Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 15-08-2011
mantraxer21 mantraxer21 is offline
Miembro
 
Registrado: ago 2010
Posts: 94
Poder: 14
mantraxer21 Va por buen camino
Hola Gracias

El Form1 = Formulario de Login
El MainForm y FormPrincipal = FormPrincipal

La equivocación era por el cambio de código...

Form1 = Login
FormPrincipal = Formulario Principal de Opciones del Sistema
FormGraficoAgenda = Formulario que permite graficar las tenciones agendadas.

Esos participan...
Responder Con Cita
  #6  
Antiguo 15-08-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola mantraxer21.

Entonces si no entiendo mál tenes:
  • Form1 : fsNormal
  • FormPrincipal: fsMDIForm
  • FormGraficoAgenda: fsMDIChild

Lo que hay que tener en claro que en una aplicación MDI, la ventana principal siempre debe ser un MDIForm.
Y si la primera ventana que se crea en tu aplicación es Form1 (es decir que es la ventana principal), no va a funcionar.

Una solución es abrir tu proyecto y organizarlo así:
Código Delphi [-]
begin
  Application.Initialize;
  Application.CreateForm(TFormPrincipal, FormPrincipal); // Crear MDIForm
  Application.FormPrincipal:= False;                     // Ocultar MDIForm
  Application.CreateForm(TForm1, Form1);                 // Crear login
  Form1.ShowModal;                                       // Mostrar login
  Application.ShowMainForm:= True;                       // Mostrar MDIForm 
  Application.Run;
end;

En este enlace vas a encontrar información útil sobre la creación de aplicaciones MDI.

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #7  
Antiguo 15-08-2011
mantraxer21 mantraxer21 is offline
Miembro
 
Registrado: ago 2010
Posts: 94
Poder: 14
mantraxer21 Va por buen camino
Gracias...

Revisé el orden que me enviaste, pero la línea de ocultar el FormPrincipal no me permite crearlo...

Dice.

Código Delphi [-]
'TApplication' does not contain a member named 'FormPrincipal'

La estructura es así en mi aplicación !

Código Delphi [-]
program APlicacionMDI;

uses
  Forms,
  Login in 'Login.pas' {FormLogin},
  AccesoDatos in 'AccesoDatos.pas' {dm: TDataModule},
  Pacientes in 'Pacientes.pas' {FormPacientes},
  Principal in 'Principal.pas' {FormPrincipal},
  Agenda in 'Agenda.pas' {FormAgenda},
  visitamedica in 'visitamedica.pas' {FormVisitaMEdica},
  Creditos in 'Creditos.pas' {FormCreditos},
  Diagnosticos in 'Diagnosticos.pas' {FormDiagnostico},
  GraficoAgenda in 'GraficoAgenda.pas' {FormGraficoAgenda};

{$R *.res}

begin
  Application.Initialize;
 Application.MainFormOnTaskbar := True;
 Application.CreateForm(Tdm, dm);//DataModule1
 Application.CreateForm(Tdm2, dm2);//DataModule2
 Application.CreateForm(TFormPrincipal, FormPrincipal);
 Application.FormPrincipal:=false; // aca da error !!!!
 Application.CreateForm(TFormLogin, FormLogin);
 FormLogin.ShowModal;
 Application.ShowMainForm:=true;
Application.Run;
end.
Responder Con Cita
  #8  
Antiguo 15-08-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola mantraxer21.

Mis disculpas, fue una confusión al ir escribiendo el código. Cambiá la línea que te dá error por:
Código Delphi [-]
  Application.ShowMainForm:= False;
Fijate que en Auto-create forms, Form1 esté después de FormPrincipal.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 15-08-2011 a las 18:35:17.
Responder Con Cita
  #9  
Antiguo 16-08-2011
mantraxer21 mantraxer21 is offline
Miembro
 
Registrado: ago 2010
Posts: 94
Poder: 14
mantraxer21 Va por buen camino
Sorry, por no escribir antes, efectivamente habia cambiado esa linea de código por la que mensionas, el tema es que ahora en la apliación (FormPrincipal - FormStyle: fsMDIForm) invoco a un Form-Hijo llamado "FormGrafico" (fsMDIForm), pero sólo hace un pequeño pestañeo, creo que está trabajando en segundo plano, capaz de ser visto por mi o visualmente para cualquiera.

Código Delphi [-]

procedure TFormPrincipal.GraficoClick(Sender: TObject);
Var FormGrafico :TFormGraficoAgenda;
begin
 
FormGrafico := TFormGraficoAgenda.Create(Application);
FormGrafico.Show;
end;

El programa NO se cae, ni muestra errores en la consola de mensajes.

Sólo hace que trabaja con un pestañeo en el FormPrincipal, donde estoy llamando al FormHijo !


Gracias
Responder Con Cita
  #10  
Antiguo 26-08-2011
ReiCk_Z ReiCk_Z is offline
Registrado
 
Registrado: mar 2010
Posts: 6
Poder: 0
ReiCk_Z Va por buen camino
mantraxer21, en mí caso para evitar ese pestañeo de la form (que para mí es molesto) es lo siguiente:

Código Delphi [-]
begin     
 Application.Initialize;      
 Application.CreateForm(TFormPrincipal, FormPrincipal); // Crear MDIForm     
 Application.ShowMainForm:= False;                             // Ocultar MDIForm     
 Application.CreateForm(TForm1, Form1);                     // Crear login     
 Form1.ShowModal;                                                     // Mostrar login   
 //Application.ShowMainForm:= True;   (Omito esta línea)     
 Application.Run;   
end;

y pongo la form principal en su propiedad visible en false;

después de validar si la clave es correcta entonces cierro la form donde me pide la clave y visualizo la form principal asi:

Código Delphi [-]
FClave.close;
Application.ShowMainForm:= True;        // Mostrar MDIForm

En case de que apliques mi sugerencia, dime si te funciono.

Última edición por ReiCk_Z fecha: 26-08-2011 a las 20:16:59. Razón: Error en el codigo
Responder Con Cita
  #11  
Antiguo 29-08-2011
mantraxer21 mantraxer21 is offline
Miembro
 
Registrado: ago 2010
Posts: 94
Poder: 14
mantraxer21 Va por buen camino
Cerrado OK

Muchas gracias por tu respuesta, efectivamente funcionó a la perfección dichas instrucciones y ya no tengo problemas con el login y Pass.

Muchas gracias

Saludos Cordiales

Responder Con Cita
  #12  
Antiguo 12-10-2012
DSK25 DSK25 is offline
Miembro
NULL
 
Registrado: jun 2012
Posts: 46
Poder: 0
DSK25 Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Hola mantraxer21.

Entonces si no entiendo mál tenes:
  • Form1 : fsNormal
  • FormPrincipal: fsMDIForm
  • FormGraficoAgenda: fsMDIChild
Lo que hay que tener en claro que en una aplicación MDI, la ventana principal siempre debe ser un MDIForm.
Y si la primera ventana que se crea en tu aplicación es Form1 (es decir que es la ventana principal), no va a funcionar.

Una solución es abrir tu proyecto y organizarlo así:
Código Delphi [-]begin Application.Initialize; Application.CreateForm(TFormPrincipal, FormPrincipal); // Crear MDIForm Application.FormPrincipal:= False; // Ocultar MDIForm Application.CreateForm(TForm1, Form1); // Crear login Form1.ShowModal; // Mostrar login Application.ShowMainForm:= True; // Mostrar MDIForm Application.Run; end;


En este enlace vas a encontrar información útil sobre la creación de aplicaciones MDI.

Un saludo.
Se que llego un año tarde, pero ese código donde iría si uso C++ Builder?
Responder Con Cita
  #13  
Antiguo 12-10-2012
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Es este hilo puedes encontrar lo que buscas.

Saludos.
Responder Con Cita
  #14  
Antiguo 14-10-2012
DSK25 DSK25 is offline
Miembro
NULL
 
Registrado: jun 2012
Posts: 46
Poder: 0
DSK25 Va por buen camino
He visto el tema y he probado lo que esta ahi, pero al compilar me manda el error "Access violation at adress...", y luego aparace el Login y el formulario principal, como hago para que aparezca solo el login al inicio.

Código:
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
   Application->Initialize();
   Application->CreateForm(TfrmPrincipal, frmPrincipal); 
   Application->ShowMainForm = false;                      
   Application->CreateForm(TfrmLogin, frmLogin);          
   frmLogin->ShowModal();                                   
   Application->ShowMainForm = true;                   
   Application->Run();
}
Responder Con Cita
  #15  
Antiguo 14-10-2012
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Si miraste la propuesta de abajo, verás que no se puede ejecutar el formularo principal hasta no identificarse correctamente:

Cita:
Empezado por escafandra Ver Mensaje
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;
}

Saludos.
Responder Con Cita
Respuesta



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
Llenar Un Login y Pass andresenlared Varios 3 30-11-2006 14:41:22
Otro de Login y Pass FGarcia Varios 2 27-08-2006 03:22:17
Ayuda para crear un formulario de login y pass Striker Varios 8 02-08-2006 18:12:35
Ayuda En Login Y Pass Para Ingresar En un programa creado en Delphi Solojuegospc.tk Conexión con bases de datos 8 07-07-2005 03:18:28
login y pass en base de datos Gorehide Conexión con bases de datos 5 09-07-2004 12:41:06


La franja horaria es GMT +2. Ahora son las 20:18:15.


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