mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-05-04 14:03:48 +02:00
198 lines
4.6 KiB
ObjectPascal
198 lines
4.6 KiB
ObjectPascal
{
|
|
This file is part of the Free Component Library.
|
|
Copyright (c) 2017 Michael Van Canneyt, member of the Free Pascal development team
|
|
|
|
Form to edit a SQLDB data connection, used in data management.
|
|
|
|
See the file COPYING.FPC, included in this distribution,
|
|
for details about the copyright.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
|
|
**********************************************************************}
|
|
unit dlgsqldbrestconnection;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, ButtonPanel, Buttons, sqldb, sqldbrestbridge;
|
|
|
|
type
|
|
|
|
{ TSQLDBRestConnectionEditorForm }
|
|
|
|
TSQLDBRestConnectionEditorForm = class(TForm)
|
|
BPConnection: TButtonPanel;
|
|
CBType: TComboBox;
|
|
ECharset: TEdit;
|
|
EName: TEdit;
|
|
ERole: TEdit;
|
|
EUserName: TEdit;
|
|
EPassword: TEdit;
|
|
EHostName: TEdit;
|
|
EDatabaseName: TEdit;
|
|
Label2: TLabel;
|
|
LEHostName1: TLabel;
|
|
LEUserName: TLabel;
|
|
LCBType: TLabel;
|
|
LEHostName: TLabel;
|
|
LEDatabaseName: TLabel;
|
|
LEPassword: TLabel;
|
|
LERole: TLabel;
|
|
LMParams: TLabel;
|
|
MParams: TMemo;
|
|
SBTest: TSpeedButton;
|
|
procedure FormCloseQuery(Sender: TObject; var CanClose: boolean);
|
|
procedure FormCreate(Sender: TObject);
|
|
procedure FormDestroy(Sender: TObject);
|
|
procedure SBTestClick(Sender: TObject);
|
|
private
|
|
FConnection: TSQLDBRestConnection;
|
|
Function TestConnection : String;
|
|
procedure FormToConnection;
|
|
procedure ConnectionToForm;
|
|
procedure SetConnection(AValue: TSQLDBRestConnection);
|
|
public
|
|
Property Connection : TSQLDBRestConnection Read FConnection Write SetConnection;
|
|
end;
|
|
|
|
Function EditSQLDBRestConnection(aConnection : TSQLDBRestConnection) : Boolean;
|
|
|
|
Resourcestring
|
|
SConnectionSuccesful = 'Connection to the database was succesfully made.';
|
|
SErrConnectionNotOK = 'Error connecting to the database';
|
|
SSuccess = 'Succesfully connected.';
|
|
|
|
|
|
implementation
|
|
|
|
{$R *.lfm}
|
|
|
|
Function EditSQLDBRestConnection(aConnection : TSQLDBRestConnection) : Boolean;
|
|
|
|
begin
|
|
With TSQLDBRestConnectionEditorForm.Create(Application) do
|
|
try
|
|
Connection:=aConnection;
|
|
result:= (ShowModal=mrOK);
|
|
if Result then
|
|
aConnection.Assign(Connection);
|
|
finally
|
|
|
|
end;
|
|
end;
|
|
|
|
procedure TSQLDBRestConnectionEditorForm.FormCreate(Sender: TObject);
|
|
begin
|
|
FConnection:=TSQLDBRestConnection.Create(Nil);
|
|
GetConnectionList(CBType.Items);
|
|
end;
|
|
|
|
procedure TSQLDBRestConnectionEditorForm.FormCloseQuery(Sender: TObject; var CanClose: boolean);
|
|
|
|
Var
|
|
S : String;
|
|
|
|
begin
|
|
if ModalResult=mrOK then
|
|
begin
|
|
FormToConnection;
|
|
S:=TestConnection;
|
|
if (S<>'') then
|
|
if MessageDlg(SErrConnectionNotOK,S,mtError,[mbIgnore,mbCancel],0)=mrIgnore then
|
|
S:='';
|
|
end;
|
|
CanClose:=(S='');
|
|
end;
|
|
|
|
procedure TSQLDBRestConnectionEditorForm.FormDestroy(Sender: TObject);
|
|
begin
|
|
FreeAndNil(FConnection);
|
|
end;
|
|
|
|
procedure TSQLDBRestConnectionEditorForm.SBTestClick(Sender: TObject);
|
|
|
|
Var
|
|
S : String;
|
|
|
|
begin
|
|
FormToConnection;
|
|
S:=TestConnection;
|
|
if (S<>'') then
|
|
MessageDlg(SErrConnectionNotOK,S,mtError,[mbOK],0)
|
|
else
|
|
MessageDlg(SSuccess,SConnectionSuccesful,mtInformation,[mbOK],0);
|
|
end;
|
|
|
|
function TSQLDBRestConnectionEditorForm.TestConnection: String;
|
|
|
|
Var
|
|
Conn : TSQLConnector;
|
|
TR : TSQLTransaction;
|
|
|
|
begin
|
|
Conn:=TSQLConnector.Create(Self);
|
|
try
|
|
TR:=TSQLTransaction.Create(Conn);
|
|
Conn.Transaction:=TR;
|
|
FConnection.ConfigConnection(Conn);
|
|
try
|
|
Conn.Connected:=true;
|
|
except
|
|
On E: Exception do
|
|
Result:=E.Message;
|
|
end;
|
|
finally
|
|
Conn.Free;
|
|
end;
|
|
end;
|
|
|
|
|
|
procedure TSQLDBRestConnectionEditorForm.SetConnection(AValue: TSQLDBRestConnection);
|
|
begin
|
|
if FConnection=AValue then Exit;
|
|
FConnection.Assign(AValue);
|
|
ConnectionToForm;
|
|
end;
|
|
|
|
procedure TSQLDBRestConnectionEditorForm.FormToConnection;
|
|
|
|
begin
|
|
With FConnection do
|
|
begin
|
|
Name:=EName.Text;
|
|
ConnectionType:=CBType.Text;
|
|
HostName:=EHostName.Text;
|
|
DatabaseName:=EDatabaseName.Text;
|
|
Params:=MParams.Lines;
|
|
UserName:=EUserName.Text;
|
|
Password:=EPassword.Text;
|
|
Role:=ERole.Text;
|
|
Charset:=ECharset.Text;
|
|
end;
|
|
end;
|
|
|
|
procedure TSQLDBRestConnectionEditorForm.ConnectionToForm;
|
|
|
|
begin
|
|
With FConnection do
|
|
begin
|
|
EName.Text:=Name;
|
|
CBType.Text:=ConnectionType;
|
|
EHostName.Text:=HostName;
|
|
EDatabaseName.Text:=DatabaseName;
|
|
MParams.Lines:=Params;
|
|
EUserName.Text:=UserName;
|
|
EPassword.Text:=Password;
|
|
ERole.Text:=Role;
|
|
ECharset.Text:=Charset;
|
|
end;
|
|
end;
|
|
|
|
end.
|
|
|