1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
|
unit dbconfiggui;
{$mode objfpc}{$H+}
interface
uses
Forms, Dialogs, StdCtrls, dbconfig;
type
TConnectionTestFunction = function(ChosenConfig: TDBConnectionConfig): boolean of object;
{ TDBConfigForm }
TDBConfigForm = class(TForm)
OKButton: TButton;
CancelButton: TButton;
TestButton: TButton;
ConnectorType: TComboBox;
Host: TEdit;
Database: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Password: TEdit;
User: TEdit;
procedure ConnectorTypeEditingDone(Sender: TObject);
procedure DatabaseEditingDone(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure HostEditingDone(Sender: TObject);
procedure PasswordEditingDone(Sender: TObject);
procedure TestButtonClick(Sender: TObject);
procedure UserEditingDone(Sender: TObject);
private
FConnectionConfig: TDBConnectionConfig;
FConnectionTestFunction: TConnectionTestFunction;
FSetupComplete: boolean;
public
property Config: TDBConnectionConfig read FConnectionConfig;
property ConnectionTestCallback: TConnectionTestFunction write FConnectionTestFunction;
end;
var
DBConfigForm: TDBConfigForm;
implementation
{$R *.lfm}
{ TDBConfigForm }
procedure TDBConfigForm.TestButtonClick(Sender: TObject);
begin
// Call callback with settings, let it figure out if connection succeeded and
// get test result back
if assigned(FConnectionTestFunction) and assigned(FConnectionConfig) then
if FConnectionTestFunction(FConnectionConfig) then
showmessage('Connection test succeeded.')
else
showmessage('Connection test failed.')
else
showmessage('Error: connection test code has not been implemented.');
end;
procedure TDBConfigForm.UserEditingDone(Sender: TObject);
begin
FConnectionConfig.DBUser:=User.Text;
end;
procedure TDBConfigForm.FormCreate(Sender: TObject);
begin
FConnectionConfig:=TDBConnectionConfig.Create;
FSetupComplete:=false;
end;
procedure TDBConfigForm.ConnectorTypeEditingDone(Sender: TObject);
begin
FConnectionConfig.DBType:=ConnectorType.Text;
end;
procedure TDBConfigForm.DatabaseEditingDone(Sender: TObject);
begin
FConnectionConfig.DBPath:=Database.Text;
end;
procedure TDBConfigForm.FormDestroy(Sender: TObject);
begin
FConnectionConfig.Free;
end;
procedure TDBConfigForm.FormShow(Sender: TObject);
begin
if not FSetupComplete then
begin
// Only do this once in form's lifetime
FSetupComplete:=true;
ConnectorType.Text:=FConnectionConfig.DBType;
Host.Text:=FConnectionConfig.DBHost;
Database.Text:=FConnectionConfig.DBPath;
User.Text:=FConnectionConfig.DBUser;
Password.Text:=FConnectionConfig.DBPassword;
end;
end;
procedure TDBConfigForm.HostEditingDone(Sender: TObject);
begin
FConnectionConfig.DBHost:=Host.Text;
end;
procedure TDBConfigForm.PasswordEditingDone(Sender: TObject);
begin
FConnectionConfig.DBPassword:=Password.Text;
end;
end.
|