...
type
{ CallBack connection test}
TNotifyOnTestConnection = function(const DbType,HostName,DbName,UserName,Password: string): boolean of object;
{ TfmSimpleDbConnectionDialog }
TfmSimpleDbConnectionDialog = class(TForm)
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
Button1: TButton;
edDbName: TEdit;
edDbType: TComboBox;
edHostName: TEdit;
edPassword: TEdit;
edUserName: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
procedure Button1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ private declarations }
FOnTestConnection: TNotifyOnTestConnection;
procedure DoTestConnection;
public
{ public declarations }
procedure InitConnectionSettings(const DbType,HostName,DbName,UserName,Password: string);
procedure AddDbTypes(const ATypes: array of string);
property OnTestConnection: TNotifyOnTestConnection write FOnTestConnection;
end;
implementation
...
procedure TfmSimpleDbConnectionDialog.Button1Click(Sender: TObject);
begin
DoTestConnection
end;
procedure TfmSimpleDbConnectionDialog.FormShow(Sender: TObject);
begin
Button1.Enabled:=Assigned(FOnTestConnection);
end;
procedure TfmSimpleDbConnectionDialog.DoTestConnection;
begin
if Assigned(FOnTestConnection) then
FOnTestConnection(edDbType.Text,edHostName.Text,edDbName.Text,edUserName.Text,edPassword.Text);
end;
procedure TfmSimpleDbConnectionDialog.InitConnectionSettings(const DbType,
HostName, DbName, UserName, Password: string);
var i: integer;
begin
if DbType <> '' then begin
i := edDbType.Items.IndexOf(DbType);
if i < 0 then begin
AddDbTypes([DbType]);
i := edDbType.Items.IndexOf(DbType);
end;
edDbType.ItemIndex := i;
end else
if edDbType.Items.Count > 0 then
edDbType.ItemIndex := 0;
edDbName.Text := DbName;
edHostName.Text := HostName;
edUserName.Text := UserName;
edPassword.Text := Password;
end;
procedure TfmSimpleDbConnectionDialog.AddDbTypes(const ATypes: array of string);
var s: string;
begin
edDbType.Items.Clear;
for s in ATypes do
edDbType.Items.Add(s);
end;
end.