mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-05-02 23:03:39 +02:00
158 lines
3.4 KiB
ObjectPascal
158 lines
3.4 KiB
ObjectPascal
unit frasqldbresourcefields;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils, Forms, Controls, ComCtrls, DB, sqldbrestschema, sqldbschemaedittools;
|
|
|
|
type
|
|
{ TResourceFieldsEditFrame }
|
|
|
|
TResourceFieldsEditFrame = class(TBaseEditFrame)
|
|
ILFields: TImageList;
|
|
LVFields: TListView;
|
|
procedure LVFieldsDblClick(Sender: TObject);
|
|
private
|
|
FOnSelectField: TNotifyEvent;
|
|
FResource: TSQLDBRestResource;
|
|
procedure AddFieldToList(Fld: TSQLDBRestField);
|
|
procedure SetResource(AValue: TSQLDBRestResource);
|
|
procedure ShowField(LI: TListItem; Fld: TSQLDBRestField);
|
|
Protected
|
|
procedure SetFrameData(aData: TObject); override;
|
|
public
|
|
Procedure ShowResource;
|
|
Function Modified : Boolean; override;
|
|
Procedure SaveData; override;
|
|
Function FrameCaption : String; override;
|
|
Property Resource : TSQLDBRestResource Read FResource Write SetResource;
|
|
Property OnSelectField : TNotifyEvent Read FOnSelectField Write FOnSelectField;
|
|
end;
|
|
|
|
implementation
|
|
|
|
uses typinfo;
|
|
|
|
{$R *.lfm}
|
|
Const
|
|
idxChecked = 0;
|
|
idxUnChecked = 1;
|
|
idxField = 2;
|
|
idxKey = 3;
|
|
|
|
{ TResourceFieldsEditFrame }
|
|
|
|
procedure TResourceFieldsEditFrame.SetResource(AValue: TSQLDBRestResource);
|
|
begin
|
|
if FResource=AValue then Exit;
|
|
FResource:=AValue;
|
|
ShowResource;
|
|
end;
|
|
|
|
procedure TResourceFieldsEditFrame.SetFrameData(aData: TObject);
|
|
begin
|
|
Resource:=aData as TSQLDBRestResource;
|
|
end;
|
|
|
|
procedure TResourceFieldsEditFrame.ShowField(LI: TListItem; Fld: TSQLDBRestField);
|
|
|
|
procedure ShowBool(Idx : Integer; B : Boolean; ImgIdx : Integer = idxChecked);
|
|
|
|
|
|
begin
|
|
LI.SubItems[Idx]:='';
|
|
if B then
|
|
LI.SubItemImages[Idx]:=ImgIdx;
|
|
end;
|
|
|
|
Procedure ShowOp(idx : Integer; O : TRestFieldOption);
|
|
|
|
begin
|
|
ShowBool(Idx,O in fld.Options);
|
|
end;
|
|
|
|
Var
|
|
i : Integer;
|
|
S : String;
|
|
|
|
begin
|
|
LI.Data:=Fld;
|
|
LI.ImageIndex:=idxField;
|
|
LI.Caption:=Fld.PublicName;
|
|
for I:=0 to LVFields.ColumnCount-1 do
|
|
LI.SubItems.Add('');
|
|
LI.SubItems[0]:=Fld.FieldName;
|
|
LI.SubItems[1]:=TypeNames[Fld.FieldType];
|
|
S:=GetEnumName(TypeInfo(TFieldType),Ord(Fld.NativeFieldType));
|
|
LI.SubItems[2]:=S;
|
|
LI.SubItems[3]:=Fld.GeneratorName;
|
|
ShowBool(4,foInKey in Fld.Options,idxKey);
|
|
ShowOp(5,foInInsert);
|
|
ShowOp(6,foInUpdate);
|
|
ShowOp(7,foRequired);
|
|
ShowOp(8,foFilter);
|
|
ShowOp(9,foOrderBy);
|
|
ShowOp(10,foOrderByDesc);
|
|
end;
|
|
|
|
procedure TResourceFieldsEditFrame.LVFieldsDblClick(Sender: TObject);
|
|
begin
|
|
if Assigned(OnSelectField) and Assigned(LVFields.Selected) And Assigned(LVFields.Selected.Data) then
|
|
OnSelectField(TSQLDBRestResource(LVFields.Selected.Data));
|
|
end;
|
|
|
|
procedure TResourceFieldsEditFrame.AddFieldToList(Fld: TSQLDBRestField);
|
|
|
|
Var
|
|
LI : TListItem;
|
|
|
|
begin
|
|
LI:=LVFields.Items.Add;
|
|
ShowField(LI,Fld);
|
|
end;
|
|
|
|
procedure TResourceFieldsEditFrame.ShowResource;
|
|
|
|
Var
|
|
I : Integer;
|
|
|
|
begin
|
|
With LVFields.Items do
|
|
begin
|
|
BeginUpdate;
|
|
try
|
|
Clear;
|
|
if Not assigned(Resource) then
|
|
exit;
|
|
For I:=0 to Resource.Fields.Count-1 do
|
|
AddFieldToList(Resource.Fields[I]);
|
|
finally
|
|
EndUpdate;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
function TResourceFieldsEditFrame.Modified: Boolean;
|
|
begin
|
|
Result:=False;
|
|
end;
|
|
|
|
procedure TResourceFieldsEditFrame.SaveData;
|
|
begin
|
|
// nothing to do
|
|
end;
|
|
|
|
function TResourceFieldsEditFrame.FrameCaption: String;
|
|
begin
|
|
if FResource=Nil then
|
|
Result:=SUnknownObject
|
|
else
|
|
Result:=Resource.ResourceName;
|
|
Result:=Format(SEditObjectFields,[Result]);
|
|
end;
|
|
|
|
end.
|
|
|