lazarus/components/sqldbrest/frmsqldbrestselectconn.pp
2019-05-11 16:03:10 +00:00

161 lines
4.0 KiB
ObjectPascal

unit frmsqldbrestselectconn;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ButtonPanel, ExtCtrls,
StdCtrls, sqldbrestschema, sqldbrestbridge;
type
{ TSelectRestConnectionForm }
TSelectRestConnectionForm = class(TForm)
BPSelect: TButtonPanel;
CGFieldOPtions: TCheckGroup;
CBAllTables: TCheckBox;
RGConnection: TRadioGroup;
private
FShowOptions: Boolean;
procedure SetShowOptions(AValue: Boolean);
public
Procedure Init(aList : TSQLDBRestConnectionList); overload;
Procedure Init(aList : TStrings); overload;
Property ShowOptions : Boolean Read FShowOptions Write SetShowOptions;
Function SelectedConnection : TSQLDBRestConnection;
Function SelectedOptions : TRestFieldOptions;
Function AllTables : Boolean;
end;
Function SelectRestConnection(aList : TSQLDBRestConnectionList) : TSQLDBRestConnection;
Function SelectRestConnection(aList : TStrings; out aOptions: TRestFieldOptions; Out aAllTables : Boolean) : TSQLDBRestConnection;
Function SelectRestConnection(aList : TSQLDBRestConnectionList; out aOptions: TRestFieldOptions; Out aAllTables : Boolean) : TSQLDBRestConnection;
var
SelectRestConnectionForm: TSelectRestConnectionForm;
implementation
{$R *.lfm}
Function SelectRestConnection(aList : TStrings; out aOptions: TRestFieldOptions; Out aAllTables : Boolean) : TSQLDBRestConnection;
begin
Result:=Nil;
if Alist.Count<>0 then
With TSelectRestConnectionForm.Create(Application) do
try
Init(aList);
ShowOptions:=True;
if ShowModal=mrOK then
begin
Result:=SelectedConnection;
aOptions:=SelectedOptions;
aAllTables:=AllTables;
end;
finally
Free;
end;
end;
Function DoSelectRestConnection(aList : TSQLDBRestConnectionList; withOpts : Boolean; out aOptions: TRestFieldOptions; Out aAllTables : Boolean) : TSQLDBRestConnection;
begin
Result:=Nil;
if Alist.Count<>0 then
With TSelectRestConnectionForm.Create(Application) do
try
Init(aList);
ShowOptions:=WithOpts;
if ShowModal=mrOK then
begin
Result:=SelectedConnection;
if WithOpts then
aOptions:=SelectedOptions;
aAllTables:=AllTables;
end;
finally
Free;
end;
end;
Function SelectRestConnection(aList : TSQLDBRestConnectionList; out aOptions: TRestFieldOptions; Out aAllTables : Boolean) : TSQLDBRestConnection;
begin
Result:=DoSelectRestConnection(alIst,True,aOptions,aAllTables);
end;
Function SelectRestConnection(aList : TSQLDBRestConnectionList) : TSQLDBRestConnection;
Var
aOptions: TRestFieldOptions;
B : Boolean;
begin
Result:=DoSelectRestConnection(alIst,False,aOptions,B);
end;
{ TSelectRestConnectionForm }
procedure TSelectRestConnectionForm.SetShowOptions(AValue: Boolean);
begin
if FShowOptions=AValue then Exit;
FShowOptions:=AValue;
if Not FShowOptions then
begin
CGFieldOptions.Visible:=False;
RGConnection.Width:=CGFieldOptions.Left+CGFieldOptions.Width;
end;
end;
procedure TSelectRestConnectionForm.Init(aList: TSQLDBRestConnectionList);
Var
I : integer;
begin
For I:=0 to aList.Count-1 do
RGConnection.Items.AddObject(aList[I].Name,aList[i]);
end;
procedure TSelectRestConnectionForm.Init(aList: TStrings);
begin
RGConnection.Items.Assign(aList);
end;
function TSelectRestConnectionForm.SelectedConnection: TSQLDBRestConnection;
begin
With RGConnection do
if ItemIndex=-1 then
Result:=Nil
else
Result:=TSQLDBRestConnection(Items.Objects[ItemIndex]);
end;
function TSelectRestConnectionForm.SelectedOptions: TRestFieldOptions;
Procedure Add(I : integer; V : TRestFieldOption);
begin
if CGFieldOPtions.Checked[I] then
Include(Result,V);
end;
begin
Result:=[];
Add(0,foFilter);
Add(1,foOrderBy);
Add(2,foOrderByDesc);
Add(3,foInInsert);
Add(4,foInUpdate);
Add(5,foRequired);
end;
function TSelectRestConnectionForm.AllTables: Boolean;
begin
Result:=CBAllTables.Checked;
end;
end.