git-svn-id: https://192.168.0.254/svn/Componentes.Terceros.SDAC@3 6f543ec7-021b-7e4c-98c9-62eafc7fb9a8
129 lines
3.1 KiB
ObjectPascal
129 lines
3.1 KiB
ObjectPascal
unit MyConnectForm;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, OLEDBIntf,
|
|
OLEDBC, StdCtrls, Mask, ExtCtrls, Buttons, MSAccess, OLEDBAccess, DBAccess, SdacVcl;
|
|
|
|
type
|
|
TfmMyConnect = class(TForm)
|
|
Panel: TPanel;
|
|
lbUsername: TLabel;
|
|
lbPassword: TLabel;
|
|
lbServer: TLabel;
|
|
edUsername: TEdit;
|
|
edPassword: TMaskEdit;
|
|
edServer: TComboBox;
|
|
btConnect: TBitBtn;
|
|
btCancel: TBitBtn;
|
|
Bevel1: TBevel;
|
|
edDatabase: TEdit;
|
|
lbDatabase: TLabel;
|
|
procedure btConnectClick(Sender: TObject);
|
|
private
|
|
FConnectDialog: TMSConnectDialog;
|
|
FRetries:integer;
|
|
FRetry: boolean;
|
|
|
|
procedure SetConnectDialog(Value: TMSConnectDialog);
|
|
|
|
protected
|
|
procedure DoInit; virtual;
|
|
procedure DoConnect; virtual;
|
|
|
|
public
|
|
|
|
published
|
|
property ConnectDialog: TMSConnectDialog read FConnectDialog write SetConnectDialog;
|
|
|
|
end;
|
|
|
|
var
|
|
fmMyConnect: TfmMyConnect;
|
|
|
|
implementation
|
|
|
|
{$IFDEF CLR}
|
|
{$R *.nfm}
|
|
{$ENDIF}
|
|
{$IFDEF WIN32}
|
|
{$R *.dfm}
|
|
{$ENDIF}
|
|
|
|
procedure TfmMyConnect.DoInit;
|
|
begin
|
|
FRetry := False;
|
|
FRetries := FConnectDialog.Retries;
|
|
Caption := FConnectDialog.Caption;
|
|
|
|
lbUsername.Caption := FConnectDialog.UsernameLabel;
|
|
lbPassword.Caption := FConnectDialog.PasswordLabel;
|
|
lbServer.Caption := FConnectDialog.ServerLabel;
|
|
btConnect.Caption := FConnectDialog.ConnectButton;
|
|
btCancel.Caption := FConnectDialog.CancelButton;
|
|
|
|
FConnectDialog.GetServerList(edServer.Items);
|
|
edUsername.Text := FConnectDialog.Connection.Username;
|
|
edPassword.Text := FConnectDialog.Connection.Password;
|
|
edServer.Text := FConnectDialog.Connection.Server;
|
|
edDatabase.Text := FConnectDialog.Connection.Database;
|
|
|
|
if (edUsername.Text <> '') and (edPassword.Text = '') then
|
|
ActiveControl := edPassword;
|
|
end;
|
|
|
|
procedure TfmMyConnect.DoConnect;
|
|
begin
|
|
FConnectDialog.Connection.Password := edPassword.Text;
|
|
FConnectDialog.Connection.Server := edServer.Text;
|
|
FConnectDialog.Connection.UserName := edUsername.Text;
|
|
FConnectDialog.Connection.Database := edDatabase.Text;
|
|
try
|
|
FConnectDialog.Connection.PerformConnect(FRetry);
|
|
ModalResult := mrOk;
|
|
except
|
|
on E: EMSError do begin
|
|
Dec(FRetries);
|
|
FRetry := True;
|
|
if FRetries = 0 then
|
|
ModalResult := mrCancel;
|
|
|
|
if E.MSSQLErrorCode <= NE_MAX_NETERROR then
|
|
ActiveControl := edServer
|
|
else
|
|
if E.OLEDBErrorCode = DB_SEC_E_AUTH_FAILED then
|
|
if ActiveControl <> edUsername then
|
|
ActiveControl := edPassword;
|
|
raise;
|
|
end
|
|
else
|
|
raise;
|
|
end;
|
|
end;
|
|
|
|
procedure TfmMyConnect.SetConnectDialog(Value: TMSConnectDialog);
|
|
begin
|
|
FConnectDialog:= Value;
|
|
DoInit;
|
|
end;
|
|
|
|
procedure TfmMyConnect.btConnectClick(Sender: TObject);
|
|
begin
|
|
DoConnect;
|
|
end;
|
|
|
|
initialization
|
|
if GetClass('TfmMyConnect') = nil then begin
|
|
{$IFDEF VER6P}
|
|
Classes.StartClassGroup(TfmMyConnect);
|
|
{$ENDIF}
|
|
Classes.RegisterClass(TfmMyConnect);
|
|
{$IFDEF VER6P}
|
|
ActivateClassGroup(TfmMyConnect);
|
|
{$ENDIF}
|
|
end;
|
|
|
|
end.
|
|
|