- Recompilación de RO para poner RemObjects_Core_D10 como paquete de runtime/designtime. git-svn-id: https://192.168.0.254/svn/Componentes.Terceros.RemObjects@3 b6239004-a887-0f4b-9937-50029ccdca16
116 lines
3.1 KiB
ObjectPascal
116 lines
3.1 KiB
ObjectPascal
unit BriefcaseModelClientChanges;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
|
Dialogs, StdCtrls, ExtCtrls, ComCtrls;
|
|
|
|
type
|
|
TBriefcaseModelClientChangesForm = class(TForm)
|
|
ListView: TListView;
|
|
Splitter1: TSplitter;
|
|
ListBox: TListBox;
|
|
procedure ListBoxClick(Sender: TObject);
|
|
procedure ListViewData(Sender: TObject; Item: TListItem);
|
|
private
|
|
{ Private declarations }
|
|
procedure SetupListview;
|
|
procedure Setup;
|
|
public
|
|
{ Public declarations }
|
|
|
|
end;
|
|
|
|
var
|
|
BriefcaseModelClientChangesForm: TBriefcaseModelClientChangesForm;
|
|
|
|
procedure ShowChanges;
|
|
implementation
|
|
uses
|
|
uDADelta, BriefcaseModelClientData, uDAInterfaces;
|
|
|
|
{$R *.dfm}
|
|
|
|
procedure ShowChanges;
|
|
begin
|
|
with TBriefcaseModelClientChangesForm.Create(Application) do try
|
|
Setup;
|
|
if ListBox.Count = 0 then Exit;
|
|
ShowModal;
|
|
finally
|
|
Release;
|
|
end;
|
|
end;
|
|
|
|
procedure TBriefcaseModelClientChangesForm.ListBoxClick(Sender: TObject);
|
|
begin
|
|
SetupListView;
|
|
end;
|
|
|
|
procedure TBriefcaseModelClientChangesForm.SetupListview;
|
|
begin
|
|
ListView.Items.Count := 0;
|
|
if ListBox.ItemIndex = -1 then Exit;
|
|
ListView.Items.Count := TDADeltaChange(Listbox.Items.Objects[ListBox.ItemIndex]).Delta.LoggedFieldCount;
|
|
end;
|
|
|
|
procedure TBriefcaseModelClientChangesForm.ListViewData(Sender: TObject;
|
|
Item: TListItem);
|
|
var
|
|
DeltaChange: TDADeltaChange;
|
|
begin
|
|
if (Item = nil) or (Item.Index >= ListView.Items.Count) then Exit;
|
|
DeltaChange := TDADeltaChange(Listbox.Items.Objects[ListBox.ItemIndex]);
|
|
Item.Caption := DeltaChange.Delta.LoggedFieldNames[Item.Index];
|
|
if DeltaChange.ChangeType <> ctInsert then
|
|
Item.SubItems.Add(VarToStr(DeltaChange.OldValueByName[Item.Caption]))
|
|
else
|
|
Item.SubItems.Add('');
|
|
if DeltaChange.ChangeType <> ctDelete then
|
|
Item.SubItems.Add(VarToStr(DeltaChange.NewValueByName[Item.Caption]))
|
|
else
|
|
Item.SubItems.Add('');
|
|
end;
|
|
|
|
procedure TBriefcaseModelClientChangesForm.Setup;
|
|
|
|
procedure AddDelta(Delta: IDADelta);
|
|
var
|
|
str: string;
|
|
i, j: integer;
|
|
begin
|
|
for i := 0 to Delta.Count - 1 do
|
|
with Delta.Changes[i] do begin
|
|
case ChangeType of
|
|
ctInsert: str := '[New]';
|
|
ctUpdate: str := '[Update]';
|
|
ctDelete: str := '[Delete]';
|
|
end;
|
|
str := str + ' ' + Delta.LogicalName + ': ';
|
|
for j := 0 to delta.KeyFieldCount - 1 do begin
|
|
if ChangeType = ctDelete then
|
|
str := str + VarToStr(OldValueByName[delta.KeyFieldNames[j]]) + ','
|
|
else
|
|
str := str + VarToStr(NewValueByName[delta.KeyFieldNames[j]]) + ','
|
|
end;
|
|
if delta.KeyFieldCount > 0 then SetLength(Str, Length(str) - 1);
|
|
ListBox.Items.AddObject(str, Delta.Changes[i]);
|
|
end;
|
|
end;
|
|
|
|
begin
|
|
ListBox.Items.Clear;
|
|
with BriefcaseModelClientDataModule do begin
|
|
if tbl_Customers.DeltaInitialized then AddDelta(tbl_Customers.Delta);
|
|
if tbl_Orders.DeltaInitialized then AddDelta(tbl_Orders.Delta);
|
|
end;
|
|
if ListBox.Count > 0 then begin
|
|
ListBox.ItemIndex := 0;
|
|
ListBoxClick(ListBox);
|
|
end;
|
|
end;
|
|
|
|
end.
|
|
|