mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-05-05 07:43:44 +02:00
218 lines
4.9 KiB
ObjectPascal
218 lines
4.9 KiB
ObjectPascal
unit frasqldbrestfieldedit;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils, Forms, Controls, StdCtrls, Spin, ExtCtrls, db, sqldbschemaedittools, sqldbrestschema;
|
|
|
|
type
|
|
|
|
{ TSQLDBRestFieldEditFrame }
|
|
|
|
TSQLDBRestFieldEditFrame = class(TBaseEditFrame)
|
|
CBFieldType: TComboBox;
|
|
CBNativeFieldType: TComboBox;
|
|
CGFieldOptions: TCheckGroup;
|
|
LPublicName1: TLabel;
|
|
LPublicName2: TLabel;
|
|
LPublicName3: TLabel;
|
|
LPublicName4: TLabel;
|
|
LSEMaxLen: TLabel;
|
|
CGFilters: TCheckGroup;
|
|
EGeneratorName: TEdit;
|
|
EPublicName: TEdit;
|
|
EFieldName: TEdit;
|
|
LPublicName: TLabel;
|
|
SEMaxLen: TSpinEdit;
|
|
procedure CGFieldOptionsItemClick(Sender: TObject; Index: integer);
|
|
private
|
|
FField: TSQLDBRestField;
|
|
procedure CheckFiltersEnabled;
|
|
procedure SetField(AValue: TSQLDBRestField);
|
|
Protected
|
|
Procedure SetFrameData(aData: TObject); override;
|
|
public
|
|
Constructor Create(aOwner : TComponent); override;
|
|
Function Modified : Boolean; override;
|
|
Procedure SaveData; override;
|
|
Procedure ShowField;
|
|
Function FrameCaption : String; override;
|
|
Property Field : TSQLDBRestField Read FField Write SetField;
|
|
end;
|
|
|
|
|
|
implementation
|
|
|
|
uses typinfo;
|
|
|
|
{$R *.lfm}
|
|
|
|
{ TSQLDBRestFieldEditFrame }
|
|
|
|
procedure TSQLDBRestFieldEditFrame.CGFieldOptionsItemClick(Sender: TObject;
|
|
Index: integer);
|
|
begin
|
|
if Index=ord(foFilter) then
|
|
CheckFiltersEnabled;
|
|
end;
|
|
|
|
procedure TSQLDBRestFieldEditFrame.CheckFiltersEnabled;
|
|
|
|
begin
|
|
CGFilters.Enabled:=CGFieldOptions.Checked[ord(foFilter)];
|
|
end;
|
|
|
|
procedure TSQLDBRestFieldEditFrame.SetField(AValue: TSQLDBRestField);
|
|
begin
|
|
if FField=AValue then Exit;
|
|
FField:=AValue;
|
|
ShowField;
|
|
end;
|
|
|
|
procedure TSQLDBRestFieldEditFrame.SetFrameData(aData: TObject);
|
|
begin
|
|
Field:=aData as TSQLDBRestField;
|
|
end;
|
|
|
|
constructor TSQLDBRestFieldEditFrame.Create(aOwner: TComponent);
|
|
Var
|
|
T : TRestFieldType;
|
|
FT : TFieldType;
|
|
|
|
begin
|
|
inherited Create(aOwner);
|
|
CBFieldType.Items.Clear;
|
|
For T in TRestFieldType do
|
|
if T<>rftUnknown then
|
|
CBFieldType.Items.Add(TypeNames[T]);
|
|
CBNativeFieldType.Items.Clear;
|
|
For FT in TFieldType do
|
|
if FT<>ftUnknown then
|
|
CBNativeFieldType.Items.Add(GetEnumName(TypeInfo(TFieldType),Ord(FT)))
|
|
end;
|
|
|
|
function TSQLDBRestFieldEditFrame.Modified: Boolean;
|
|
|
|
Procedure DoOption(O : TRestFieldOption);
|
|
|
|
begin
|
|
Result:=Result or (CGFieldOptions.Checked[Ord(O)]<> (O in Field.Options))
|
|
end;
|
|
|
|
Procedure DoFilter(F : TRestFieldFilter);
|
|
|
|
begin
|
|
Result:=Result or (CGFilters.Checked[Ord(F)]<> (F in Field.Filters));
|
|
end;
|
|
|
|
Var
|
|
O : TRestFieldOption;
|
|
FO : TRestFieldFilter;
|
|
|
|
begin
|
|
With FField do
|
|
begin
|
|
Result:=(PublicName <> EPublicName.Text) or
|
|
(FieldName <> EFieldName.Text) or
|
|
(GeneratorName <> EGeneratorName.Text) or
|
|
(FieldType <> TRestFieldType(CBFieldType.ItemIndex+1)) or
|
|
(NativeFieldType <> TFieldType(CBNativeFieldType.ItemIndex+1)) or
|
|
(MaxLen<>SEMaxLen.Value);
|
|
For O in TRestFieldOption do
|
|
DoOption(O);
|
|
For FO in TRestFieldFilter do
|
|
DoFilter(FO);
|
|
end;
|
|
end;
|
|
|
|
procedure TSQLDBRestFieldEditFrame.SaveData;
|
|
|
|
Procedure DoOption(O : TRestFieldOption);
|
|
|
|
begin
|
|
if CGFieldOptions.Checked[Ord(O)] then
|
|
Field.Options:=Field.Options+[O]
|
|
else
|
|
Field.Options:=Field.Options-[O]
|
|
end;
|
|
|
|
Procedure DoFilter(F : TRestFieldFilter);
|
|
|
|
begin
|
|
if CGFilters.Checked[Ord(F)] and (foFilter in Field.Options) then
|
|
Field.Filters:=Field.Filters+[F]
|
|
else
|
|
Field.Filters:=Field.Filters-[F];
|
|
end;
|
|
|
|
Var
|
|
O : TRestFieldOption;
|
|
FO : TRestFieldFilter;
|
|
|
|
|
|
begin
|
|
With FField do
|
|
begin
|
|
PublicName := EPublicName.Text;
|
|
FieldName := EFieldName.Text;
|
|
GeneratorName := EGeneratorName.Text;
|
|
FieldType := TRestFieldType(CBFieldType.ItemIndex+1);
|
|
NativeFieldType := TFieldType(CBNativeFieldType.ItemIndex+1);
|
|
MaxLen:=SEMaxLen.Value;
|
|
For O in TRestFieldOption do
|
|
DoOption(O);
|
|
For FO in TRestFieldFilter do
|
|
DoFilter(FO);
|
|
end;
|
|
end;
|
|
|
|
procedure TSQLDBRestFieldEditFrame.ShowField;
|
|
|
|
Procedure DoOption(O : TRestFieldOption);
|
|
|
|
begin
|
|
CGFieldOptions.Checked[Ord(O)]:=O in Field.Options;
|
|
end;
|
|
|
|
Procedure DoFilter(F : TRestFieldFilter);
|
|
|
|
begin
|
|
CGFilters.Checked[Ord(F)]:=(foFilter in Field.Options) and (F in Field.Filters);
|
|
end;
|
|
|
|
Var
|
|
O : TRestFieldOption;
|
|
FO : TRestFieldFilter;
|
|
|
|
|
|
begin
|
|
With FField do
|
|
begin
|
|
EPublicName.Text:=PublicName;
|
|
EFieldName.Text:=FieldName;
|
|
EGeneratorName.Text:=GeneratorName;
|
|
CBFieldType.ItemIndex:=Ord(FieldType)-1;
|
|
CBNativeFieldType.ItemIndex:=Ord(NativeFieldType)-1;
|
|
SEMaxLen.Value:=MaxLen;
|
|
For O in TRestFieldOption do
|
|
DoOption(O);
|
|
CheckFiltersEnabled;
|
|
For FO in TRestFieldFilter do
|
|
DoFilter(FO);
|
|
end;
|
|
end;
|
|
|
|
function TSQLDBRestFieldEditFrame.FrameCaption: String;
|
|
begin
|
|
if FField=Nil then
|
|
Result:=SUnknownObject
|
|
else
|
|
Result:=FField.PublicName;
|
|
Result:=Format(SEditObject,[SField,Result]);
|
|
end;
|
|
|
|
end.
|
|
|