Componentes.Terceros.RemObj.../internal/5.0.23.613/1/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelClientChanges.pas
david f0e35ec439 - Eliminadas las librerías para Delphi 6 (Dcu\D6) en RO y DA.
- 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
2007-09-10 10:40:17 +00:00

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.