108 lines
3.0 KiB
ObjectPascal
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.
|