xtool/contrib/mORMot/SQLite3/Samples/ThirdPartyDemos/AntonE/ORMCDS/SampleForm1U.pas

108 lines
3.0 KiB
ObjectPascal

unit SampleForm1U;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Grids, Vcl.DBGrids, JvExDBGrids,
JvDBGrid, JvDBUltimGrid, Vcl.StdCtrls, Data.DB, Datasnap.DBClient;
type
TSampleForm1 = class(TForm)
DSPerson: TDataSource;
DSPhones: TDataSource;
DSChildren: TDataSource;
cdsChildren: TClientDataSet;
cdsChildrenID: TLargeintField;
cdsChildrenParent: TLargeintField;
cdsChildrenChildName: TStringField;
cdsChildrenChildGender: TIntegerField;
cdsPhones: TClientDataSet;
cdsPhonesNumber: TStringField;
cdsPhonesPType_ptWork: TBooleanField;
cdsPhonesPType_ptHome: TBooleanField;
cdsPhonesPType_ptFax: TBooleanField;
cdsPhonesPType_ptSMS: TBooleanField;
cdsPerson: TClientDataSet;
cdsPersonID: TLargeintField;
cdsPersonName: TStringField;
cdsPersonInt: TIntegerField;
cdsPersonPhones: TDataSetField;
cdsPersonGender: TIntegerField;
cdsPersonChildren: TDataSetField;
Button2: TButton;
JvDBUltimGrid1: TJvDBUltimGrid;
JvDBUltimGrid2: TJvDBUltimGrid;
JvDBUltimGrid3: TJvDBUltimGrid;
BtnApply: TButton;
Label1: TLabel;
procedure Button2Click(Sender: TObject);
procedure BtnApplyClick(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure JvDBUltimGrid1GetCellParams(Sender: TObject; Field: TField;
AFont: TFont; var Background: TColor; Highlight: Boolean);
private
{ Private declarations }
public
{ Public declarations }
end;
var
SampleForm1: TSampleForm1;
implementation
{$R *.dfm}
uses MainFormU,ORMCDS,mORMot,RTTI,Provider;
procedure TSampleForm1.BtnApplyClick(Sender: TObject);
var Value : TValue;
begin
Value.From(TSQLRecord);
Value:=TSQLRecord;
ORM_SaveCDSFields(MainForm.DB,cdsPerson,'Person',Value,False);
Close;
end;
procedure TSampleForm1.Button2Click(Sender: TObject);
var Person : TSQLPerson;
begin
ORM_LinkCDS(cdsPerson ,TypeInfo(TSQLPerson),'');
ORM_LinkCDS(cdsPhones ,TypeInfo(TPhoneArr ),'');
ORM_LinkCDS(cdsChildren,TypeInfo(TSQLChild ),'Parent');
cdsPerson.CreateDataSet;
cdsPerson.LogChanges:=False;
cdsPerson.SaveToFile('FileX.xml');
Person:=TSQLPerson.Create;
MAinForm.DB.Retrieve(1,Person);
ORM_LoadCDSFields(MainForm.DB,cdsPerson,'Person',Person);
MainForm.DB.Retrieve(2,Person);
ORM_LoadCDSFields(MainForm.DB,cdsPerson,'Person',Person);
Person.Free;
cdsPerson.MergeChangeLog;
cdsPerson.LogChanges:=True;
cdsPerson.SaveToFile('FileY.xml');
end;
procedure TSampleForm1.FormDestroy(Sender: TObject);
begin
ORM_FreeCDSInfo(cdsPerson,False);
end;
procedure TSampleForm1.JvDBUltimGrid1GetCellParams(Sender: TObject;
Field: TField; AFont: TFont; var Background: TColor; Highlight: Boolean);
begin
case TClientDataset(Field.DataSet).UpdateStatus of
usUnmodified : Background:=clWhite;
usModified : BAckground:=clMoneyGreen;
usInserted : Background:=clSkyBlue;
usDeleted : Background:=clRed
else raise Exception.Create('Error Message');
end;
end;
end.