Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-02-2007
Avatar de BlackDaemon
BlackDaemon BlackDaemon is offline
Miembro
 
Registrado: dic 2006
Ubicación: Bolivia - Santa Cruz
Posts: 206
Poder: 20
BlackDaemon Va por buen camino
Hola... gracias por tu respuesta tan rápida, pero!! tu aplicación era MDI ??
por que no me dijiste que cual era el form que se creaba primero.. tampoco cual era el form madre o padre creo xDD bueno.. ya havía pensado en poner el formPrincipal en INVISIBLE pero quisiera que me muestres el código para poder darme una mejor idea ya que no puedo avanzar con la aplicación por que no esta lista esta parte..

Bueno espero me respondas.. y me aclares la duda..

saludos y gracias

PD me gustaría mucho que me envies el código a koko [at] yashira.org o lowlifebob [at] gmail.com
por que creo que aquí no se puede adjuntar mucho

saludos


PD el form de splashScreem que dices era ventana padre ?? hija ?? el sistema de login lo mismo ??
no logro entendér eso.. por que creo que no sep uede crear una ventana hija si el PRIMER form en crearse es normal..
mejor mándame el ejemplo xD

Última edición por BlackDaemon fecha: 27-02-2007 a las 02:01:41.
Responder Con Cita
  #2  
Antiguo 27-02-2007
[pepon386] pepon386 is offline
Miembro Premium
 
Registrado: ene 2005
Ubicación: Valencia
Posts: 68
Poder: 22
pepon386 Va por buen camino
Te adjunto un pequeño ejemplo de código fuente del proyecto:

Código Delphi [-]
  Application.Initialize;
  FSplashForm := TFSplashForm.Create(Application);
  FSplashForm.Show;
  // DMMain --> TDataModule que contiene la conexión a la base de datos
  Application.CreateForm(TDMMain, DMMain);
  // DMMain.Login --> Función que muestra una ventana para validar usuario
  // y contraseña
  if DMMain.Login then
  begin
    Application.CreateForm(TFMain, FMain);
  end;
  FSplashForm.Hide;
  FSplashForm.Free;
  Application.Run;
Responder Con Cita
  #3  
Antiguo 27-02-2007
Avatar de BlackDaemon
BlackDaemon BlackDaemon is offline
Miembro
 
Registrado: dic 2006
Ubicación: Bolivia - Santa Cruz
Posts: 206
Poder: 20
BlackDaemon Va por buen camino
pepon386 lo siento pero no entendí nada tu ejemplo...
por que no dices que forms es el padre o cual los hijos.. además ahí por lo que veo no creas el form principal que contendrá a todos los hijos.. bueno soy nuevo en esto y tal véz por eso no entendí, de todas formas gracias

saludos y a ver si me ayudan que la verdad intento de todos modos pero nada... no puedo :S
Responder Con Cita
  #4  
Antiguo 27-02-2007
Alexis De la Cr Alexis De la Cr is offline
Miembro
 
Registrado: may 2006
Ubicación: Puebla
Posts: 124
Poder: 21
Alexis De la Cr Va por buen camino
Yo tengo una Aplicacion MDI con Login y me funciona Pefectamente.. Mis conocimientos son muy basicos pero bueno intentare aportarte algo...

tengo un form principal MDI madre y un monton de MDI Hijas... ahora bien... el form del login no es MDI, es del tipo normal, y lo muestro a traves del evento onshow del form principal.. No se si sea exactamente lo que andas buscando, pero creo que debe seguir el mismo procedimiento.

Saludos
Responder Con Cita
  #5  
Antiguo 27-02-2007
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 24
ixMike Va por buen camino
Perdón si te causé confusión. El frmMain (FormPrincipal) es el MDI que contiene a las hijas, y no tiene nada que ver con el FLogin.


Aquí está el código. Es del archivo "frmMain.pas", que es donde se crea la SplashScreen (no en el DPR, como te había dicho; eso lo hago en otro programa), la ventana Login y se inicia el programa.

Código Delphi [-]
unit frmMain;
...
var
  FFondo: TFFondo;
  Usuario: String;
 
implementation
...
procedure TfrmMain.FormCreate(Sender: TObject);
begin
Usuario:='';
FSplash:=TFSplash.Create(Self);
FSplash.Show;
//EAccion es un TLabel que indica qué está haciendo el programa
//Barra es un TGauge que indica el porcentaje de la carga
FSplash.EAccion.Caption:='Inicializando...';
...
FSplash.Barra.Progress:=FSplash.barra.Progress+1;
FSplash.Repaint;
...
FSplash.EAccion.Caption:='Autorizando...';
FSplash.Barra.Progress:=FSplash.barra.Progress+1;
FSplash.Repaint;
FLogin:=TFLogin.Create(Self);
//Al pulsar el boton Aceptar hace las comprobaciones, y si usuario y contraseña
//son correctos asigna a ModalResult mrOk, sino sale un mensaje. Hay otro botón, que
//sirve para salir del programa
If FLogin.ShowModal=mrOk then
  begin
  Usuario:=FLogin.CUsuario.Text;
  ...
  end;
FLogin.Free;
FSplash.EAccion.Caption:='Leyendo datos...';
FSplash.Barra.Progress:=FSplash.Barra.Progress+1;
FSplash.Repaint;
...
FSplash.Free;
...
end;
...
Y una vez iniciado el programa, para cambiar de usuario:
Código Delphi [-]
Procedure TfrmMain.mCambiarUsuario(Sender: TObject);
begin
... //Guardar todos los datos
Visible:=False;
FLogin:=TFLogin.Create(Self);
FLogin.CUsuario.Text:=Usuario; //Un toque de elegancia, recuerda el último usuario
Usuario:=''; //Por si las moscas
FLogin.ShowModal;
If FLogin.ModalResult:=mrOk
  begin
  Usuario:=FLogin.CUsuario.Text;
  ...
  end;
end;


Espero que te sea de ayuda.

Salu2


P.D:
Cita:
Empezado por BlackDaemon
PD me gustaría mucho que me envies el código
Aquí preferimos poner el código para que todo el mundo lo vea. Además sería una tontería enviarte todo el código de mi programa, con el ejemplo que aquí te he puesto hay suficiente (pues en el proceso de carga hace muchísimas cosas).

Última edición por ixMike fecha: 27-02-2007 a las 20:27:32.
Responder Con Cita
  #6  
Antiguo 27-02-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
Estaís hablando de MDI pero no soys muy específicos. Aclaremos las cosas, hablemos de la propiedad FormStyle de cada uno.


Hay que comentar un efecto que hace usar una filosofía u otra:

1- Quiero mostrar la ventana de login, y si no valida al usuario, que se salga del programa, si lo valida correctamente, después y solo después, se abra la forma principal:

Forma de hacerlo: (la forma de pepon386) Project -> View Source y modificarlo según gustes, el orden de creación y visualización será este:
El SplashScreen con barra de progreso, fsNormal
La ventana de login fsNormal
La ventana principal fsMDIFORM
Las ventanas hijas fsMdiChild

2- Quiero que primero se abra la ventana mdiform (la principal y madre) y después... dentro de esa ventana, que se muestre la de login.
Esto implica cambiar el orden de creación de las ventanas y su estilo:

La forma de hacerlo de ixMike:

El SplashScreen con barra de progreso, fsNormal
La ventana principal fsMDIFORM
La ventana de login fsMdiChild
Las ventanas hijas fsMdiChild

Personalmente me gusta más la forma 1, porque si el usuario no se valida, directamente cierras la aplicación y no se demora en crear más ventanas.

Normalmente las SplashScreen se muestran mientras se está creando las demás ventanas, ponerle un Timer para ver bonita una imagen y hacer esperar al usuario no me gusta nada (opinión personal, queda claro ¿no?), sobre todo si se trata de un programa serio (facturación, stock, etc...) Si es un Freeware... pues vale, que se fastidie viendo la imagen 3 segundos .

La ventana principal suele tener mucho código asociado, dependiendo del usuario que se conecte mostrar u ocultar menús, preparar la conexión con la base de datos, etc. Lo que quiero decir es que quizás sea la ventana que más tiempo tarde en crearse, por tanto, sería lógico mostrar el SplashScreen antes de empezar a crear dicha ventana y no hacerlo al revés.

De todas formas y como ya he dicho es mi opinión, y por supuesto el foro está para eso, aportemos todos nuestras ideas y que después cada uno use la que le guste más, que no quiere decir que sea peor o mejor, es simplemente su estilo propio .

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #7  
Antiguo 27-02-2007
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 24
ixMike Va por buen camino
Cita:
Empezado por Lepe
La forma de hacerlo de ixMike:

El SplashScreen con barra de progreso, fsNormal
La ventana principal fsMDIFORM
La ventana de login fsMdiChild
Las ventanas hijas fsMdiChild
Saludos
Lo siento, Lepe, te has equivocado, mi forma es:
El SplashScreen con barra de progreso, fsNormal
La ventana principal fsMDIFORM
La ventana de login fsNormal
Las ventanas hijas fsMdiChild

Porque si no la ventana login no podría ser llamada de forma Modal (que yo sepa)

Cita:
Empezado por Lepe
La ventana principal suele tener mucho código asociado, dependiendo del usuario que se conecte mostrar u ocultar menús, preparar la conexión con la base de datos, etc. Lo que quiero decir es que quizás sea la ventana que más tiempo tarde en crearse, por tanto, sería lógico mostrar el SplashScreen antes de empezar a crear dicha ventana y no hacerlo al revés.
Tampoco es cierto. Si lo primero que hace la ventana principal es crear la Splash (como es el caso de mi ejemplo) primero se muestra la Splash y después se ejecuta todo el código asociado (comprobaciones, cargar bases de datos y archivos...) mientras el proceso se muestra en la Splash


En lo que sí tenías razón era en que no hemos sido muy específicos.

En mi ejemplo, las ventanas hijas se crean tras hacer un Login correcto (la demora es mínima). Y si se quiere cambiar de usuario, antes de mostrar otra vez el Login se cierran todas las ventanas hijas.
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
problema con el icono de la aplicacion Choclito Varios 3 29-07-2006 20:22:09
Problema con Aplicacion MDI Thales OOP 7 19-08-2005 15:31:07
Problema con mi aplicación JerS Varios 2 18-07-2005 16:33:51
Aplicacion Antes Del Login De Windows omardelahoz Varios 2 22-06-2004 16:29:48
Problema con aplicacion MDI wallesis OOP 5 03-01-2004 11:17:28


La franja horaria es GMT +2. Ahora son las 12:14:04.


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