No deberías cambiar el flujo del programa en otro archivo, yo al menos lo haría así:
En el dpr, se crea y se muestra la ventana de login en forma modal, así que se quedará en esa ventana pidiendo el login.
Desde la ventana devolvemos una de las constantes Modal Result, mrOk si el usuario y clave son válidos y mrCancel cuando se llegue a 3 intentos fallidos.
Justo al asignar un valor a la propiedad password.ModalResult, se vuelve al código del dpr, finalizando o continuando la aplicación.
Código Delphi
[-]
program sistema;
uses
Forms,
main in 'main.pas' ,
hhija in 'hhija.pas' ,
data in 'data.pas' ,
splas in 'SPLAS.PAS' ,
acerca in 'ACERCA.PAS' ,
pasword in 'pasword.pas' ;
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(Tpassword, password);
if password.ShowModal <> mrOk then
Application.Terminate
else
begin
password.Free;
Splash := TSplash.Create(nil);
Splash.Show;
Splash.Update;
Application.Title := 'Sistema Protegido';
Application.CreateForm(TPrincipal, Principal); Application.CreateForm(THija, Hija); Application.CreateForm(Tpassword, password); Application.CreateForm(TDatos, Datos); Splash.Free;
end;
Application.Run;
end.
He escrito de memoria, si alguien ve un error que lo comente.
Código Delphi
[-]
Var
clave : String; Begin
if clave = edit1.Text then
begin
ModalResult := mrOk;
end
else
begin
MessageDLG('Clave Incorrecta',MTError,[MbRetry],0);
c := c +1;
if c = 3 then ModalResult := mrCancel;
end;
Saludos