Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
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 14-02-2004
soyhugo soyhugo is offline
Miembro
 
Registrado: ene 2004
Posts: 66
Poder: 23
soyhugo Va por buen camino
y por que lo tienes en el evento activate?

porq eu lo tienes en el evento activate? y no en el create por ejemplo?

imagino que el formulario de la clave, lo tienes sin ningún boton en la esquina de los de sistema, y con un boton de salir, que cerraría el formulario principal y el de la clave, no?
Responder Con Cita
  #2  
Antiguo 14-02-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
soyhugo (yo no, él )

Tu descripción dl problema es algo enredada. No tengo en claro de cuántos formularios estamos hablando; ¿de dos? el de acceso y el principal; ¿o de tres? El de acceso, el principal y uno aparte que se crea después del acceso?

De cualquier forma aquí te van unas ideas que quizá te sirvan.

En primer lugar mencionas que no quieres cerrar el formulario de acceso porque tienes controles que debes usar en todo momento. Aquí hay un error de diseño; por lo general un formulario de acceso tiene una única función en la vida: verificar que el nombre de usuario y contraseña sean correctos. Todo lo demás sale sobrando. Si necesitas controles, posiblemente de bases de datos u otros que necesites durante toda la ejecución entonces colócalos en otro lado, por ejemplo en un data module y deja en el de acceso exclusivamente lo necesario para la verificación.

A grandes rasgos hay dos metodologías para los formularios de acceso y cuál de ellas usar depende en mucho de gustos.

Una es la de presentar el formulario principal y sobre él el de acceso. Si el acceso es incorrecto se cierra todo.

La otra es presentar el formulario de acceso solito al mero comienzo de la aplicación. Si el acceso es correcto se muestra el principal; de lo contrario se termina la ejecución.

Yo opto por la segunda opción (¡vaya redundancia!) porque sigo la siguiente (¡otra vez!) filosofía:

si los datos son incorrectos, ¿para qué me molesto en crear todos los demas formularios y controles?.

Para iniciar con el formulario de acceso es necesario alterar la forma usual en que Delphi maneja la creación de formularios ya que si pones el de acceso como principal, en cuanto lo cierres se cierra también la aplicación.

Vamos a suponer que TVentanaAcceso es la clase del formulario de acceso y que TVentanaPrincipal el del principal. Modifica el archivo .dpr de tu proyecto de manera que se vea similar a esto:

Código:
var
  DatosOk: Boolean;

begin
  { Presentas la ventana de acceso }
  VentanaAcceso := TVentanaAcceso.Create(nil);
  DatosOk := VentanaAcceso.ShowModal = ID_OK;
  VentanaAcceso.Free;

  { Si son correctos procedes como siempre }
  if DatosOk then
  begin
    Application.Initialize;
    
    // Opcional 
    Application.CreateForm(TModulaDatos, ModuloDatos);

    // Formulario primcipal 
    Application.CreateForm(TVentanaPrincipal, VentanaPrincipal);

    {
       Otros formularios aquí
    }

    Application.Run;
  end;
end.
Como verás, si los datos no son correctos el flujo de la aplicación te lleva directo el end final y se termina.

Si la ventana de acceso necesita cotejar los datos con la base de datos podrías colocar la creación del módulo de datos antes. Yo evito esto ya que puede llevarse un tiempo dependiendo de qué tantos controles tengas y lo ideal es que el formulario de acceso se presente de inmediato. Lo que hago es colocar controles independientes (un TTable y un TDataSource a lo mucho) en el formulario de acceso exclusivamente para la verificación.

Bueno, aunque no sea exactamente lo que quieras espero que puedas sacra ideas de lo anterior.

// Saludos
Responder Con Cita
  #3  
Antiguo 16-02-2004
soyhugo soyhugo is offline
Miembro
 
Registrado: ene 2004
Posts: 66
Poder: 23
soyhugo Va por buen camino
eres un máquina

no sé si comprendías muy bien mi explicación, pero has sabido solucionarme todas mis dudas, lo que me comentas es justamente lo que quería saber. gracias.
Responder Con Cita
  #4  
Antiguo 16-02-2004
soyhugo soyhugo is offline
Miembro
 
Registrado: ene 2004
Posts: 66
Poder: 23
soyhugo Va por buen camino
como puedo devolver un valor al cerrar un showmodal? tal como haces tu en

DatosOk := VentanaAcceso.ShowModal = ID_OK;

//esto es cuando ya has cerrado.
Responder Con Cita
  #5  
Antiguo 16-02-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por soyhugo
DatosOk := VentanaAcceso.ShowModal = ID_OK;
ShowModal es una función y su valor depende del valor que utilices en la propiedad ModalResult del formulario, por ejemplo mrOk o mrCancel. En la línea anterior VentanaAcceso.ShowModal = ID_OK no es una asignación sino una comparación y, por tanto, evalúa a un booleano. De ahí que puedas asignarlo a la variable DatosOK.

Y por cierto, algo de lo que quizá no estés al tanto:

Normalmente, cuando presentamos una ventana modal, basta asignar a los botones "Aceptar" y "Cancelar" el correspondiente valor de ModalResult para que el formulario se cierre en cuanto se oprima uno de ellos. Sin embargo, cuando el formulario se presenta como ventana única (tal es el caso del formularo de inicio) esto no es así y debes tú mismo escribir el código para cerrar el formulario y asignar ModalResult.

// Saludos
Responder Con Cita
  #6  
Antiguo 16-02-2004
KayserSoze KayserSoze is offline
Miembro
 
Registrado: ene 2004
Posts: 33
Poder: 0
KayserSoze Va por buen camino
y porque el form principal es de la la clave?
Responder Con Cita
  #7  
Antiguo 16-02-2004
soyhugo soyhugo is offline
Miembro
 
Registrado: ene 2004
Posts: 66
Poder: 23
soyhugo Va por buen camino
ya imaginaba que fuera algo así.

mirando el códgi ya sabía que lo que hacías era una comparación, claro está no se ve el código donde supestamente se hacía la asignación del valor devuelto. imaginé que sería en una propiedad modalresult del formulario, pues ya me he leído las ayudas antes de preguntar en el foro, para intentar hacer preguntas solo cuando sea necesario y no molestar. eso sí, como no veía la propiedad modal result del formulario, pues no he caído a que no está visible en el object inspect sino directamente al pner el .

gracias.
pero una simple tontería, si los valores a asignar son mrOk, mrCancel, ¿cómo es que estás comparando con id_ok, que por la ayuda no he visto que estuviera definido?
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


La franja horaria es GMT +2. Ahora son las 12:07:47.


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