Hola
Ya que entiendes mejor el codigo del amigo Chris veamos en lo que falla.
1- la variable que va sumando los intentos hay que declararla global, osea en donde se declara el form, aqui:
Código Delphi
[-]
var
Form1: TForm1;
Intentos: Integer;
implementation
Por que?, por que si se declara en el mismo procedimiento no suma, aquí el valor se suma.
2- Cuando la clave y el usuario son correctos el form 2 se abre, PERO al cerrarse el programa se cuelga, no se cierra, queda el form 1 ahi, pero no se ve, hay que eliminar el form 2 y cerrar el programa.
Aqui te dejo el codigo, copialo y pegalo, ya esta probado.
Código Delphi
[-]
var
apellido, contrasena: String;
ClaveCorrecta: Boolean;
begin
apellido := Edit1.Text;
contrasena := Edit2.Text;
ClaveCorrecta := False;
edit1.Clear;
edit2.Clear;
Table1.First;
edit1.SetFocus;
while Table1.eof = false do
begin
if (Table1.FieldByName('Usuario').AsString = apellido) and
(Table1.FieldByName('Clave').AsString = contrasena) then
begin
try
Form1.Visible:= False; Form2.ShowModal; finally
Form2.Free; Application.Terminate; end;
end;
Table1.Next;
end;
if not ClaveCorrecta then
begin
ShowMessage('Clave o Nombre Incorrectos');
Inc(Intentos);
if Intentos >= 4 then
begin
ShowMessage('Adios!');
Application.Terminate;
end;
end;
end;
Saludos