Bueno, puedes intentar modificar el codigo de la ventana donde solicitas el nombre de usuario y contraseña, supongo que tienes mas o menos algo parecido a lo que se muestra abajo.
Se agrega una variable privada en la forma y una constante en la implementacion con las cuales se lleva la cuenta de cuantas veces se intenta el acceso, si se llega al numero maximo se termina la aplicación, asi como si le das click al boton cancelar.
Código Delphi
[-]
unit Username;
interface
uses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls, ExtCtrls, jpeg, Buttons;
type
TUserNameDlg = class(TForm)
UserNameEdit: TEdit;
OkBtn: TBitBtn;
CancelBtn: TBitBtn;
procedure OkBtnClick(Sender: TObject);
procedure CancelBtnClick(Sender : TObject);
procedure FormCreate(Sender: TObject);
private
Tries : byte;
function TryAgain : TModalResult;
public
end;
var
UserNameDlg: TUserNameDlg;
implementation
{$R *.DFM}
const
MAX_TRIES = 3;
procedure TUserNameDlg.OkBtnClick(Sender: TObject);
begin
Fusuario:=Edit1.Text;
fpsw:=Edit2.Text;
with BD.SQLConnection do
begin
Connected := false;
try
BD.SQLConnection.Params.Values['Database']:='DSN=BDEquipos;UID='+ Fusuario + ';'+ 'PWD='+fpsw + ';' + 'DB=equipos;HOSTNAME=localhost';
Except
on E: exception do begin
ShowMessage('Error al intentar abrir la base de datos.' + ^M +
'Confirme a Sistemas.');
if Tries then Tries := Tries +1
else
Application.Terminate;
end;
end
end;
end;
procedure TUserNameDlg.CancelBtnClick(Sender : TObject);
begin
Application.Terminate;
end;
procedure TUserNameDlg.FormCreate(Sender: TObject);
begin
Tries := 1;
end;