Ver Mensaje Individual
  #8  
Antiguo 16-03-2009
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Hola,

Los pasos básicos a seguir son:

1. Colocar un Edit por cada dato que requieras: host, user, password, database, etc.
2. Colocar dos botones: Aceptar y Cancelar. Al primero le pones su propiedad ModalResult en mrOk y su propiedad Default en true. Al segundo le pones su propiedad ModalResult en mrCancel y su propiedad Cancel en true.
3. En el evento OnCloseQuery del formulario verificas qué botón se oprimió:

Código Delphi [-]
if ModalResult = mrOk then
begin
    (* Aquí verificas que los datos sean correctos    *)
    (* Si no lo son puedes lanzar una excepción o     *)
    (* ajustar el parámetros CanClose del evento a    *)
    (* false, para evitar que se cierre el formulario *)
end;

Observa que no programas nada en el evento OnClick del botón. Aunque podrías hacerlo así, lo normal es hacerlo en el OnCloseQuery como te he mostrado.

4. Cuando muestres el formulario de login, lo haces usando ShowModal y el valor de regreso de esta función es el que te indica si el usuario aceptó o canceló, y con base en ello muestras o no tu formulario principal. Si este cuadro de login lo vas a mostrar al inicio de la aplicación, lo más adecuado es hacerlo en el archivo dpr (Project|View source). Aquí un ejemplo:

Código Delphi [-]
program LoginDemo;

uses
    Windows,
    Forms,
    Main in 'Main.pas' {MainForm},
    Login in 'Login.pas' {LoginForm};

{$R *.res}

begin
    Application.Initialize;

    LoginForm := TLoginForm.Create(Application);
    if LoginForm.ShowModal = idOk then
    begin
        LoginForm.Free;

        Application.CreateForm(TMainForm, MainForm);
    end;

    Application.Run;
end.

Observa que el formulario principal sólo se crea en caso de que el usuario haya oprimido Aceptar (ShowModal = idOk). Si cancela, el formulario no se crea y, no habiendo uno, la aplicación termina inmediatamente después de Application.Run.

// Saludos
Responder Con Cita