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.