summaryrefslogtreecommitdiff
path: root/extras/tiopf/demos
diff options
context:
space:
mode:
authorGraeme Geldenhuys <graeme@mastermaths.co.za>2010-10-14 12:29:19 +0200
committerGraeme Geldenhuys <graeme@mastermaths.co.za>2010-10-14 12:29:19 +0200
commitff7f64d95ca92b644e0d66e2195a69344895b2ce (patch)
treed822b50e87cb21b6820e31c4e07a520d3113b89e /extras/tiopf/demos
parentce211febcabb02606c0d5b45b4c8502a76d6ae58 (diff)
downloadfpGUI-ff7f64d95ca92b644e0d66e2195a69344895b2ce.tar.xz
Moved tiOPF related units into the tiOPF repository.
It makes more sense to have the tiOPF related units with the rest of the tiOPF. It's easier to keep changes in sync, and have atomic commits across the various GUI toolkits supported by tiOPF.
Diffstat (limited to 'extras/tiopf/demos')
-rw-r--r--extras/tiopf/demos/Common/Constants.pas14
-rw-r--r--extras/tiopf/demos/Common/Model.pas263
-rw-r--r--extras/tiopf/demos/Common/Model_View.pas52
-rw-r--r--extras/tiopf/demos/Common/frm_pickdatabase.pas361
-rw-r--r--extras/tiopf/demos/Demo_04_CreateDatabase/demo_04.lpi70
-rw-r--r--extras/tiopf/demos/Demo_04_CreateDatabase/demo_04.lpr39
-rw-r--r--extras/tiopf/demos/Demo_04_CreateDatabase/frm_main.pas176
-rw-r--r--extras/tiopf/demos/Demo_06_CreateTable/demo_06.lpi64
-rw-r--r--extras/tiopf/demos/Demo_06_CreateTable/demo_06.lpr45
-rw-r--r--extras/tiopf/demos/Demo_06_CreateTable/frm_main.pas205
-rw-r--r--extras/tiopf/demos/Demo_07_VisitorBasics/Client_BOM.pas81
-rw-r--r--extras/tiopf/demos/Demo_07_VisitorBasics/demo_07.lpi70
-rw-r--r--extras/tiopf/demos/Demo_07_VisitorBasics/demo_07.lpr39
-rw-r--r--extras/tiopf/demos/Demo_07_VisitorBasics/frm_main.pas131
-rw-r--r--extras/tiopf/demos/Demo_08_Collection/Client_AutoMap_Svr.pas25
-rw-r--r--extras/tiopf/demos/Demo_08_Collection/Client_BOM.pas70
-rw-r--r--extras/tiopf/demos/Demo_08_Collection/Client_DBIndependentVisitors_Svr.pas146
-rw-r--r--extras/tiopf/demos/Demo_08_Collection/Client_HardCodedVisitors_Svr.pas171
-rw-r--r--extras/tiopf/demos/Demo_08_Collection/demo_08.lpi84
-rw-r--r--extras/tiopf/demos/Demo_08_Collection/demo_08.lpr65
-rw-r--r--extras/tiopf/demos/Demo_08_Collection/frm_main.pas332
-rw-r--r--extras/tiopf/demos/Demo_20_ListMediators/demo_listmediators.lpi83
-rw-r--r--extras/tiopf/demos/Demo_20_ListMediators/demo_listmediators.lpr29
-rw-r--r--extras/tiopf/demos/Demo_20_ListMediators/frmMain.pas277
-rw-r--r--extras/tiopf/demos/Demo_21_AdrsBook_MGM/_readme.txt14
-rw-r--r--extras/tiopf/demos/Demo_21_AdrsBook_MGM/contactmanager.pas260
-rw-r--r--extras/tiopf/demos/Demo_21_AdrsBook_MGM/demo_adrsbook_mgm.lpi100
-rw-r--r--extras/tiopf/demos/Demo_21_AdrsBook_MGM/demo_adrsbook_mgm.lpr33
-rw-r--r--extras/tiopf/demos/Demo_21_AdrsBook_MGM/frmaddressmaint.pas266
-rw-r--r--extras/tiopf/demos/Demo_21_AdrsBook_MGM/frmcitylist.pas173
-rw-r--r--extras/tiopf/demos/Demo_21_AdrsBook_MGM/frmcitymaint.pas200
-rw-r--r--extras/tiopf/demos/Demo_21_AdrsBook_MGM/frmcontactmaint.pas335
-rw-r--r--extras/tiopf/demos/Demo_21_AdrsBook_MGM/frmcountrylist.pas166
-rw-r--r--extras/tiopf/demos/Demo_21_AdrsBook_MGM/frmmain.pas276
-rw-r--r--extras/tiopf/demos/Demo_21_AdrsBook_MGM/model.pas553
-rw-r--r--extras/tiopf/demos/Demo_21_AdrsBook_MGM/units/placeholder.txt1
-rw-r--r--extras/tiopf/demos/Demo_TtiBaseObject/PerformanceTesting.lpi59
-rw-r--r--extras/tiopf/demos/Demo_TtiBaseObject/PerformanceTesting.lpr31
-rw-r--r--extras/tiopf/demos/Demo_TtiBaseObject/frm_main.pas218
-rw-r--r--extras/tiopf/demos/Demo_TtiBaseObject/performancetest.lpi117
-rw-r--r--extras/tiopf/demos/Demo_TtiBaseObject/performancetest.lpr248
-rw-r--r--extras/tiopf/demos/EditControlsDemo/editmediators.lpi73
-rw-r--r--extras/tiopf/demos/EditControlsDemo/editmediators.lpr27
-rw-r--r--extras/tiopf/demos/EditControlsDemo/frmMain.pas237
-rw-r--r--extras/tiopf/demos/ListControlDemo/frmMain.pas255
-rw-r--r--extras/tiopf/demos/ListControlDemo/listcontroldemo.lpi74
-rw-r--r--extras/tiopf/demos/ListControlDemo/listcontroldemo.lpr26
-rw-r--r--extras/tiopf/demos/StringGridMediatorDemo/frm_main.pas288
-rw-r--r--extras/tiopf/demos/StringGridMediatorDemo/frm_personmaint.pas191
-rw-r--r--extras/tiopf/demos/StringGridMediatorDemo/stringgridmediatordemo.lpi84
-rw-r--r--extras/tiopf/demos/StringGridMediatorDemo/stringgridmediatordemo.lpr30
-rw-r--r--extras/tiopf/demos/readme.txt29
-rw-r--r--extras/tiopf/demos/rtf_reporting/demo.rtf93
-rw-r--r--extras/tiopf/demos/rtf_reporting/demoproject.lpi56
-rw-r--r--extras/tiopf/demos/rtf_reporting/demoproject.lpr30
-rw-r--r--extras/tiopf/demos/rtf_reporting/frmMain.pas313
-rw-r--r--extras/tiopf/demos/rtf_reporting/result.pdfbin10596 -> 0 bytes
-rw-r--r--extras/tiopf/demos/rtf_reporting/result.rtf489
58 files changed, 0 insertions, 8237 deletions
diff --git a/extras/tiopf/demos/Common/Constants.pas b/extras/tiopf/demos/Common/Constants.pas
deleted file mode 100644
index 9820ae5e..00000000
--- a/extras/tiopf/demos/Common/Constants.pas
+++ /dev/null
@@ -1,14 +0,0 @@
-unit Constants;
-
-{$mode objfpc}{$H+}
-
-interface
-
-const
- cNameMissing = 'Please enter a name';
- cAgeOutofRange = 'Please enter a valid age between 1 - 100';
-
-
-implementation
-
-end.
diff --git a/extras/tiopf/demos/Common/Model.pas b/extras/tiopf/demos/Common/Model.pas
deleted file mode 100644
index 8fe815cb..00000000
--- a/extras/tiopf/demos/Common/Model.pas
+++ /dev/null
@@ -1,263 +0,0 @@
-unit Model;
-
-{$mode objfpc}{$H+}
-
-interface
-uses
- tiObject
- ;
-
-type
- TGender = (genMale, genFemale);
-
-const
- cGender: array[TGender] of string = ('Male', 'Female');
-
-type
- TPerson = class;
- TPersonList = class;
-
-
- { Undo feature for TPerson }
- TPersonMemento = class(TObject)
- private
- FOID: string;
- FObjectState: TPerObjectState;
- FName: string;
- FAge: integer;
- FGender: TGender;
- end;
-
-
- { TPerson - The subject being observed }
- TPerson = class(TtiObject)
- private
- FGender: TGender;
- FName: string;
- FAge: integer;
- function GetGenderGUI: string;
- function GetMemento: TPersonMemento;
- procedure SetGender(const AValue: TGender);
- procedure SetGenderGUI(const AValue: string);
- procedure SetName(const Value: string);
- procedure SetAge(const Value: integer);
- procedure SetMemento(const AValue: TPersonMemento);
- protected
- function GetCaption: string; override;
- procedure DoGetFieldBounds(const AFieldName: String; var MinValue, MaxValue: Integer; var HasBounds: Boolean); override;
- public
- constructor Create; override;
- function IsValid(const pErrors: TtiObjectErrors): Boolean; override;
- procedure NotifyObservers; override;
- property Memento: TPersonMemento read GetMemento write SetMemento;
- property Gender: TGender read FGender write SetGender;
- published
- property Name: string read FName write SetName;
- property Age: integer read FAge write SetAge;
- property GenderGUI: string read GetGenderGUI write SetGenderGUI;
- end;
-
-
- { TPersonList }
- TPersonList = class(TtiObjectList)
- private
- protected
- function GetItems(i: integer): TPerson; reintroduce;
- procedure SetItems(i: integer; const Value: TPerson); reintroduce;
- public
- property Items[i: integer]: TPerson read GetItems write SetItems;
- procedure Add(const pObject: TPerson); reintroduce;
- end;
-
-
-function GeneratePersonList: TPersonList;
-
-
-implementation
-uses
- Constants
- ;
-
-
-function GeneratePersonList: TPersonList;
-var
- lData: TPerson;
-begin
- Result := TPersonList.Create;
-
- lData := TPerson.Create;
- lData.Name := 'Graeme Geldenhuys';
- lData.Age := 23;
- Result.Add(lData);
-
- lData := TPerson.Create;
- lData.Name := 'Peter Hinrichsen';
- lData.Age := 34;
- Result.Add(lData);
-
- //lData := TPerson.Create;
- //lData.Name := 'Ian Krigsman';
- //lData.Age := 45;
- //lData.Deleted := True;
- //Result.Add(lData);
-
- lData := TPerson.Create;
- lData.Name := 'John Guthrie';
- lData.Age := 56;
- Result.Add(lData);
-end;
-
-
-{ TPerson }
-
-function TPerson.IsValid(const pErrors: TtiObjectErrors): Boolean;
-begin
- inherited IsValid(pErrors);
-
- if Name = '' then
- pErrors.AddError('Name', cNameMissing);
-
- if (Age < 1) or (Age > 100) then
- pErrors.AddError('Age', cAgeOutofRange);
-
- Result := pErrors.Count = 0;
-end;
-
-{ This was used for debugging, so you can see when NotifiObservers get called }
-procedure TPerson.NotifyObservers;
-begin
-// writeln('NotifyObservers');
- inherited NotifyObservers;
-end;
-
-procedure TPerson.SetAge(const Value: integer);
-begin
- { BeginUpdate and EndUpdate are optional. They allow the observers to only
- get updated once, and not continuous for small updates. It doesn't really
- make a difference for this simple example though. }
- BeginUpdate;
- FAge := Value;
- EndUpdate;
- { If you don't use BeginUpdate and EndUpdate, you need to call NotifyObserver
- to they can be updated. }
-// NotifyObservers;
-end;
-
-procedure TPerson.SetMemento(const AValue: TPersonMemento);
-begin
- // Update the Person state from the memento. Only if their OID's match.
- if (OID.AsString = AValue.FOID) then
- begin
- FName := AValue.FName;
- FAge := AValue.FAge;
- FGender := AValue.FGender;
- ObjectState := AValue.FObjectState;
- end;
-end;
-
-function TPerson.GetCaption: string;
-begin
- Result := Name;
- if Deleted then
- Result := Result + ' (deleted)';
-end;
-
-procedure TPerson.DoGetFieldBounds(const AFieldName: String; var MinValue,
- MaxValue: Integer; var HasBounds: Boolean);
-begin
- if AFieldName = 'Name' then
- begin
-// writeln(' Name - DoGetFieldBounds');
- HasBounds := True;
- MinValue := 1;
- MaxValue := 25;
- end
- else if AFieldName = 'Age' then
- begin
-// writeln(' Age - DoGetFieldBounds');
- HasBounds := True;
- MinValue := 1;
- MaxValue := 100;
- end
- else
- begin
-// writeln(' unknown property <', AFieldName, '> - DoGetFieldBounds');
- inherited DoGetFieldBounds(AFieldName, MinValue, MaxValue, HasBounds);
- end;
-end;
-
-constructor TPerson.Create;
-begin
- inherited Create;
- FGender := genMale;
-end;
-
-procedure TPerson.SetName(const Value: string);
-begin
- BeginUpdate;
- FName := Value;
- EndUpdate;
-end;
-
-procedure TPerson.SetGender(const AValue: TGender);
-begin
- if FGender = AValue then exit;
- BeginUpdate;
- FGender := AValue;
- EndUpdate;
-end;
-
-function TPerson.GetGenderGUI: string;
-begin
- result := cGender[FGender];
-end;
-
-function TPerson.GetMemento: TPersonMemento;
-begin
- // Create a new memento, store the Centre state and return it.
- Result := TPersonMemento.Create;
- Result.FOID := OID.AsString;
- Result.FObjectState := ObjectState;
- Result.FName := FName;
- Result.FAge := FAge;
- Result.FGender := FGender;
-end;
-
-procedure TPerson.SetGenderGUI(const AValue: string);
-var
- i: TGender;
-begin
- for i := Low(TGender) to High(TGender) do
- begin
- if cGender[i] = AValue then
- begin
- Gender := i;
- Exit; //==>
- end;
- end;
- Gender := genMale;
-end;
-
-
-{ TPersonList }
-
-function TPersonList.GetItems(i: integer): TPerson;
-begin
- result := TPerson(inherited GetItems(i));
-end;
-
-procedure TPersonList.SetItems(i: integer; const Value: TPerson);
-begin
- inherited SetItems(i, Value);
-end;
-
-procedure TPersonList.Add(const pObject: TPerson);
-begin
- BeginUpdate;
- inherited Add(pObject);
- EndUpdate;
-end;
-
-
-end.
-
diff --git a/extras/tiopf/demos/Common/Model_View.pas b/extras/tiopf/demos/Common/Model_View.pas
deleted file mode 100644
index ceac389f..00000000
--- a/extras/tiopf/demos/Common/Model_View.pas
+++ /dev/null
@@ -1,52 +0,0 @@
-unit Model_View;
-
-{$IFDEF FPC}
- {$mode objfpc}{$H+}
-{$ENDIF}
-
-interface
-
-uses
- Classes
- ,tiMediators
- ;
-
-type
- { TMemo - Name }
- TPerson_Name_Memo_Mediator = class(TtiMemoMediatorView)
- protected
- procedure SetupGUIandObject; override;
- end;
-
-
-implementation
-
-uses
- Model, tiBaseMediator;
-
-
-procedure RegisterMediators;
-begin
- // Fallbacks (generic)
- RegisterFallBackMediators;
-
- // Specific
- gMediatorManager.RegisterMediator(TPerson_Name_Memo_Mediator, TPerson, 'Name');
-end;
-
-
-{ TPerson_Name_Memo_Mediator }
-
-procedure TPerson_Name_Memo_Mediator.SetupGUIandObject;
-begin
- inherited SetupGUIandObject;
- View.Enabled := False; // fpGUI doesn't have a ReadOnly property yet
-end;
-
-
-initialization
- { Register all your Mediator Views here }
- RegisterMediators;
-
-end.
-
diff --git a/extras/tiopf/demos/Common/frm_pickdatabase.pas b/extras/tiopf/demos/Common/frm_pickdatabase.pas
deleted file mode 100644
index 7dcee309..00000000
--- a/extras/tiopf/demos/Common/frm_pickdatabase.pas
+++ /dev/null
@@ -1,361 +0,0 @@
-unit frm_pickdatabase;
-
-{$mode objfpc}{$H+}
-
-interface
-
-uses
- SysUtils
- ,Classes
- ,contnrs
- // fpGUI
- ,fpg_base
- ,fpg_main
- ,fpg_form
- ,fpg_button
- ,fpg_edit
- ,fpg_combobox
- ,fpg_tab
- ,fpg_label
- // tiOPF
- ,tiPersistenceLayers
- ;
-
-
-const
- cINIIdentLastPerLayer = 'LastPerLayer';
-
-type
-
- TPickDatabaseForm = class(TfpgForm)
- private
- {@VFD_HEAD_BEGIN: PickDatabaseForm}
- PageControl1: TfpgPageControl;
- tsDatabase: TfpgTabSheet;
- btnReset: TfpgButton;
- Label1: TfpgLabel;
- cbPersistenceLayer: TfpgComboBox;
- Label2: TfpgLabel;
- edtDatabaseName: TfpgEdit;
- Label3: TfpgLabel;
- edtUsername: TfpgEdit;
- Label4: TfpgLabel;
- edtPassword: TfpgEdit;
- btnDone: TfpgButton;
- {@VFD_HEAD_END: PickDatabaseForm}
- FSingleUserPersistenceLayers: TObjectList;
- function GetDatabaseName: string;
- function GetPassword: string;
- function GetPersistenceLayerName: string;
- function GetUserName: string;
- procedure SetPersistenceLayer(const APersistenceLayerName: string);
- procedure RegisterPersistenceLayersAsTests;
- procedure RegisterPersistenceLayerAsTest(const APersistenceLayer: TtiPersistenceLayer);
- procedure FormShow(Sender: TObject);
- procedure PersistenceLayerChanged(Sender: TObject);
- procedure DefaultToPresetValuesClick(Sender: TObject);
- protected
- function GetDataDir: string; virtual;
- public
- constructor Create(AOwner: TComponent); override;
- procedure AfterCreate; override;
- property SingleUserPersistenceLayers: TObjectList read FSingleUserPersistenceLayers;
- property PersistenceLayerName: string read GetPersistenceLayerName;
- property DatabaseName : string read GetDatabaseName;
- property UserName : string read GetUserName;
- property Password : string read GetPassword;
- end;
-
-{@VFD_NEWFORM_DECL}
-
-implementation
-
-uses
- tiConstants
- ,tiUtils
- ,tiOPFManager
- ,tiINI
- ;
-
-{@VFD_NEWFORM_IMPL}
-
-function TPickDatabaseForm.GetDatabaseName: string;
-begin
- Result := edtDatabaseName.Text;
-end;
-
-function TPickDatabaseForm.GetPassword: string;
-begin
- Result := edtPassword.Text;
-end;
-
-function TPickDatabaseForm.GetPersistenceLayerName: string;
-begin
- Result := cbPersistenceLayer.Text;
-end;
-
-function TPickDatabaseForm.GetUserName: string;
-begin
- Result := edtUsername.Text;
-end;
-
-procedure TPickDatabaseForm.SetPersistenceLayer(const APersistenceLayerName: string);
-var
- LPL: TtiPersistenceLayer;
- LDefaults: TtiPersistenceLayerDefaults;
-begin
- LPL:= GTIOPFManager.PersistenceLayers.FindByPersistenceLayerName(APersistenceLayerName);
- if LPL<>nil then
- begin
- LDefaults:= TtiPersistenceLayerDefaults.Create;
- try
- LPL.AssignPersistenceLayerDefaults(LDefaults);
- cbPersistenceLayer.Text := LDefaults.PersistenceLayerName;
- edtDatabaseName.Text := ExpandFileName(GetDataDir + LDefaults.DatabaseName);
- edtUserName.Text := LDefaults.UserName;
- edtPassword.Text := LDefaults.Password;
- gINI.WriteString(Name, cINIIdentLastPerLayer, LDefaults.PersistenceLayerName);
- finally
- LDefaults.Free;
- end;
- end else
- begin
- cbPersistenceLayer.FocusItem := -1;
- edtDatabaseName.Text := '';
- edtUserName.Text := '';
- edtPassword.Text := '';
- end;
-end;
-
-procedure TPickDatabaseForm.RegisterPersistenceLayersAsTests;
-var
- i: integer;
-begin
- for i := 0 to GTIOPFManager.PersistenceLayers.Count - 1 do
- RegisterPersistenceLayerAsTest(GTIOPFManager.PersistenceLayers.Items[i]);
-end;
-
-procedure TPickDatabaseForm.RegisterPersistenceLayerAsTest(const APersistenceLayer: TtiPersistenceLayer);
-var
- LDefaults: TtiPersistenceLayerDefaults;
-begin
- Assert(APersistenceLayer.TestValid, CTIErrorInvalidObject);
- LDefaults:= TtiPersistenceLayerDefaults.Create;
- try
- APersistenceLayer.AssignPersistenceLayerDefaults(LDefaults);
- cbPersistenceLayer.Items.Add(LDefaults.PersistenceLayerName);
- finally
- LDefaults.Free;
- end;
-end;
-
-procedure TPickDatabaseForm.FormShow(Sender: TObject);
-var
- lLastPerLayer: string;
-begin
- PageControl1.ActivePageIndex := 0;
- RegisterPersistenceLayersAsTests;
- lLastPerLayer := gINI.ReadString(Name, 'LastPerLayer', '');
- SetPersistenceLayer(lLastPerLayer);
-end;
-
-procedure TPickDatabaseForm.PersistenceLayerChanged(Sender: TObject);
-begin
- SetPersistenceLayer(cbPersistenceLayer.Text);
-end;
-
-procedure TPickDatabaseForm.DefaultToPresetValuesClick(Sender: TObject);
-begin
- SetPersistenceLayer(cbPersistenceLayer.Text);
-end;
-
-function TPickDatabaseForm.GetDataDir: string;
-var
- dir: string;
-begin
- dir := tiAddTrailingSlash(tiGetAppDataDirPrivate) + '_Data\';
- result := ExpandFileName(tiFixPathDelim(dir));
-end;
-
-constructor TPickDatabaseForm.Create(AOwner: TComponent);
-begin
- inherited Create(AOwner);
- OnShow := @FormShow;
- FSingleUserPersistenceLayers := TObjectList.Create(False);
-end;
-
-procedure TPickDatabaseForm.AfterCreate;
-begin
- {@VFD_BODY_BEGIN: PickDatabaseForm}
- Name := 'PickDatabaseForm';
- SetPosition(301, 186, 464, 248);
- WindowTitle := 'Pick Database';
-
- PageControl1 := TfpgPageControl.Create(self);
- with PageControl1 do
- begin
- Name := 'PageControl1';
- SetPosition(8, 12, 446, 224);
- Anchors := [anLeft,anRight,anTop,anBottom];
- ActivePageIndex := 0;
- ParentShowHint := True;
- TabOrder := 0;
- end;
-
- tsDatabase := TfpgTabSheet.Create(PageControl1);
- with tsDatabase do
- begin
- Name := 'tsDatabase';
- SetPosition(3, 24, 440, 197);
- Text := 'Database';
- end;
-
- btnReset := TfpgButton.Create(tsDatabase);
- with btnReset do
- begin
- Name := 'btnReset';
- SetPosition(296, 24, 132, 24);
- Text := 'Reset to Defaults';
- AllowAllUp := False;
- Embedded := False;
- Flat := False;
- FontDesc := '#Label1';
- GroupIndex := 0;
- Hint := '';
- ImageLayout := ilImageLeft;
- ImageMargin := 3;
- ImageName := '';
- ImageSpacing := -1;
- ParentShowHint := True;
- ShowImage := True;
- TabOrder := 0;
- OnClick := @DefaultToPresetValuesClick;
- end;
-
- Label1 := TfpgLabel.Create(tsDatabase);
- with Label1 do
- begin
- Name := 'Label1';
- SetPosition(8, 4, 220, 18);
- Alignment := taLeftJustify;
- FontDesc := '#Label1';
- Hint := '';
- Layout := tlTop;
- ParentShowHint := True;
- Text := 'Persistence Layer';
- WrapText := False;
- end;
-
- cbPersistenceLayer := TfpgComboBox.Create(tsDatabase);
- with cbPersistenceLayer do
- begin
- Name := 'cbPersistenceLayer';
- SetPosition(8, 24, 268, 24);
- FontDesc := '#List';
- ParentShowHint := True;
- TabOrder := 2;
- OnChange :=@PersistenceLayerChanged;
- end;
-
- Label2 := TfpgLabel.Create(tsDatabase);
- with Label2 do
- begin
- Name := 'Label2';
- SetPosition(8, 50, 232, 18);
- Alignment := taLeftJustify;
- FontDesc := '#Label1';
- Hint := '';
- Layout := tlTop;
- ParentShowHint := True;
- Text := 'Database Name';
- WrapText := False;
- end;
-
- edtDatabaseName := TfpgEdit.Create(tsDatabase);
- with edtDatabaseName do
- begin
- Name := 'edtDatabaseName';
- SetPosition(8, 68, 268, 24);
- TabOrder := 4;
- Text := '';
- FontDesc := '#Edit1';
- ParentShowHint := True;
- end;
-
- Label3 := TfpgLabel.Create(tsDatabase);
- with Label3 do
- begin
- Name := 'Label3';
- SetPosition(8, 94, 232, 18);
- Alignment := taLeftJustify;
- FontDesc := '#Label1';
- Hint := '';
- Layout := tlTop;
- ParentShowHint := True;
- Text := 'Username';
- WrapText := False;
- end;
-
- edtUsername := TfpgEdit.Create(tsDatabase);
- with edtUsername do
- begin
- Name := 'edtUsername';
- SetPosition(8, 112, 268, 24);
- TabOrder := 6;
- Text := '';
- FontDesc := '#Edit1';
- ParentShowHint := True;
- end;
-
- Label4 := TfpgLabel.Create(tsDatabase);
- with Label4 do
- begin
- Name := 'Label4';
- SetPosition(8, 138, 232, 18);
- Alignment := taLeftJustify;
- FontDesc := '#Label1';
- Hint := '';
- Layout := tlTop;
- ParentShowHint := True;
- Text := 'Password';
- WrapText := False;
- end;
-
- edtPassword := TfpgEdit.Create(tsDatabase);
- with edtPassword do
- begin
- Name := 'edtPassword';
- SetPosition(8, 156, 268, 24);
- TabOrder := 8;
- Text := '';
- FontDesc := '#Edit1';
- ParentShowHint := True;
- end;
-
- btnDone := TfpgButton.Create(tsDatabase);
- with btnDone do
- begin
- Name := 'btnDone';
- SetPosition(296, 156, 132, 24);
- Text := 'DONE';
- AllowAllUp := False;
- Embedded := False;
- Flat := False;
- FontDesc := '#Label1';
- GroupIndex := 0;
- Hint := '';
- ImageLayout := ilImageLeft;
- ImageMargin := 3;
- ImageName := '';
- ImageSpacing := -1;
- ParentShowHint := True;
- ShowImage := True;
- TabOrder := 11;
- ModalResult := mrOK;
- end;
-
- {@VFD_BODY_END: PickDatabaseForm}
-end;
-
-
-end.
diff --git a/extras/tiopf/demos/Demo_04_CreateDatabase/demo_04.lpi b/extras/tiopf/demos/Demo_04_CreateDatabase/demo_04.lpi
deleted file mode 100644
index 34df30b5..00000000
--- a/extras/tiopf/demos/Demo_04_CreateDatabase/demo_04.lpi
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0"?>
-<CONFIG>
- <ProjectOptions>
- <Version Value="7"/>
- <General>
- <Flags>
- <SaveOnlyProjectUnits Value="True"/>
- <LRSInOutputDirectory Value="False"/>
- </Flags>
- <SessionStorage Value="InProjectDir"/>
- <MainUnit Value="0"/>
- <TargetFileExt Value=""/>
- </General>
- <VersionInfo>
- <ProjectVersion Value=""/>
- </VersionInfo>
- <PublishOptions>
- <Version Value="2"/>
- <IgnoreBinaries Value="False"/>
- <IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/>
- <ExcludeFileFilter Value="*.(bak|ppu|ppw|o|so);*~;backup"/>
- </PublishOptions>
- <RunParams>
- <local>
- <FormatVersion Value="1"/>
- <LaunchingApplication PathPlusParams="/usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/>
- </local>
- </RunParams>
- <RequiredPackages Count="2">
- <Item1>
- <PackageName Value="tiOPFfpGUI"/>
- </Item1>
- <Item2>
- <PackageName Value="fpgui_toolkit"/>
- </Item2>
- </RequiredPackages>
- <Units Count="3">
- <Unit0>
- <Filename Value="demo_04.lpr"/>
- <IsPartOfProject Value="True"/>
- <UnitName Value="demo_04"/>
- </Unit0>
- <Unit1>
- <Filename Value="../Common/frm_pickdatabase.pas"/>
- <IsPartOfProject Value="True"/>
- <UnitName Value="frm_pickdatabase"/>
- </Unit1>
- <Unit2>
- <Filename Value="frm_main.pas"/>
- <IsPartOfProject Value="True"/>
- <UnitName Value="frm_main"/>
- </Unit2>
- </Units>
- </ProjectOptions>
- <CompilerOptions>
- <Version Value="8"/>
- <SearchPaths>
- <OtherUnitFiles Value="../Common/"/>
- <UnitOutputDirectory Value="units/$(TargetCPU)-$(TargetOS)"/>
- </SearchPaths>
- <Parsing>
- <SyntaxOptions>
- <CStyleOperator Value="False"/>
- </SyntaxOptions>
- </Parsing>
- <Other>
- <CompilerPath Value="$(CompPath)"/>
- </Other>
- </CompilerOptions>
-</CONFIG>
diff --git a/extras/tiopf/demos/Demo_04_CreateDatabase/demo_04.lpr b/extras/tiopf/demos/Demo_04_CreateDatabase/demo_04.lpr
deleted file mode 100644
index d7ff4605..00000000
--- a/extras/tiopf/demos/Demo_04_CreateDatabase/demo_04.lpr
+++ /dev/null
@@ -1,39 +0,0 @@
-program demo_04;
-
-{$mode objfpc}{$H+}
-
-uses
- {$IFDEF UNIX}{$IFDEF UseCThreads}
- cthreads,
- {$ENDIF}{$ENDIF}
- Classes
- ,SysUtils
- ,fpg_main
- ,tiOPFManager
- ,tiConstants
- ,frm_main
- ;
-
-
-
-procedure MainProc;
-var
- frm: TMainForm;
-begin
- fpgApplication.Initialize;
- frm := TMainForm.Create(nil);
- try
- frm.Show;
- fpgApplication.Run;
- finally
- frm.Free;
- gTIOPFManager.Terminate;
- end;
-end;
-
-begin
- MainProc;
-end.
-
-
-
diff --git a/extras/tiopf/demos/Demo_04_CreateDatabase/frm_main.pas b/extras/tiopf/demos/Demo_04_CreateDatabase/frm_main.pas
deleted file mode 100644
index cee11cd0..00000000
--- a/extras/tiopf/demos/Demo_04_CreateDatabase/frm_main.pas
+++ /dev/null
@@ -1,176 +0,0 @@
-unit frm_main;
-
-{$mode objfpc}{$H+}
-
-interface
-
-uses
- SysUtils, Classes, fpg_base, fpg_main, fpg_form, fpg_button, fpg_panel;
-
-type
-
- TMainForm = class(TfpgForm)
- private
- {@VFD_HEAD_BEGIN: MainForm}
- btnPickDB: TfpgButton;
- btnCreateDB: TfpgButton;
- btnDBExists: TfpgButton;
- pnlDBName: TfpgPanel;
- {@VFD_HEAD_END: MainForm}
- FPersistenceLayerName: string;
- FDatabaseName: string;
- FUsername: string;
- FPassword: string;
- procedure PickDBClicked(Sender: TObject);
- procedure DatabaseExistsClicked(Sender: TObject);
- procedure CreateDatabaseClicked(Sender: TObject);
- public
- procedure AfterCreate; override;
- end;
-
-{@VFD_NEWFORM_DECL}
-
-implementation
-
-uses
- frm_pickdatabase
- ,fpg_dialogs
- ,tiOPFManager
- ,tiPersistenceLayers
- ,tiDialogs
- ;
-
-{@VFD_NEWFORM_IMPL}
-
-procedure TMainForm.PickDBClicked(Sender: TObject);
-var
- frm: TPickDatabaseForm;
-begin
- frm := TPickDatabaseForm.Create(nil);
- try
- if frm.ShowModal = mrOK then
- begin
- FPersistenceLayerName := frm.PersistenceLayerName;
- FDatabaseName := frm.DatabaseName;
- FUsername := frm.UserName;
- FPassword := frm.Password;
- pnlDBName.Text := frm.DatabaseName;
- end;
- finally
- frm.Free;
- end;
-end;
-
-procedure TMainForm.DatabaseExistsClicked(Sender: TObject);
-var
- LPerLayer: TtiPersistenceLayer;
-begin
- LPerLayer:= GTIOPFManager.PersistenceLayers.FindByPersistenceLayerName(FPersistenceLayerName);
- Assert(LPerLayer<>nil, '"' + FPersistenceLayerName + '" not registered');
- if LPerLayer.DatabaseExists(FDatabaseName, FUserName, FPassword)
- then
- tiAppMessage('Database <' + FDatabaseName + '> exists.')
- else
- tiAppWarning('Database <' + FDatabaseName + '> does not exist.');
-end;
-
-procedure TMainForm.CreateDatabaseClicked(Sender: TObject);
-var
- LPerLayer: TtiPersistenceLayer;
-begin
- LPerLayer:= GTIOPFManager.PersistenceLayers.FindByPersistenceLayerName(FPersistenceLayerName);
- Assert(LPerLayer<>nil, '"' + FPersistenceLayerName + '" not registered');
- LPerLayer.CreateDatabase(FDatabaseName, FUserName, FPassword);
- tiAppMessage('Database "' + FDatabaseName + '" has been created.');
-end;
-
-procedure TMainForm.AfterCreate;
-begin
- {@VFD_BODY_BEGIN: MainForm}
- Name := 'MainForm';
- SetPosition(312, 189, 359, 182);
- WindowTitle := 'Demo 04 - Create Database';
- WindowPosition := wpScreenCenter;
-
- btnPickDB := TfpgButton.Create(self);
- with btnPickDB do
- begin
- Name := 'btnPickDB';
- SetPosition(108, 20, 144, 24);
- Text := 'Pick Database';
- AllowAllUp := False;
- Embedded := False;
- Flat := False;
- FontDesc := '#Label1';
- GroupIndex := 0;
- Hint := '';
- ImageLayout := ilImageLeft;
- ImageMargin := 3;
- ImageName := '';
- ImageSpacing := -1;
- ParentShowHint := True;
- ShowImage := True;
- TabOrder := 0;
- OnClick := @PickDBClicked;
- end;
-
- btnCreateDB := TfpgButton.Create(self);
- with btnCreateDB do
- begin
- Name := 'btnCreateDB';
- SetPosition(108, 96, 136, 24);
- Text := 'Create Database';
- AllowAllUp := False;
- Embedded := False;
- Flat := False;
- FontDesc := '#Label1';
- GroupIndex := 0;
- Hint := '';
- ImageLayout := ilImageLeft;
- ImageMargin := 3;
- ImageName := '';
- ImageSpacing := -1;
- ParentShowHint := True;
- ShowImage := True;
- TabOrder := 1;
- OnClick := @CreateDatabaseClicked;
- end;
-
- btnDBExists := TfpgButton.Create(self);
- with btnDBExists do
- begin
- Name := 'btnDBExists';
- SetPosition(108, 128, 136, 24);
- Text := 'Database Exists';
- AllowAllUp := False;
- Embedded := False;
- Flat := False;
- FontDesc := '#Label1';
- GroupIndex := 0;
- Hint := '';
- ImageLayout := ilImageLeft;
- ImageMargin := 3;
- ImageName := '';
- ImageSpacing := -1;
- ParentShowHint := True;
- ShowImage := True;
- TabOrder := 2;
- OnClick := @DatabaseExistsClicked;
- end;
-
- pnlDBName := TfpgPanel.Create(self);
- with pnlDBName do
- begin
- Name := 'pnlDBName';
- SetPosition(12, 56, 336, 32);
- Anchors := [anLeft,anRight,anTop];
- ParentShowHint := True;
- Style := bsLowered;
- Text := '---';
- end;
-
- {@VFD_BODY_END: MainForm}
-end;
-
-
-end.
diff --git a/extras/tiopf/demos/Demo_06_CreateTable/demo_06.lpi b/extras/tiopf/demos/Demo_06_CreateTable/demo_06.lpi
deleted file mode 100644
index 4a8402a2..00000000
--- a/extras/tiopf/demos/Demo_06_CreateTable/demo_06.lpi
+++ /dev/null
@@ -1,64 +0,0 @@
-<?xml version="1.0"?>
-<CONFIG>
- <ProjectOptions>
- <Version Value="7"/>
- <General>
- <Flags>
- <SaveOnlyProjectUnits Value="True"/>
- <MainUnitHasCreateFormStatements Value="False"/>
- <MainUnitHasTitleStatement Value="False"/>
- <LRSInOutputDirectory Value="False"/>
- </Flags>
- <SessionStorage Value="InProjectDir"/>
- <MainUnit Value="0"/>
- <TargetFileExt Value=""/>
- </General>
- <VersionInfo>
- <ProjectVersion Value=""/>
- </VersionInfo>
- <PublishOptions>
- <Version Value="2"/>
- <IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/>
- <ExcludeFileFilter Value="*.(bak|ppu|ppw|o|so);*~;backup"/>
- </PublishOptions>
- <RunParams>
- <local>
- <FormatVersion Value="1"/>
- <LaunchingApplication PathPlusParams="/usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/>
- </local>
- </RunParams>
- <RequiredPackages Count="1">
- <Item1>
- <PackageName Value="tiOPFfpGUI"/>
- </Item1>
- </RequiredPackages>
- <Units Count="2">
- <Unit0>
- <Filename Value="demo_06.lpr"/>
- <IsPartOfProject Value="True"/>
- <UnitName Value="demo_06"/>
- </Unit0>
- <Unit1>
- <Filename Value="frm_main.pas"/>
- <IsPartOfProject Value="True"/>
- <UnitName Value="frm_main"/>
- </Unit1>
- </Units>
- </ProjectOptions>
- <CompilerOptions>
- <Version Value="8"/>
- <SearchPaths>
- <UnitOutputDirectory Value="units/$(TargetCPU)-$(TargetOS)"/>
- </SearchPaths>
- <Parsing>
- <SyntaxOptions>
- <AllowLabel Value="False"/>
- <CPPInline Value="False"/>
- </SyntaxOptions>
- </Parsing>
- <Other>
- <CustomOptions Value="-dUseCThreads"/>
- <CompilerPath Value="$(CompPath)"/>
- </Other>
- </CompilerOptions>
-</CONFIG>
diff --git a/extras/tiopf/demos/Demo_06_CreateTable/demo_06.lpr b/extras/tiopf/demos/Demo_06_CreateTable/demo_06.lpr
deleted file mode 100644
index 8e966dc7..00000000
--- a/extras/tiopf/demos/Demo_06_CreateTable/demo_06.lpr
+++ /dev/null
@@ -1,45 +0,0 @@
-program demo_06;
-
-{$mode objfpc}{$H+}
-
-uses
- {$IFDEF UNIX}{$IFDEF UseCThreads}
- cthreads,
- {$ENDIF}{$ENDIF}
- Classes, SysUtils,
- fpg_main, frm_main, tiOPFManager, tiConstants;
-
-
-procedure MainProc;
-var
- frm: TMainForm;
-begin
- fpgApplication.Initialize;
-
- if GTIOPFManager.PersistenceLayers.FindByPersistenceLayerName(cTIPersistFBL) = nil then
- raise Exception.Create('The system failed to find the <' + cTIPersistFBL + '> persistence layer')
- else
- GTIOPFManager.DefaultPersistenceLayerName := cTIPersistFBL;
-
- // Change the connection string to suite your database location
- // ** Remote connection
-// gTIOPFManager.ConnectDatabase('192.168.0.54|/home/graemeg/programming/data/tiopf.fdb', 'sysdba', 'masterkey');
- // ** Local connection
- gTIOPFManager.ConnectDatabase('/home/graemeg/programming/data/tiopf.fdb', 'sysdba', 'masterkey');
-
- frm := TMainForm.Create(nil);
- try
- frm.Show;
- fpgApplication.Run;
- finally
- frm.Free;
- gTIOPFManager.DisconnectDatabase;
- gTIOPFManager.Terminate;
- end;
-end;
-
-begin
- MainProc;
-end.
-
-
diff --git a/extras/tiopf/demos/Demo_06_CreateTable/frm_main.pas b/extras/tiopf/demos/Demo_06_CreateTable/frm_main.pas
deleted file mode 100644
index f413aa38..00000000
--- a/extras/tiopf/demos/Demo_06_CreateTable/frm_main.pas
+++ /dev/null
@@ -1,205 +0,0 @@
-unit frm_main;
-
-{$mode objfpc}{$H+}
-
-interface
-
-uses
- SysUtils, Classes,
- fpg_main, fpg_widget, fpg_form, fpg_label, fpg_button,
- fpg_memo, fpg_dialogs;
-
-type
-
- TMainForm = class(TfpgForm)
- private
- procedure btnCreateTableClick(Sender: TObject);
- procedure btnDropTableClick(Sender: TObject);
- procedure btnShowMetaDataClick(Sender: TObject);
- procedure btnTableExistsClick(Sender: TObject);
- public
- {@VFD_HEAD_BEGIN: MainForm}
- lblConnectedTo: TfpgLabel;
- btnCreateTable: TfpgButton;
- btnDropTable: TfpgButton;
- btnShowMetaData: TfpgButton;
- btnTableExists: TfpgButton;
- memName1: TfpgMemo;
- {@VFD_HEAD_END: MainForm}
- constructor Create(AOwner: TComponent); override;
- procedure AfterCreate; override;
- end;
-
-{@VFD_NEWFORM_DECL}
-
-implementation
-
-uses
- tiQuery
- ,tiOPFManager
- ,tiOIDGUID
- ,tiDialogs
- ;
-
-{@VFD_NEWFORM_IMPL}
-
-procedure TMainForm.btnCreateTableClick(Sender: TObject);
-var
- LTableMetaData: TtiDBMetaDataTable;
-begin
- LTableMetaData:= TtiDBMetaDataTable.Create;
- try
- LTableMetaData.Name:= 'Client';
- LTableMetaData.AddField('OID', qfkString, 36); // Using GUID OIDs
- LTableMetaData.AddField('Client_Name', qfkString, 200);
- LTableMetaData.AddField('Client_ID', qfkString, 9);
- gTIOPFManager.CreateTable(LTableMetaData);
- finally
- LTableMetaData.Free;
- end;
- ShowMessage('Table ''Client'' created');
-end;
-
-procedure TMainForm.btnDropTableClick(Sender: TObject);
-begin
- gTIOPFManager.DropTable('Client');
- ShowMessage('Table ''Client'' dropped');
-end;
-
-procedure TMainForm.btnShowMetaDataClick(Sender: TObject);
-var
- LTableMetaData: TtiDBMetaDataTable;
- LDatabase : TtiDatabase;
-begin
- LTableMetaData:= TtiDBMetaDataTable.Create;
- try
- LTableMetaData.Name:= 'Client';
- LDatabase:= gTIOPFManager.DefaultDBConnectionPool.Lock;
- try
- LDatabase.ReadMetaDataFields(LTableMetaData);
- tiShowMessage(LTableMetaData.AsDebugString);
- finally
- gTIOPFManager.DefaultDBConnectionPool.UnLock(LDatabase);
- end;
- finally
- LTableMetaData.Free;
- end;
-end;
-
-procedure TMainForm.btnTableExistsClick(Sender: TObject);
-var
- LDBMetaData: TtiDBMetaData;
- LDatabase : TtiDatabase;
-begin
- LDBMetaData:= TtiDBMetaData.Create;
- try
- LDatabase:= gTIOPFManager.DefaultDBConnectionPool.Lock;
- try
- LDatabase.ReadMetaDataTables(LDBMetaData);
- if LDBMetaData.FindByTableName('Client') <> nil then
- ShowMessage('Table <Client> exists')
- else
- ShowMessage('Table <Client> does not exist');
- finally
- gTIOPFManager.DefaultDBConnectionPool.UnLock(LDatabase);
- end;
- finally
- LDBMetaData.Free;
- end;
-end;
-
-constructor TMainForm.Create(AOwner: TComponent);
-begin
- inherited Create(AOwner);
- lblConnectedTo.Text := 'Connected to: ' + gTIOPFManager.DefaultDBConnectionName;
-end;
-
-procedure TMainForm.AfterCreate;
-begin
- {@VFD_BODY_BEGIN: MainForm}
- Name := 'MainForm';
- SetPosition(738, 153, 389, 250);
- WindowTitle := 'Create table demo';
- WindowPosition := wpScreenCenter;
- Sizeable := False;
-
- lblConnectedTo := TfpgLabel.Create(self);
- with lblConnectedTo do
- begin
- Name := 'lblConnectedTo';
- SetPosition(4, 4, 380, 16);
- Text := 'Connected To:';
- FontDesc := '#Label1';
- end;
-
- btnCreateTable := TfpgButton.Create(self);
- with btnCreateTable do
- begin
- Name := 'btnCreateTable';
- SetPosition(280, 24, 103, 24);
- Text := 'Create Table';
- FontDesc := '#Label1';
- ImageName := '';
- OnClick := @btnCreateTableClick;
- end;
-
- btnDropTable := TfpgButton.Create(self);
- with btnDropTable do
- begin
- Name := 'btnDropTable';
- SetPosition(280, 52, 103, 24);
- Text := 'Drop Table';
- FontDesc := '#Label1';
- ImageName := '';
- OnClick := @btnDropTableClick;
- end;
-
- btnShowMetaData := TfpgButton.Create(self);
- with btnShowMetaData do
- begin
- Name := 'btnShowMetaData';
- SetPosition(280, 80, 103, 24);
- Text := 'Show metadata';
- FontDesc := '#Label1';
- ImageName := '';
- OnClick := @btnShowMetaDataClick;
- end;
-
- btnTableExists := TfpgButton.Create(self);
- with btnTableExists do
- begin
- Name := 'btnTableExists';
- SetPosition(280, 108, 103, 24);
- Text := 'Table exists?';
- FontDesc := '#Label1';
- ImageName := '';
- OnClick := @btnTableExistsClick;
- end;
-
- memName1 := TfpgMemo.Create(self);
- with memName1 do
- begin
- Name := 'memName1';
- SetPosition(4, 24, 264, 220);
- Lines.Add('This demo will:');
- Lines.Add('');
- Lines.Add('a) Create a table called Client with the');
- Lines.Add(' following structure:');
- Lines.Add(' OID String(36)');
- Lines.Add(' Client_Name String(200)');
- Lines.Add(' Client_ID String(9)');
- Lines.Add('');
- Lines.Add('b) Test if a table called Client exists');
- Lines.Add('');
- Lines.Add('c) Show metadata for the Client table');
- Lines.Add('');
- Lines.Add('d) Drop the client table');
- FontDesc := '#Edit1';
- Enabled := False;
- end;
-
- {@VFD_BODY_END: MainForm}
-end;
-
-
-end.
diff --git a/extras/tiopf/demos/Demo_07_VisitorBasics/Client_BOM.pas b/extras/tiopf/demos/Demo_07_VisitorBasics/Client_BOM.pas
deleted file mode 100644
index 49195b48..00000000
--- a/extras/tiopf/demos/Demo_07_VisitorBasics/Client_BOM.pas
+++ /dev/null
@@ -1,81 +0,0 @@
-unit Client_BOM;
-
-interface
-uses
- tiObject
- ,tiOID
- ,tiOIDGUID
- ,tiVisitor
- ;
-
-type
-
- TClient = class;
- TClientList = class;
-
- TClientName = String[200];
- TClientID = String[9];
-
- TClientList = class(TtiObjectList);
-
-
- TClient = class(TtiObject)
- private
- FClientID: TClientID;
- FClientName: TClientName;
- published
- property ClientName: TClientName read FClientName write FClientName;
- property ClientID : TClientID read FClientID write FClientID;
- end;
-
-
- TClientVisitor = class(TtiVisitor)
- protected
- function AcceptVisitor: boolean; override;
- public
- procedure Execute(const AVisited: TtiVisited); override;
- end;
-
-
-procedure RegisterMappings;
-
-
-implementation
-uses
- tiOPFManager
- ,tiAutoMap
- ,tiConstants
- ,tiDialogs
- ;
-
-procedure RegisterMappings;
-begin
- // Class, Table, Property, Column, Special Info
- gTIOPFManager.ClassDBMappingMgr.RegisterMapping(TClient, 'Client', 'OID', 'OID', [pktDB]);
- gTIOPFManager.ClassDBMappingMgr.RegisterMapping(TClient, 'Client', 'ClientName', 'Client_Name' );
- gTIOPFManager.ClassDBMappingMgr.RegisterMapping(TClient, 'Client', 'ClientID', 'Client_ID' );
- gTIOPFManager.ClassDBMappingMgr.RegisterCollection(TClientList, TClient);
-end;
-
-{ TClientVisitor }
-
-function TClientVisitor.AcceptVisitor: boolean;
-begin
- // Put the code to check if this visitor should act on this object in here.
- Result:= Visited is TClient;
- // Remove this line and the visitor will touch the TClientList object
- // as well as it's owned TClient objects.
-end;
-
-procedure TClientVisitor.Execute(const AVisited: TtiVisited);
-begin
- inherited;
- if not AcceptVisitor then
- Exit;
- tiShowMessage((Visited as TtiObject).AsDebugString);
-end;
-
-end.
-
-
-
diff --git a/extras/tiopf/demos/Demo_07_VisitorBasics/demo_07.lpi b/extras/tiopf/demos/Demo_07_VisitorBasics/demo_07.lpi
deleted file mode 100644
index 10179042..00000000
--- a/extras/tiopf/demos/Demo_07_VisitorBasics/demo_07.lpi
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0"?>
-<CONFIG>
- <ProjectOptions>
- <Version Value="7"/>
- <General>
- <Flags>
- <SaveOnlyProjectUnits Value="True"/>
- <MainUnitHasCreateFormStatements Value="False"/>
- <MainUnitHasTitleStatement Value="False"/>
- <LRSInOutputDirectory Value="False"/>
- </Flags>
- <SessionStorage Value="InProjectDir"/>
- <MainUnit Value="0"/>
- <TargetFileExt Value=""/>
- </General>
- <VersionInfo>
- <ProjectVersion Value=""/>
- </VersionInfo>
- <PublishOptions>
- <Version Value="2"/>
- <IgnoreBinaries Value="False"/>
- <IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/>
- <ExcludeFileFilter Value="*.(bak|ppu|ppw|o|so);*~;backup"/>
- </PublishOptions>
- <RunParams>
- <local>
- <FormatVersion Value="1"/>
- <LaunchingApplication PathPlusParams="/usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/>
- </local>
- </RunParams>
- <RequiredPackages Count="1">
- <Item1>
- <PackageName Value="tiOPFfpGUI"/>
- </Item1>
- </RequiredPackages>
- <Units Count="3">
- <Unit0>
- <Filename Value="demo_07.lpr"/>
- <IsPartOfProject Value="True"/>
- <UnitName Value="demo_07"/>
- </Unit0>
- <Unit1>
- <Filename Value="frm_main.pas"/>
- <IsPartOfProject Value="True"/>
- <UnitName Value="frm_main"/>
- </Unit1>
- <Unit2>
- <Filename Value="Client_BOM.pas"/>
- <IsPartOfProject Value="True"/>
- <UnitName Value="Client_BOM"/>
- </Unit2>
- </Units>
- </ProjectOptions>
- <CompilerOptions>
- <Version Value="8"/>
- <SearchPaths>
- <UnitOutputDirectory Value="units/$(TargetCPU)-$(TargetOS)"/>
- </SearchPaths>
- <Parsing>
- <SyntaxOptions>
- <AllowLabel Value="False"/>
- <CPPInline Value="False"/>
- </SyntaxOptions>
- </Parsing>
- <Other>
- <CustomOptions Value="-dUseCThreads"/>
- <CompilerPath Value="$(CompPath)"/>
- </Other>
- </CompilerOptions>
-</CONFIG>
diff --git a/extras/tiopf/demos/Demo_07_VisitorBasics/demo_07.lpr b/extras/tiopf/demos/Demo_07_VisitorBasics/demo_07.lpr
deleted file mode 100644
index 125dd248..00000000
--- a/extras/tiopf/demos/Demo_07_VisitorBasics/demo_07.lpr
+++ /dev/null
@@ -1,39 +0,0 @@
-program demo_07;
-
-{$mode objfpc}{$H+}
-
-uses
- {$IFDEF UNIX}{$IFDEF UseCThreads}
- cthreads,
- {$ENDIF}{$ENDIF}
- Classes, fpg_main, frm_main, tiOIDGUID, tiOPFManager, Client_BOM;
-
-
-procedure MainProc;
-var
- frm: TMainForm;
-begin
- fpgApplication.Initialize;
-
- // Change the connection string to suite your database location
- // ** Remote connection
- //gTIOPFManager.ConnectDatabase('192.168.0.54|/home/graemeg/programming/data/tiopf.fdb', 'sysdba', 'masterkey');
- // ** Local connection
- //gTIOPFManager.ConnectDatabase('/home/graemeg/programming/data/tiopf.fdb', 'sysdba', 'masterkey');
-
- frm := TMainForm.Create(nil);
- try
- frm.Show;
- fpgApplication.Run;
- finally
- frm.Free;
- //gTIOPFManager.DisconnectDatabase;
- //gTIOPFManager.Terminate;
- end;
-end;
-
-begin
- MainProc;
-end.
-
-
diff --git a/extras/tiopf/demos/Demo_07_VisitorBasics/frm_main.pas b/extras/tiopf/demos/Demo_07_VisitorBasics/frm_main.pas
deleted file mode 100644
index 8a10f2df..00000000
--- a/extras/tiopf/demos/Demo_07_VisitorBasics/frm_main.pas
+++ /dev/null
@@ -1,131 +0,0 @@
-unit frm_main;
-
-{$mode objfpc}{$H+}
-
-interface
-
-uses
- SysUtils, Classes,
- fpg_main, fpg_form, fpg_button,
- Client_BOM;
-
-type
-
- TMainForm = class(TfpgForm)
- private
- FClientList: TClientList;
- procedure btnAddClientClick(Sender: TObject);
- procedure btnShowListClick(Sender: TObject);
- procedure btnRunClientVisitorClick(Sender: TObject);
- public
- {@VFD_HEAD_BEGIN: MainForm}
- btnAddClient: TfpgButton;
- btnShowList: TfpgButton;
- btnRunClientVisitor: TfpgButton;
- {@VFD_HEAD_END: MainForm}
- constructor Create(AOwner: TComponent); override;
- destructor Destroy; override;
- procedure AfterCreate; override;
- end;
-
-{@VFD_NEWFORM_DECL}
-
-implementation
-
-uses
- tiUtils
- ,tiDialogs
- ,tiOPFManager
- ;
-
-{@VFD_NEWFORM_IMPL}
-
-procedure TMainForm.btnAddClientClick(Sender: TObject);
-var
- lClient: TClient;
-begin
- lClient := TClient.Create;
- lClient.OID.AsString := IntToStr(tiGetTickCount); // Not how you do it in real life!
- lClient.ClientName := 'Test ' + DateTimeToStr(Now);
- lClient.ClientID := IntToStr(tiGetTickCount);
- FClientList.Add(lClient);
-end;
-
-procedure TMainForm.btnShowListClick(Sender: TObject);
-begin
- tiShowString(FClientList.AsDebugString);
-end;
-
-procedure TMainForm.btnRunClientVisitorClick(Sender: TObject);
-var
- lVis: TClientVisitor;
-begin
- lVis := TClientVisitor.Create;
- try
- FClientList.Iterate(lVis);
- finally
- lVis.Free;
- end;
-end;
-
-constructor TMainForm.Create(AOwner: TComponent);
-begin
- inherited Create(AOwner);
- FClientList := TClientList.Create;
-end;
-
-destructor TMainForm.Destroy;
-begin
-// FClientList.Save;
- FClientList.Free;
- inherited Destroy;
-end;
-
-procedure TMainForm.AfterCreate;
-begin
- {@VFD_BODY_BEGIN: MainForm}
- Name := 'MainForm';
- SetPosition(854, 117, 244, 166);
- WindowTitle := 'Visitor Basics';
- WindowPosition := wpScreenCenter;
- Sizeable := False;
-
- btnAddClient := TfpgButton.Create(self);
- with btnAddClient do
- begin
- Name := 'btnAddClient';
- SetPosition(68, 24, 107, 24);
- Text := 'Add client';
- FontDesc := '#Label1';
- ImageName := '';
- OnClick := @btnAddClientClick;
- end;
-
- btnShowList := TfpgButton.Create(self);
- with btnShowList do
- begin
- Name := 'btnShowList';
- SetPosition(68, 56, 107, 24);
- Text := 'Show list';
- FontDesc := '#Label1';
- ImageName := '';
- OnClick := @btnShowListClick;
- end;
-
- btnRunClientVisitor := TfpgButton.Create(self);
- with btnRunClientVisitor do
- begin
- Name := 'btnRunClientVisitor';
- SetPosition(68, 88, 107, 24);
- Text := 'Run client visitor';
- FontDesc := '#Label1';
- ImageName := '';
- OnClick := @btnRunClientVisitorClick;
- end;
-
- {@VFD_BODY_END: MainForm}
-end;
-
-
-end.
-
diff --git a/extras/tiopf/demos/Demo_08_Collection/Client_AutoMap_Svr.pas b/extras/tiopf/demos/Demo_08_Collection/Client_AutoMap_Svr.pas
deleted file mode 100644
index 6ad1008e..00000000
--- a/extras/tiopf/demos/Demo_08_Collection/Client_AutoMap_Svr.pas
+++ /dev/null
@@ -1,25 +0,0 @@
-unit Client_AutoMap_Svr;
-
-{$mode objfpc}{$H+}
-
-interface
-
-procedure RegisterMappings;
-
-implementation
-uses
- tiOPFManager
- ,tiAutoMap
- ,Client_BOM
- ;
-
-procedure RegisterMappings;
-begin
- // Class, Table, Property, Column, Special Info
- gTIOPFManager.ClassDBMappingMgr.RegisterMapping(TClient, 'Client', 'OID', 'OID', [pktDB]);
- gTIOPFManager.ClassDBMappingMgr.RegisterMapping(TClient, 'Client', 'ClientName', 'Client_Name' );
- gTIOPFManager.ClassDBMappingMgr.RegisterMapping(TClient, 'Client', 'ClientID', 'Client_ID' );
- gTIOPFManager.ClassDBMappingMgr.RegisterCollection(TClients, TClient);
-end;
-
-end.
diff --git a/extras/tiopf/demos/Demo_08_Collection/Client_BOM.pas b/extras/tiopf/demos/Demo_08_Collection/Client_BOM.pas
deleted file mode 100644
index 52775334..00000000
--- a/extras/tiopf/demos/Demo_08_Collection/Client_BOM.pas
+++ /dev/null
@@ -1,70 +0,0 @@
-unit Client_BOM;
-
-{$mode objfpc}{$H+}
-
-interface
-uses
- tiObject
- ;
-
-type
-
- TClient = class;
- TClients = class;
-
- TClientName = String[200];
- TClientID = String[9];
-
-
- TClients = class(TtiObjectList)
- public
- procedure Read; override;
- procedure Save; override;
- end;
-
-
- TClient = class(TtiObject)
- private
- FClientID: TClientID;
- FClientName: TClientName;
- public
- constructor CreateNew(const ADatabaseName: string=''; const APersistenceLayerName: string=''); override;
- published
- property ClientName: TClientName read FClientName write FClientName;
- property ClientID: TClientID read FClientID write FClientID;
- end;
-
-
-implementation
-uses
- tiOPFManager
- ,SysUtils
- ,tiUtils
- ;
-
-{ TClient }
-
-constructor TClient.CreateNew(const ADatabaseName: string = ''; const APersistenceLayerName: string = '');
-begin
- inherited;
- // Set some default values for the demo
- ClientName := 'TEST ' + DateTimeToStr(Now);
- ClientID := IntToStr(tiGetTickCount);
-end;
-
-{ TClients }
-
-procedure TClients.Read;
-begin
- inherited Read;
- NotifyObservers;
-end;
-
-procedure TClients.Save;
-begin
- inherited Save;
- NotifyObservers;
-end;
-
-end.
-
diff --git a/extras/tiopf/demos/Demo_08_Collection/Client_DBIndependentVisitors_Svr.pas b/extras/tiopf/demos/Demo_08_Collection/Client_DBIndependentVisitors_Svr.pas
deleted file mode 100644
index 495191e6..00000000
--- a/extras/tiopf/demos/Demo_08_Collection/Client_DBIndependentVisitors_Svr.pas
+++ /dev/null
@@ -1,146 +0,0 @@
-unit Client_DBIndependentVisitors_Svr;
-
-{$mode objfpc}{$H+}
-
-interface
-uses
- tiVisitorDBAutoGen
- ;
-
-type
-
- TVisClient_Read = class(TVisDBAutoGenRead)
- protected
- function AcceptVisitor: boolean; override;
- procedure Init ; override;
- procedure SetupParams ; override;
- procedure MapRowToObject; override;
- end;
-
- TVisClient_Create = class(TVisDBAutoGenUpdate)
- protected
- function AcceptVisitor: boolean; override;
- procedure SetupParams ; override;
- end;
-
- TVisClient_Update = class(TVisDBAutoGenUpdate)
- protected
- function AcceptVisitor: boolean; override;
- procedure SetupParams ; override;
- end;
-
- TVisClient_Delete = class(TVisDBAutoGenDelete)
- protected
- function AcceptVisitor: boolean; override;
- procedure SetupParams ; override;
- end;
-
-procedure RegisterVisitors;
-
-implementation
-uses
- Client_BOM
- ,tiOPFManager
- ,tiObject
- ,tiLog
- ,tiQuery
- ;
-
-procedure RegisterVisitors;
-begin
- gTIOPFManager.RegReadVisitor(TVisClient_Read);
- gTIOPFManager.RegSaveVisitor(TVisClient_Create);
- gTIOPFManager.RegSaveVisitor(TVisClient_Update);
- gTIOPFManager.RegSaveVisitor(TVisClient_Delete);
-end;
-
-{ TVisClient_Read }
-
-function TVisClient_Read.AcceptVisitor: boolean;
-begin
- result:= (Visited is TClients) and
- (Visited.ObjectState = posEmpty);
- Log([ClassName, Visited.ClassName, Visited.ObjectStateAsString, Result ]);
-end;
-
-procedure TVisClient_Read.Init;
-begin
- TableName:= 'Client';
-end;
-
-procedure TVisClient_Read.MapRowToObject;
-var
- LClient: TClient;
-begin
- LClient:= TClient.Create;
- LClient.OID.AssignFromTIQuery('OID',Query);
- LClient.ClientName:= Query.FieldAsString['Client_Name'];
- LClient.ClientID:= Query.FieldAsString['Client_ID'];
- LClient.ObjectState:= posClean;
- TClients(Visited).Add(LClient);
-end;
-
-procedure TVisClient_Read.SetupParams;
-begin
- // Do nothing
-end;
-
-{ TVisClient_Create }
-
-function TVisClient_Create.AcceptVisitor: boolean;
-begin
- result:= (Visited is TClient) and
- (Visited.ObjectState = posCreate);
- Log([ClassName, Visited.ClassName, Visited.ObjectStateAsString, Result ]);
-end;
-
-procedure TVisClient_Create.SetupParams;
-var
- LData: TClient;
-begin
- LData:= Visited as TClient;
- TableName:= 'Client';
- QueryType:= qtInsert;
- QueryParams.SetValueAsString('OID', LData.OID.AsString);
- QueryParams.SetValueAsString('Client_Name', LData.ClientName);
- QueryParams.SetValueAsString('Client_ID', LData.ClientID);
-end;
-
-{ TVisClient_Update }
-
-function TVisClient_Update.AcceptVisitor: boolean;
-begin
- result:= (Visited is TClient) and
- (Visited.ObjectState = posUpdate);
- Log([ClassName, Visited.ClassName, Visited.ObjectStateAsString, Result ]);
-end;
-
-procedure TVisClient_Update.SetupParams;
-var
- LData: TClient;
-begin
- LData:= Visited as TClient;
- TableName:= 'Client';
- QueryType:= qtUpdate;
- QueryWhere.SetValueAsString('OID', LData.OID.AsString);
- QueryParams.SetValueAsString('Client_Name', LData.ClientName);
- QueryParams.SetValueAsString('Client_ID', LData.ClientID);
-end;
-
-{ TVisClient_Delete }
-
-function TVisClient_Delete.AcceptVisitor: boolean;
-begin
- result:= (Visited is TClient) and
- (Visited.ObjectState = posDelete);
- Log([ClassName, Visited.ClassName, Visited.ObjectStateAsString, Result ]);
-end;
-
-procedure TVisClient_Delete.SetupParams;
-begin
- inherited;
- TableName:= 'Client';
-end;
-
-end.
-
diff --git a/extras/tiopf/demos/Demo_08_Collection/Client_HardCodedVisitors_Svr.pas b/extras/tiopf/demos/Demo_08_Collection/Client_HardCodedVisitors_Svr.pas
deleted file mode 100644
index 99a25573..00000000
--- a/extras/tiopf/demos/Demo_08_Collection/Client_HardCodedVisitors_Svr.pas
+++ /dev/null
@@ -1,171 +0,0 @@
-unit Client_HardCodedVisitors_Svr;
-
-{$mode objfpc}{$H+}
-
-interface
-uses
- tiVisitorDB
- ;
-
-type
-
- TVisClient_Read = class(TVisOwnedQrySelect)
- protected
- function AcceptVisitor: boolean; override;
- procedure Init ; override;
- procedure SetupParams ; override;
- procedure MapRowToObject; override;
- end;
-
- TVisClient_Create = class(TVisOwnedQryUpdate)
- protected
- function AcceptVisitor: boolean; override;
- procedure Init ; override;
- procedure SetupParams ; override;
- end;
-
- TVisClient_Update = class(TVisOwnedQryUpdate)
- protected
- function AcceptVisitor: boolean; override;
- procedure Init ; override;
- procedure SetupParams ; override;
- end;
-
- TVisClient_Delete = class(TVisOwnedQryUpdate)
- protected
- function AcceptVisitor: boolean; override;
- procedure Init ; override;
- procedure SetupParams ; override;
- end;
-
-procedure RegisterVisitors;
-
-implementation
-uses
- Client_BOM
- ,tiOPFManager
- ,tiObject
- ,tiLog
- ;
-
-procedure RegisterVisitors;
-begin
- gTIOPFManager.RegReadVisitor(TVisClient_Read);
- gTIOPFManager.RegSaveVisitor(TVisClient_Create);
- gTIOPFManager.RegSaveVisitor(TVisClient_Update);
- gTIOPFManager.RegSaveVisitor(TVisClient_Delete);
-end;
-
-{ TVisClient_Read }
-
-function TVisClient_Read.AcceptVisitor: boolean;
-begin
- result:= (Visited is TClients) and
- (Visited.ObjectState = posEmpty);
- Log([ClassName, Visited.ClassName, Visited.ObjectStateAsString, Result ]);
-end;
-
-procedure TVisClient_Read.Init;
-begin
- Query.SQLText:=
- 'select OID, Client_Name, Client_ID from Client';
-end;
-
-procedure TVisClient_Read.MapRowToObject;
-var
- lClient: TClient;
-begin
- lClient:= TClient.Create;
- lClient.OID.AssignFromTIQuery('OID',Query);
- lClient.ClientName:= Query.FieldAsString['Client_Name'];
- lClient.ClientID:= Query.FieldAsString['Client_ID'];
- lClient.ObjectState:= posClean;
- TClients(Visited).Add(lClient);
-end;
-
-procedure TVisClient_Read.SetupParams;
-begin
- // Do nothing
-end;
-
-{ TVisClient_Create }
-
-function TVisClient_Create.AcceptVisitor: boolean;
-begin
- result:= (Visited is TClient) and
- (Visited.ObjectState = posCreate);
- Log([ClassName, Visited.ClassName, Visited.ObjectStateAsString, Result ]);
-end;
-
-procedure TVisClient_Create.Init;
-begin
- Query.SQLText:=
- 'Insert into Client (OID, Client_Name, Client_ID) ' +
- 'Values ' +
- '(:OID,:Client_Name,:Client_ID)';
-end;
-
-procedure TVisClient_Create.SetupParams;
-var
- lData: TClient;
-begin
- lData:= Visited as TClient;
- lData.OID.AssignToTIQuery('OID', Query);
- Query.ParamAsString['Client_Name']:= lData.ClientName;
- Query.ParamAsString['Client_ID']:= lData.ClientID;
-end;
-
-{ TVisClient_Update }
-
-function TVisClient_Update.AcceptVisitor: boolean;
-begin
- result:= (Visited is TClient) and
- (Visited.ObjectState = posUpdate);
- Log([ClassName, Visited.ClassName, Visited.ObjectStateAsString, Result ]);
-end;
-
-procedure TVisClient_Update.Init;
-begin
- Query.SQLText:=
- 'Update Client Set ' +
- ' Client_Name =:Client_Name ' +
- ' ,Client_ID =:Client_ID ' +
- 'where ' +
- ' OID =:OID';
-end;
-
-procedure TVisClient_Update.SetupParams;
-var
- lData: TClient;
-begin
- lData:= Visited as TClient;
- lData.OID.AssignToTIQuery('OID', Query);
- Query.ParamAsString['Client_Name']:= lData.ClientName;
- Query.ParamAsString['Client_ID']:= lData.ClientID;
-end;
-
-{ TVisClient_Delete }
-
-function TVisClient_Delete.AcceptVisitor: boolean;
-begin
- result:= (Visited is TClient) and
- (Visited.ObjectState = posDelete);
- Log([ClassName, Visited.ClassName, Visited.ObjectStateAsString, Result ]);
-end;
-
-procedure TVisClient_Delete.Init;
-begin
- Query.SQLText:=
- 'delete from client where oid =:oid';
-end;
-
-procedure TVisClient_Delete.SetupParams;
-var
- lData: TClient;
-begin
- lData:= Visited as TClient;
- lData.OID.AssignToTIQuery('OID', Query);
-end;
-
-end.
-
diff --git a/extras/tiopf/demos/Demo_08_Collection/demo_08.lpi b/extras/tiopf/demos/Demo_08_Collection/demo_08.lpi
deleted file mode 100644
index 04d2b379..00000000
--- a/extras/tiopf/demos/Demo_08_Collection/demo_08.lpi
+++ /dev/null
@@ -1,84 +0,0 @@
-<?xml version="1.0"?>
-<CONFIG>
- <ProjectOptions>
- <Version Value="7"/>
- <General>
- <Flags>
- <SaveOnlyProjectUnits Value="True"/>
- <MainUnitHasCreateFormStatements Value="False"/>
- <MainUnitHasTitleStatement Value="False"/>
- <LRSInOutputDirectory Value="False"/>
- </Flags>
- <SessionStorage Value="InProjectDir"/>
- <MainUnit Value="0"/>
- <TargetFileExt Value=""/>
- </General>
- <VersionInfo>
- <ProjectVersion Value=""/>
- </VersionInfo>
- <PublishOptions>
- <Version Value="2"/>
- <IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/>
- <ExcludeFileFilter Value="*.(bak|ppu|ppw|o|so);*~;backup"/>
- </PublishOptions>
- <RunParams>
- <local>
- <FormatVersion Value="1"/>
- <LaunchingApplication PathPlusParams="/usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/>
- </local>
- </RunParams>
- <RequiredPackages Count="1">
- <Item1>
- <PackageName Value="tiOPFfpGUI"/>
- </Item1>
- </RequiredPackages>
- <Units Count="6">
- <Unit0>
- <Filename Value="demo_08.lpr"/>
- <IsPartOfProject Value="True"/>
- <UnitName Value="demo_08"/>
- </Unit0>
- <Unit1>
- <Filename Value="frm_main.pas"/>
- <IsPartOfProject Value="True"/>
- <UnitName Value="frm_main"/>
- </Unit1>
- <Unit2>
- <Filename Value="Client_HardCodedVisitors_Svr.pas"/>
- <IsPartOfProject Value="True"/>
- <UnitName Value="Client_HardCodedVisitors_Svr"/>
- </Unit2>
- <Unit3>
- <Filename Value="Client_AutoMap_Svr.pas"/>
- <IsPartOfProject Value="True"/>
- <UnitName Value="Client_AutoMap_Svr"/>
- </Unit3>
- <Unit4>
- <Filename Value="Client_BOM.pas"/>
- <IsPartOfProject Value="True"/>
- <UnitName Value="Client_BOM"/>
- </Unit4>
- <Unit5>
- <Filename Value="Client_DBIndependentVisitors_Svr.pas"/>
- <IsPartOfProject Value="True"/>
- <UnitName Value="Client_DBIndependentVisitors_Svr"/>
- </Unit5>
- </Units>
- </ProjectOptions>
- <CompilerOptions>
- <Version Value="8"/>
- <SearchPaths>
- <UnitOutputDirectory Value="units/$(TargetCPU)-$(TargetOS)"/>
- </SearchPaths>
- <Parsing>
- <SyntaxOptions>
- <AllowLabel Value="False"/>
- <CPPInline Value="False"/>
- </SyntaxOptions>
- </Parsing>
- <Other>
- <CustomOptions Value="-dUseCThreads"/>
- <CompilerPath Value="$(CompPath)"/>
- </Other>
- </CompilerOptions>
-</CONFIG>
diff --git a/extras/tiopf/demos/Demo_08_Collection/demo_08.lpr b/extras/tiopf/demos/Demo_08_Collection/demo_08.lpr
deleted file mode 100644
index c1d14863..00000000
--- a/extras/tiopf/demos/Demo_08_Collection/demo_08.lpr
+++ /dev/null
@@ -1,65 +0,0 @@
-program demo_08;
-
-{$mode objfpc}{$H+}
-
-// Which persistence layer to activate. (Un)Comment the one you want to use
-{.$define UseFBL}
-{$define UseSqldbIB}
-
-uses
- {$IFDEF UNIX}{$IFDEF UseCThreads}
- cthreads,
- {$ENDIF}{$ENDIF}
- Classes, SysUtils, fpg_main, frm_main,
- Client_DBIndependentVisitors_Svr, Client_BOM,
- Client_AutoMap_Svr, Client_HardCodedVisitors_Svr, tiOPFManager,
- tiConstants{, tiLog, tiLogToConsole};
-
-procedure MainProc;
-var
- frm: TMainForm;
-begin
- fpgApplication.Initialize;
-
- {$IFDEF UseFBL}
- if GTIOPFManager.PersistenceLayers.FindByPersistenceLayerName(cTIPersistFBL) = nil then
- raise Exception.Create('The system failed to find the <' + cTIPersistFBL + '> persistence layer')
- else
- GTIOPFManager.DefaultPersistenceLayerName := cTIPersistFBL;
- {$ENDIF}
- {$IFDEF UseSqldbIB}
- if GTIOPFManager.PersistenceLayers.FindByPersistenceLayerName(cTIPersistSqldbIB) = nil then
- raise Exception.Create('The system failed to find the <' + cTIPersistSqldbIB + '> persistence layer')
- else
- GTIOPFManager.DefaultPersistenceLayerName := cTIPersistSqldbIB;
- {$ENDIF}
-
- { Change the connection string to suite your database location }
- // ** Remote connection
- //gTIOPFManager.ConnectDatabase('192.168.0.54|/home/graemeg/programming/data/tiopf.fdb', 'sysdba', 'masterkey');
- // ** Local connection
- gTIOPFManager.ConnectDatabase('/home/graemeg/programming/data/tiopf.fdb', 'sysdba', 'masterkey');
-
-
- { Which persistence mechanism do you want to use? Uncomment one. }
- Client_AutoMap_Svr.RegisterMappings;
- //Client_HardCodedVisitors_Svr.RegisterVisitors;
- //Client_DBIndependentVisitors_Svr.RegisterVisitors;
-
-
- frm := TMainForm.Create(nil);
- try
- frm.Show;
- fpgApplication.Run;
- finally
- frm.Free;
- gTIOPFManager.DisconnectDatabase;
- gTIOPFManager.Terminate;
- end;
-end;
-
-begin
- MainProc;
-end.
-
-
diff --git a/extras/tiopf/demos/Demo_08_Collection/frm_main.pas b/extras/tiopf/demos/Demo_08_Collection/frm_main.pas
deleted file mode 100644
index 34241b17..00000000
--- a/extras/tiopf/demos/Demo_08_Collection/frm_main.pas
+++ /dev/null
@@ -1,332 +0,0 @@
-unit frm_main;
-
-{$mode objfpc}{$H+}
-
-interface
-
-uses
- SysUtils, Classes, fpg_base, fpg_main, fpg_edit,
- fpg_widget, fpg_form, fpg_label, fpg_button,
- fpg_listbox, fpg_memo, fpg_combobox, fpg_grid,
- fpg_dialogs, fpg_checkbox, fpg_tree, fpg_trackbar,
- fpg_progressbar, fpg_radiobutton, fpg_tab, fpg_menu,
- fpg_panel, Client_BOM, tiModelMediator;
-
-type
-
- TMainForm = class(TfpgForm)
- private
- {@VFD_HEAD_BEGIN: MainForm}
- lblName1: TfpgLabel;
- lblName2: TfpgLabel;
- lblName3: TfpgLabel;
- edtOID: TfpgEdit;
- edtClientName: TfpgEdit;
- edtClientID: TfpgEdit;
- btnInsertRow: TfpgButton;
- btnDeleteRow: TfpgButton;
- btnShow: TfpgButton;
- btnSave: TfpgButton;
- btnRead: TfpgButton;
- grdCollection: TfpgStringGrid;
- {@VFD_HEAD_END: MainForm}
- FClients: TClients;
- FMediator: TtiModelMediator;
- procedure MainFormShow(Sender: TObject);
- procedure CreateTable;
- procedure DropTable;
- procedure CreateMediators;
- function TableExists: boolean;
- procedure btnInsertRowClick(Sender: TObject);
- procedure btnDeleteRowClick(Sender: TObject);
- procedure btnSaveClick(Sender: TObject);
- procedure btnReadClick(Sender: TObject);
- procedure btnShowClick(Sender: TObject);
- public
- constructor Create(AOwner: TComponent); override;
- destructor Destroy; override;
- procedure AfterCreate; override;
- end;
-
-{@VFD_NEWFORM_DECL}
-
-implementation
-
-uses
- tiQuery
- ,tiOIDGUID
- ,tiOPFManager
- ,tiDBConnectionPool
- ,tiOID
- ,tiDialogs
- ,tiConstants
- ,tiBaseMediator
- ,tiListMediators
- ,tiLog
- ;
-
-{@VFD_NEWFORM_IMPL}
-
-procedure TMainForm.MainFormShow(Sender: TObject);
-begin
- Log('Creating mediators');
- CreateMediators;
-
- // Drop and re-create to be sure we start with the correct structure
- Log('Testing if table exists');
- if TableExists then
- begin
- Log(' Should we drop and recreate the tables');
- if TfpgMessageDialog.Question(ApplicationName, 'Must we delete existing data?', mbYesNo) = mbYes then
- begin
- DropTable;
- CreateTable;
- end;
- end
- else
- CreateTable;
-end;
-
-procedure TMainForm.CreateTable;
-var
- LTableMetaData: TtiDBMetaDataTable;
-begin
- LTableMetaData := TtiDBMetaDataTable.Create;
- try
- LTableMetaData.Name:= 'Client';
- LTableMetaData.AddField('OID', qfkString, 36); // Using GUID OIDs
- LTableMetaData.AddField('Client_Name', qfkString, 200);
- LTableMetaData.AddField('Client_ID', qfkString, 9);
- gTIOPFManager.CreateTable(LTableMetaData);
- finally
- LTableMetaData.Free;
- end;
-end;
-
-procedure TMainForm.DropTable;
-begin
- gTIOPFManager.DropTable('Client');
-end;
-
-procedure TMainForm.CreateMediators;
-begin
- if not Assigned(FMediator) then
- begin
- FMediator := TtiModelMediator.Create(self);
- FMediator.AddComposite('ClientName(200,"Client name");ClientID(80,"Client ID")', grdCollection);
- end;
- FMediator.Subject := FClients;
- FMediator.Active := True;
-
- //FmedClients := TClient_StringGrid_Mediator.CreateCustom(FClients, grdCollection, 'ClientName(200,"Client name");ClientID(80,"Client ID")');
- //FClients.NotifyObservers;
-
- //LV.AddColumn(LVDeriveOID, 'OID', 270);
- //LV.AddColumn('ClientName', vttkString, 'Client name', 200);
- //LV.AddColumn('ClientID', vttkString, 'Client ID', 80);
- //LV.Data:= FClients;
-end;
-
-function TMainForm.TableExists: boolean;
-var
- LDBMetaData: TtiDBMetaData;
- LDatabase: TtiDatabase;
-begin
- LDBMetaData := TtiDBMetaData.Create;
- try
- LDatabase := gTIOPFManager.DefaultDBConnectionPool.Lock;
- try
-// Log(' Reading meta data of tables');
- LDatabase.ReadMetaDataTables(LDBMetaData);
-// log(' Finding the table <Client>');
- result := LDBMetaData.FindByTableName('Client') <> nil;
- finally
- gTIOPFManager.DefaultDBConnectionPool.UnLock(LDatabase);
- end;
- finally
- LDBMetaData.Free;
- end;
-end;
-
-procedure TMainForm.btnInsertRowClick(Sender: TObject);
-var
- LClient: TClient;
-begin
- LClient:= TClient.CreateNew;
- FClients.Add(LClient);
-end;
-
-procedure TMainForm.btnDeleteRowClick(Sender: TObject);
-begin
- //if LV.SelectedData <> nil then
- //LV.SelectedData.Deleted:= true;
- //LV.Refresh;
-end;
-
-procedure TMainForm.btnSaveClick(Sender: TObject);
-begin
- FClients.Save;
-end;
-
-procedure TMainForm.btnReadClick(Sender: TObject);
-begin
- FMediator.Active := False;
- FClients.Clear;
- FClients.Read;
- FMediator.Active := True;
-end;
-
-procedure TMainForm.btnShowClick(Sender: TObject);
-begin
- tiShowString(FClients.AsDebugString);
-end;
-
-constructor TMainForm.Create(AOwner: TComponent);
-begin
- inherited Create(AOwner);
- WindowTitle := 'Connected to ' + gTIOPFManager.DefaultDBConnectionName;
- FClients := TClients.Create;
- OnShow := @MainFormShow;
-end;
-
-destructor TMainForm.Destroy;
-begin
- FMediator.Active := False;
- FClients.Free;
- inherited Destroy;
-end;
-
-procedure TMainForm.AfterCreate;
-begin
- {@VFD_BODY_BEGIN: MainForm}
- Name := 'MainForm';
- SetPosition(304, 254, 565, 250);
- WindowTitle := 'Collection demo';
- WindowPosition := wpScreenCenter;
- Sizeable := False;
-
- lblName1 := TfpgLabel.Create(self);
- with lblName1 do
- begin
- Name := 'lblName1';
- SetPosition(8, 12, 80, 16);
- Text := 'OID:';
- FontDesc := '#Label1';
- end;
-
- lblName2 := TfpgLabel.Create(self);
- with lblName2 do
- begin
- Name := 'lblName2';
- SetPosition(8, 36, 80, 16);
- Text := 'Client Name:';
- FontDesc := '#Label1';
- end;
-
- lblName3 := TfpgLabel.Create(self);
- with lblName3 do
- begin
- Name := 'lblName3';
- SetPosition(8, 60, 80, 16);
- Text := 'Client ID:';
- FontDesc := '#Label1';
- end;
-
- edtOID := TfpgEdit.Create(self);
- with edtOID do
- begin
- Name := 'edtOID';
- SetPosition(88, 8, 172, 22);
- Text := '';
- FontDesc := '#Edit1';
- end;
-
- edtClientName := TfpgEdit.Create(self);
- with edtClientName do
- begin
- Name := 'edtClientName';
- SetPosition(88, 32, 172, 22);
- Text := '';
- FontDesc := '#Edit1';
- end;
-
- edtClientID := TfpgEdit.Create(self);
- with edtClientID do
- begin
- Name := 'edtClientID';
- SetPosition(88, 56, 172, 22);
- Text := '';
- FontDesc := '#Edit1';
- end;
-
- btnInsertRow := TfpgButton.Create(self);
- with btnInsertRow do
- begin
- Name := 'btnInsertRow';
- SetPosition(268, 8, 143, 24);
- Text := 'Insert object into list';
- FontDesc := '#Label1';
- ImageName := '';
- OnClick := @btnInsertRowClick;
- end;
-
- btnDeleteRow := TfpgButton.Create(self);
- with btnDeleteRow do
- begin
- Name := 'btnDeleteRow';
- SetPosition(268, 36, 143, 24);
- Text := 'Delete object in list';
- FontDesc := '#Label1';
- ImageName := '';
- OnClick := @btnDeleteRowClick;
- end;
-
- btnShow := TfpgButton.Create(self);
- with btnShow do
- begin
- Name := 'btnShow';
- SetPosition(416, 8, 143, 24);
- Text := 'Show Objects in list';
- FontDesc := '#Label1';
- ImageName := '';
- OnClick := @btnShowClick;
- end;
-
- btnSave := TfpgButton.Create(self);
- with btnSave do
- begin
- Name := 'btnSave';
- SetPosition(416, 36, 143, 24);
- Text := 'Save';
- FontDesc := '#Label1';
- ImageName := '';
- OnClick := @btnSaveClick;
- end;
-
- btnRead := TfpgButton.Create(self);
- with btnRead do
- begin
- Name := 'btnRead';
- SetPosition(416, 64, 143, 24);
- Text := 'Read list from DB';
- FontDesc := '#Label1';
- ImageName := '';
- OnClick := @btnReadClick;
- end;
-
- grdCollection := TfpgStringGrid.Create(self);
- with grdCollection do
- begin
- Name := 'grdCollection';
- SetPosition(8, 96, 552, 148);
- FontDesc := '#Grid';
- HeaderFontDesc := '#GridHeader';
- end;
-
- {@VFD_BODY_END: MainForm}
-end;
-
-initialization
- gMediatorManager.RegisterMediator(TtiStringGridMediatorView, TClients);
-
-end.
diff --git a/extras/tiopf/demos/Demo_20_ListMediators/demo_listmediators.lpi b/extras/tiopf/demos/Demo_20_ListMediators/demo_listmediators.lpi
deleted file mode 100644
index ece8df27..00000000
--- a/extras/tiopf/demos/Demo_20_ListMediators/demo_listmediators.lpi
+++ /dev/null
@@ -1,83 +0,0 @@
-<?xml version="1.0"?>
-<CONFIG>
- <ProjectOptions>
- <Version Value="7"/>
- <General>
- <Flags>
- <SaveOnlyProjectUnits Value="True"/>
- <LRSInOutputDirectory Value="False"/>
- </Flags>
- <SessionStorage Value="InProjectDir"/>
- <MainUnit Value="0"/>
- <TargetFileExt Value=""/>
- </General>
- <VersionInfo>
- <ProjectVersion Value=""/>
- </VersionInfo>
- <PublishOptions>
- <Version Value="2"/>
- <IgnoreBinaries Value="False"/>
- <IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/>
- <ExcludeFileFilter Value="*.(bak|ppu|ppw|o|so);*~;backup"/>
- </PublishOptions>
- <RunParams>
- <local>
- <FormatVersion Value="1"/>
- <LaunchingApplication PathPlusParams="/usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/>
- </local>
- </RunParams>
- <RequiredPackages Count="1">
- <Item1>
- <PackageName Value="tiOPFfpGUI"/>
- </Item1>
- </RequiredPackages>
- <Units Count="5">
- <Unit0>
- <Filename Value="demo_listmediators.lpr"/>
- <IsPartOfProject Value="True"/>
- <UnitName Value="demo_listmediators"/>
- </Unit0>
- <Unit1>
- <Filename Value="frmMain.pas"/>
- <IsPartOfProject Value="True"/>
- <UnitName Value="frmMain"/>
- </Unit1>
- <Unit2>
- <Filename Value="../Common/Model.pas"/>
- <IsPartOfProject Value="True"/>
- <UnitName Value="Model"/>
- </Unit2>
- <Unit3>
- <Filename Value="../Common/Model_View.pas"/>
- <IsPartOfProject Value="True"/>
- <UnitName Value="Model_View"/>
- </Unit3>
- <Unit4>
- <Filename Value="../Common/Constants.pas"/>
- <IsPartOfProject Value="True"/>
- <UnitName Value="Constants"/>
- </Unit4>
- </Units>
- </ProjectOptions>
- <CompilerOptions>
- <Version Value="8"/>
- <SearchPaths>
- <OtherUnitFiles Value="../Common/"/>
- <UnitOutputDirectory Value="units/$(TargetCPU)-$(TargetOS)"/>
- </SearchPaths>
- <Parsing>
- <SyntaxOptions>
- <CStyleOperator Value="False"/>
- </SyntaxOptions>
- </Parsing>
- <CodeGeneration>
- <SmartLinkUnit Value="True"/>
- </CodeGeneration>
- <Linking>
- <LinkSmart Value="True"/>
- </Linking>
- <Other>
- <CompilerPath Value="$(CompPath)"/>
- </Other>
- </CompilerOptions>
-</CONFIG>
diff --git a/extras/tiopf/demos/Demo_20_ListMediators/demo_listmediators.lpr b/extras/tiopf/demos/Demo_20_ListMediators/demo_listmediators.lpr
deleted file mode 100644
index 5db2a346..00000000
--- a/extras/tiopf/demos/Demo_20_ListMediators/demo_listmediators.lpr
+++ /dev/null
@@ -1,29 +0,0 @@
-program demo_listmediators;
-
-{$mode objfpc}{$H+}
-
-uses
- {$IFDEF UNIX}{$IFDEF UseCThreads}
- cthreads,
- {$ENDIF}{$ENDIF}
- Classes, fpg_main, frmMain, Model, Constants, Model_View;
-
-
-procedure MainProc;
-var
- frm: TMainForm;
-begin
- fpgApplication.Initialize;
- frm := TMainForm.Create(nil);
- try
- frm.Show;
- fpgApplication.Run;
- finally
- frm.Free;
- end;
-end;
-
-begin
- MainProc;
-end.
-
diff --git a/extras/tiopf/demos/Demo_20_ListMediators/frmMain.pas b/extras/tiopf/demos/Demo_20_ListMediators/frmMain.pas
deleted file mode 100644
index f186340b..00000000
--- a/extras/tiopf/demos/Demo_20_ListMediators/frmMain.pas
+++ /dev/null
@@ -1,277 +0,0 @@
-unit frmMain;
-
-{$mode objfpc}{$H+}
-
-interface
-
-uses
- SysUtils, Classes, fpg_base, fpg_main, fpg_widget, fpg_form, fpg_button,
- fpg_grid, fpg_checkbox, fpg_panel, fpg_listview, fpg_listbox, fpg_combobox,
- Model, tiModelMediator, tiMediators;
-
-type
-
- TMainForm = class(TfpgForm)
- private
- { The object we will be working with. }
- FPersonList: TPersonList;
- FMediator: TtiModelMediator;
- medCombo: TtiComboBoxMediatorView;
- procedure btnViaCodeChangeClick(Sender: TObject);
- procedure btnQuitClicked(Sender: TObject);
- procedure btnViaCodeAddClick(Sender: TObject);
- procedure btnShowModelClick(Sender: TObject);
- procedure btnShowDeletedClick(Sender: TObject);
- procedure SetupMediators;
- public
- {@VFD_HEAD_BEGIN: MainForm}
- lvName1: TfpgListView;
- grdName1: TfpgStringGrid;
- pnlName1: TfpgPanel;
- btnName1: TfpgButton;
- btnName2: TfpgButton;
- btnName3: TfpgButton;
- btnName4: TfpgButton;
- btnQuit: TfpgButton;
- cbName1: TfpgCheckBox;
- lstName1: TfpgListBox;
- cbName2: TfpgComboBox;
- {@VFD_HEAD_END: MainForm}
- constructor Create(AOwner: TComponent); override;
- destructor Destroy; override;
- procedure AfterConstruction; override;
- procedure AfterCreate; override;
- end;
-
-{@VFD_NEWFORM_DECL}
-
-implementation
-
-uses
- tiBaseMediator, tiListMediators, tiObject, tiDialogs;
-
-{@VFD_NEWFORM_IMPL}
-
-procedure TMainForm.btnViaCodeChangeClick(Sender: TObject);
-begin
- { The BeginUpdate/EndUpdate will let the Item notify its observers
- only once, even though two change where made.
- Note:
- This is for observers to the Item, not the List that the Item belongs to! }
- FPersonList.Items[1].BeginUpdate;
- FPersonList.Items[1].Name := 'I have changed via code';
- FPersonList.Items[1].Age := 99;
- FPersonList.Items[1].EndUpdate;
- { This notifies observers of the List, that something has changed. }
- FPersonList.NotifyObservers;
-end;
-
-procedure TMainForm.btnQuitClicked(Sender: TObject);
-begin
- Close;
-end;
-
-procedure TMainForm.btnViaCodeAddClick(Sender: TObject);
-var
- lData: TPerson;
-begin
- lData := TPerson.Create;
- lData.Name := 'I am new';
- lData.Age := 44;
- FPersonList.Add(lData);
-end;
-
-procedure TMainForm.btnShowModelClick(Sender: TObject);
-begin
- tiShowString(FPersonList.AsDebugString);
-end;
-
-procedure TMainForm.btnShowDeletedClick(Sender: TObject);
-var
- med: TtiMediatorView;
-begin
- med := FMediator.FindByComponent(grdName1).Mediator;
- tiShowString(TtiStringGridMediatorView(med).SelectedObject.AsDebugString);
-end;
-
-procedure TMainForm.SetupMediators;
-begin
- if not Assigned(FMediator) then
- begin
- FMediator := TtiModelMediator.Create(self);
- FMediator.Name := 'DemoFormMediator';
- FMediator.AddComposite('Name(150,"Name",<);Age(50,"Age",>);GenderGUI(80,"Gender",|)', grdName1);
-// FMediator.AddComposite('Name(150,"Name",<);Age(75,"Age",>);GenderGUI(50,"Gender",|)', lvName1);
- FMediator.AddProperty('Name', lstName1);
- end;
- FMediator.Subject := FPersonList;
- FMediator.Active := True;
-
-// medCombo := TMediatorComboBoxView.CreateCustom(cbName1, FPerson);
-end;
-
-constructor TMainForm.Create(AOwner: TComponent);
-begin
- inherited Create(AOwner);
- FPersonList := GeneratePersonList;
-end;
-
-destructor TMainForm.Destroy;
-begin
- FMediator.Active := False;
- FPersonList.Free;
- inherited Destroy;
-end;
-
-procedure TMainForm.AfterConstruction;
-begin
- inherited AfterConstruction;
- SetupMediators;
- FPersonList.NotifyObservers;
-end;
-
-procedure TMainForm.AfterCreate;
-begin
- {@VFD_BODY_BEGIN: MainForm}
- Name := 'MainForm';
- SetPosition(298, 184, 617, 358);
- WindowTitle := 'Demo 20: ListMediators';
- Sizeable := False;
-
- lvName1 := TfpgListView.Create(self);
- with lvName1 do
- begin
- Name := 'lvName1';
- SetPosition(8, 52, 292, 112);
- ShowHeaders := True;
- end;
-
- grdName1 := TfpgStringGrid.Create(self);
- with grdName1 do
- begin
- Name := 'grdName1';
- SetPosition(316, 52, 292, 220);
- FontDesc := '#Grid';
- HeaderFontDesc := '#GridHeader';
- TabOrder := 1;
- Tag := 99;
- end;
-
- pnlName1 := TfpgPanel.Create(self);
- with pnlName1 do
- begin
- Name := 'pnlName1';
- SetPosition(8, 12, 600, 28);
- Anchors := [anLeft,anRight,anTop];
- Alignment := taLeftJustify;
- Margin := 8;
- Text := 'ListMediator Demo';
- FontDesc := '#Label2';
- TextColor := clWhite;
- BackGroundColor := clDarkBlue;
- end;
-
- btnName1 := TfpgButton.Create(self);
- with btnName1 do
- begin
- Name := 'btnName1';
- SetPosition(8, 296, 120, 24);
- Text := 'Add via Code';
- FontDesc := '#Label1';
- Hint := '';
- ImageName := '';
- TabOrder := 3;
- OnClick := @btnViaCodeAddClick;
- end;
-
- btnName2 := TfpgButton.Create(self);
- with btnName2 do
- begin
- Name := 'btnName2';
- SetPosition(8, 324, 120, 24);
- Text := 'Change via Code';
- FontDesc := '#Label1';
- Hint := '';
- ImageName := '';
- TabOrder := 4;
- OnClick := @btnViaCodeChangeClick;
- end;
-
- btnName3 := TfpgButton.Create(self);
- with btnName3 do
- begin
- Name := 'btnName3';
- SetPosition(132, 324, 96, 24);
- Text := 'Show Model';
- FontDesc := '#Label1';
- Hint := '';
- ImageName := '';
- TabOrder := 5;
- OnClick := @btnShowModelClick;
- end;
-
- btnName4 := TfpgButton.Create(self);
- with btnName4 do
- begin
- Name := 'btnName4';
- SetPosition(232, 324, 80, 24);
- Text := 'Delete';
- FontDesc := '#Label1';
- Hint := '';
- ImageName := '';
- TabOrder := 6;
- OnClick := @btnShowDeletedClick;
- end;
-
- btnQuit := TfpgButton.Create(self);
- with btnQuit do
- begin
- Name := 'btnQuit';
- SetPosition(528, 324, 80, 24);
- Text := 'Quit';
- FontDesc := '#Label1';
- Hint := '';
- ImageName := '';
- TabOrder := 7;
- OnClick := @btnQuitClicked;
- end;
-
- cbName1 := TfpgCheckBox.Create(self);
- with cbName1 do
- begin
- Name := 'cbName1';
- SetPosition(148, 296, 120, 20);
- FontDesc := '#Label1';
- TabOrder := 8;
- Text := 'Show Deleted';
- OnClick := @btnShowDeletedClick;
- end;
-
- lstName1 := TfpgListBox.Create(self);
- with lstName1 do
- begin
- Name := 'lstName1';
- SetPosition(8, 168, 228, 120);
- FontDesc := '#List';
- TabOrder := 9;
- end;
-
- cbName2 := TfpgComboBox.Create(self);
- with cbName2 do
- begin
- Name := 'cbName2';
- SetPosition(320, 276, 204, 22);
- FontDesc := '#List';
- TabOrder := 10;
- end;
-
- {@VFD_BODY_END: MainForm}
-end;
-
-
-initialization
- gMediatorManager.RegisterMediator(TtiStringGridMediatorView, TtiObjectList);
-// gMediatorManager.RegisterMediator(TListBoxMediator, TPersonList);
-// gMediatorManager.RegisterMediator(TListViewMediator, TtiObjectList);
-
-end.
diff --git a/extras/tiopf/demos/Demo_21_AdrsBook_MGM/_readme.txt b/extras/tiopf/demos/Demo_21_AdrsBook_MGM/_readme.txt
deleted file mode 100644
index 51897ba0..00000000
--- a/extras/tiopf/demos/Demo_21_AdrsBook_MGM/_readme.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-ToDo:
- This demo must be modified for the latest structure in Adrs_bom.pas
-
- This demo implements a Address Book. It uses standard components
- and the Model-GUI-Mediator pattern to make those components
- object-aware.
-
- This demo is still work in progress... Not complete!
-
-
- Graeme Geldenhuys
-
-
-
diff --git a/extras/tiopf/demos/Demo_21_AdrsBook_MGM/contactmanager.pas b/extras/tiopf/demos/Demo_21_AdrsBook_MGM/contactmanager.pas
deleted file mode 100644
index c8518f30..00000000
--- a/extras/tiopf/demos/Demo_21_AdrsBook_MGM/contactmanager.pas
+++ /dev/null
@@ -1,260 +0,0 @@
-unit contactmanager;
-
-{$IFDEF FPC}
- {$mode objfpc}{$H+}
-{$ENDIF}
-
-interface
-
-uses
- model;
-
-type
-
- { TContactManager }
-
- TContactManager = class(TMarkObject)
- private
- FAddressTypeList: TAddressTypeList;
- FCityList: TCityList;
- FContactList: TContactList;
- FCountryList: TCountryList;
- procedure PopulateCountries;
- procedure PopulateCities;
- procedure PopulateAddressTypes;
- function GenPhone: string;
- public
- constructor Create; override;
- destructor Destroy; override;
- procedure PopulateContacts;
- published
- property AddressTypeList: TAddressTypeList read FAddressTypeList;
- property CountryList: TCountryList read FCountryList;
- property CityList: TCityList read FCityList;
- property ContactList: TContactList read FContactList;
- end;
-
-
-// Global singleton
-function gContactManager: TContactManager;
-
-
-implementation
-
-uses
- SysUtils, tiObject;
-
-var
- uContactManager: TContactManager;
-
-const
- LastNames: array[1..10] of string = ('Geldenhuys', 'Botha', 'Johnson', 'Fourie',
- 'Louw', 'Bougas', 'van der Mescht', 'Waskanski', 'Welgens', 'Viljoen');
-
- FirstNames: array[1..10] of string = ('Graeme', 'Johan', 'Debbie', 'Freda',
- 'Jack', 'Ryno', 'Dirkus', 'Angela', 'Denise', 'Daniel');
-
- StreetNames: array[1..11] of string = ('Stellenberg Rd', 'Stellendal Rd',
- 'Abelia', 'Main Rd', 'Links Drive', 'Short Street',
- 'Long Street', 'Loop Street', 'Hillside Rd', 'Mountain Rd', 'Beach Drive');
-
-function gContactManager: TContactManager;
-begin
- if not Assigned(uContactManager) then
- uContactManager:= TContactManager.Create;
- result:= uContactManager;
-end;
-
-{ TContactManager }
-
-procedure TContactManager.PopulateCountries;
-var
- i: integer;
-begin
- FCountryList.Add(TCountry.CreateNew('za', 'South Africa'));
- FCountryList.Add(TCountry.CreateNew('gb', 'Great Britain'));
- FCountryList.Add(TCountry.CreateNew('uk', 'Ukrain'));
- FCountryList.Add(TCountry.CreateNew('fr', 'France'));
- FCountryList.Add(TCountry.CreateNew('us', 'United States'));
- FCountryList.Add(TCountry.CreateNew('gr', 'Germany'));
-
- { reset ObjectState property }
- for i := 0 to FCountryList.Count - 1 do
- FCountryList[i].ObjectState := posClean;
-end;
-
-procedure TContactManager.PopulateCities;
-var
- c: TCity;
- i: integer;
-begin
- c:= TCity.CreateNew;
- c.Name:= 'Somerset West';
- c.ZIP := '7130';
- c.Country:= TCountry(FCountryList.FindByProps(['ISO'], ['za'], True));
- FCityList.Add(c);
-
- c:= TCity.CreateNew;
- c.Name:= 'Cape Town';
- c.ZIP := '8000';
- c.Country:= TCountry(FCountryList.FindByProps(['ISO'], ['za'], True));
- FCityList.Add(c);
-
- c:= TCity.CreateNew;
- c.Name:= 'Pretoria';
- c.ZIP := '0001';
- c.Country:= TCountry(FCountryList.FindByProps(['ISO'], ['za'], True));
- FCityList.Add(c);
-
- c:= TCity.CreateNew;
- c.Name:= 'Durban';
- c.ZIP := '2000';
- c.Country:= TCountry(FCountryList.FindByProps(['ISO'], ['za'], True));
- FCityList.Add(c);
-
- c:= TCity.CreateNew;
- c.Name:= 'London';
- c.ZIP := 'EC9 5NW';
- c.Country:= TCountry(FCountryList.FindByProps(['ISO'], ['gb'], True));
-
- FCityList.Add(c);
- c:= TCity.CreateNew;
- c.Name:= 'Watford';
- c.ZIP := 'NW9 7BJ';
- c.Country:= TCountry(FCountryList.FindByProps(['ISO'], ['gb'], True));
- FCityList.Add(c);
-
- c:= TCity.CreateNew;
- c.Name:= 'Frankfurt';
- c.ZIP := 'FK2000';
- c.Country:= TCountry(FCountryList.FindByProps(['ISO'], ['gr'], True));
- FCityList.Add(c);
-
- c:= TCity.CreateNew;
- c.Name:= 'New York';
- c.ZIP := 'NY2008';
- c.Country:= TCountry(FCountryList.FindByProps(['ISO'], ['us'], True));
- FCityList.Add(c);
-
- c:= TCity.CreateNew;
- c.Name:= 'San Fransisco';
- c.ZIP := 'SF2500';
- c.Country:= TCountry(FCountryList.FindByProps(['ISO'], ['us'], True));
- FCityList.Add(c);
-
- c:= TCity.CreateNew;
- c.Name:= 'Paris';
- c.ZIP := 'PRS007';
- c.Country:= TCountry(FCountryList.FindByProps(['ISO'], ['fr'], True));
- FCityList.Add(c);
-
- c:= TCity.CreateNew;
- c.Name:= 'Big City';
- c.ZIP := 'BC5 7WN';
- c.Country:= TCountry(FCountryList.FindByProps(['ISO'], ['uk'], True));
- FCityList.Add(c);
-
- { reset ObjectState property }
- for i := 0 to FCityList.Count - 1 do
- FCityList[i].ObjectState := posClean;
-end;
-
-procedure TContactManager.PopulateAddressTypes;
-var
- a: TAddressType;
- i: integer;
-begin
- a := TAddressType.CreateNew;
- a.Name := 'Home';
- FAddressTypeList.Add(a);
-
- a := TAddressType.CreateNew;
- a.Name := 'Work';
- FAddressTypeList.Add(a);
-
- a := TAddressType.CreateNew;
- a.Name := 'Postal';
- FAddressTypeList.Add(a);
-
- { reset ObjectState property }
- for i := 0 to FAddressTypeList.Count - 1 do
- FAddressTypeList[i].ObjectState := posClean;
-end;
-
-function TContactManager.GenPhone: string;
-begin
- result:= '+27 ' + IntToStr(Random(9)) + IntToStr(Random(9)) + ' '
- + IntToStr(Random(9)) + IntToStr(Random(9)) + IntToStr(Random(9)) + '-'
- + IntToStr(Random(9)) + IntToStr(Random(9)) + IntToStr(Random(9)) + IntToStr(Random(9));
-end;
-
-constructor TContactManager.Create;
-begin
- inherited Create;
- FAddressTypeList := TAddressTypeList.Create;
- FAddressTypeList.Owner := self;
-
- FCountryList := TCountryList.Create;
- FCountryList.Owner := self;
-
- FCityList := TCityList.Create;
- FCityList.Owner := self;
-
- FContactList := TContactList.Create;
- FContactList.Owner := self;
-end;
-
-destructor TContactManager.Destroy;
-begin
- FContactList.Free;
- FCityList.Free;
- FCountryList.Free;
- FAddressTypeList.Free;
- inherited Destroy;
-end;
-
-procedure TContactManager.PopulateContacts;
-var
- C: TContact;
- I,J: Integer;
- A: TAddress;
-begin
- PopulateCountries;
- PopulateCities;
- PopulateAddressTypes;
- for I := 1 to 10 do
- begin
- C:= TContact.CreateNew;
- C.FirstName:= FirstNames[I];
- C.LastName := LastNames[I];
- C.Mobile := GenPhone;
- C.Email := LowerCase(FirstNames[i])+ '@freepascal.org';
- for J:= 1 to 1+Random(2) do
- begin
- A:= TAddress.CreateNew;
- A.AddressType := FAddressTypeList[Random(3)];
- A.Street := StreetNames[1+Random(10)];
- A.Nr := Random(100)+1;
- A.City := FCityList[Random(10)];
- A.Fax := GenPhone;
- A.Telephone1:= GenPhone;
- If Random(2)>0 then
- A.Telephone2:= GenPhone;
- A.Dirty := False;
- C.AddressList.Add(A);
- end;
- C.Comments := 'My name is ' + C.FirstName + '.';
- C.ObjectState := posClean;
- FContactList.Add(C);
- end;
-end;
-
-
-initialization
- uContactManager:= nil;
-
-finalization
- uContactManager.Free;
-
-end.
-
diff --git a/extras/tiopf/demos/Demo_21_AdrsBook_MGM/demo_adrsbook_mgm.lpi b/extras/tiopf/demos/Demo_21_AdrsBook_MGM/demo_adrsbook_mgm.lpi
deleted file mode 100644
index ce40db74..00000000
--- a/extras/tiopf/demos/Demo_21_AdrsBook_MGM/demo_adrsbook_mgm.lpi
+++ /dev/null
@@ -1,100 +0,0 @@
-<?xml version="1.0"?>
-<CONFIG>
- <ProjectOptions>
- <Version Value="9"/>
- <General>
- <Flags>
- <SaveOnlyProjectUnits Value="True"/>
- <LRSInOutputDirectory Value="False"/>
- </Flags>
- <SessionStorage Value="InProjectDir"/>
- <MainUnit Value="0"/>
- </General>
- <VersionInfo>
- <StringTable ProductVersion=""/>
- </VersionInfo>
- <PublishOptions>
- <Version Value="2"/>
- <IgnoreBinaries Value="False"/>
- <IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/>
- <ExcludeFileFilter Value="*.(bak|ppu|ppw|o|so);*~;backup"/>
- </PublishOptions>
- <RunParams>
- <local>
- <FormatVersion Value="1"/>
- <LaunchingApplication PathPlusParams="/usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/>
- </local>
- </RunParams>
- <RequiredPackages Count="1">
- <Item1>
- <PackageName Value="tiOPFfpGUI"/>
- </Item1>
- </RequiredPackages>
- <Units Count="9">
- <Unit0>
- <Filename Value="demo_adrsbook_mgm.lpr"/>
- <IsPartOfProject Value="True"/>
- <UnitName Value="demo_adrsbook_mgm"/>
- </Unit0>
- <Unit1>
- <Filename Value="contactmanager.pas"/>
- <IsPartOfProject Value="True"/>
- <UnitName Value="contactmanager"/>
- </Unit1>
- <Unit2>
- <Filename Value="model.pas"/>
- <IsPartOfProject Value="True"/>
- <UnitName Value="model"/>
- </Unit2>
- <Unit3>
- <Filename Value="frmmain.pas"/>
- <IsPartOfProject Value="True"/>
- <UnitName Value="frmmain"/>
- </Unit3>
- <Unit4>
- <Filename Value="frmcontactmaint.pas"/>
- <IsPartOfProject Value="True"/>
- <UnitName Value="frmContactMaint"/>
- </Unit4>
- <Unit5>
- <Filename Value="frmcitylist.pas"/>
- <IsPartOfProject Value="True"/>
- <UnitName Value="frmCityList"/>
- </Unit5>
- <Unit6>
- <Filename Value="frmcitymaint.pas"/>
- <IsPartOfProject Value="True"/>
- <UnitName Value="frmCityMaint"/>
- </Unit6>
- <Unit7>
- <Filename Value="frmcountrylist.pas"/>
- <IsPartOfProject Value="True"/>
- <UnitName Value="frmCountryList"/>
- </Unit7>
- <Unit8>
- <Filename Value="frmaddressmaint.pas"/>
- <IsPartOfProject Value="True"/>
- <UnitName Value="frmAddressMaint"/>
- </Unit8>
- </Units>
- </ProjectOptions>
- <CompilerOptions>
- <Version Value="9"/>
- <SearchPaths>
- <UnitOutputDirectory Value="units/$(TargetCPU)-$(TargetOS)"/>
- </SearchPaths>
- <Parsing>
- <SyntaxOptions>
- <CStyleOperator Value="False"/>
- <AllowLabel Value="False"/>
- <CPPInline Value="False"/>
- <UseAnsiStrings Value="False"/>
- </SyntaxOptions>
- </Parsing>
- <Other>
- <CustomOptions Value="
-"/>
- <CompilerPath Value="$(CompPath)"/>
- </Other>
- </CompilerOptions>
-</CONFIG>
diff --git a/extras/tiopf/demos/Demo_21_AdrsBook_MGM/demo_adrsbook_mgm.lpr b/extras/tiopf/demos/Demo_21_AdrsBook_MGM/demo_adrsbook_mgm.lpr
deleted file mode 100644
index d5e48414..00000000
--- a/extras/tiopf/demos/Demo_21_AdrsBook_MGM/demo_adrsbook_mgm.lpr
+++ /dev/null
@@ -1,33 +0,0 @@
-program demo_adrsbook_mgm;
-
-{$mode objfpc}{$H+}
-
-uses
- {$IFDEF UNIX}{$IFDEF UseCThreads}
- cthreads,
- {$ENDIF}{$ENDIF}
- Classes, fpg_main, frmmain, frmcontactmaint, frmCityList, frmcitymaint,
- frmcountrylist, frmaddressmaint;
-
-
-
-procedure MainProc;
-var
- frm: TMainForm;
-begin
- fpgApplication.Initialize;
- frm := TMainForm.Create(nil);
- try
- frm.Show;
- fpgApplication.Run;
- finally
- frm.Free;
- end;
-end;
-
-begin
- Randomize;
- MainProc;
-end.
-
-
diff --git a/extras/tiopf/demos/Demo_21_AdrsBook_MGM/frmaddressmaint.pas b/extras/tiopf/demos/Demo_21_AdrsBook_MGM/frmaddressmaint.pas
deleted file mode 100644
index 931b36c5..00000000
--- a/extras/tiopf/demos/Demo_21_AdrsBook_MGM/frmaddressmaint.pas
+++ /dev/null
@@ -1,266 +0,0 @@
-unit frmAddressMaint;
-
-{$mode objfpc}{$H+}
-
-interface
-
-uses
- SysUtils, Classes, fpg_base, fpg_main, fpg_edit,
- fpg_widget, fpg_form, fpg_label, fpg_button, fpg_combobox,
- fpg_dialogs, fpg_menu,
- model, tiModelMediator;
-
-type
- TAddressEditForm = class(TfpgForm)
- private
- {@VFD_HEAD_BEGIN: AddressEditForm}
- cbType: TfpgComboBox;
- edNo: TfpgEdit;
- edStreet: TfpgEdit;
- cbCity: TfpgComboBox;
- edPhone1: TfpgEdit;
- edPhone2: TfpgEdit;
- edFax: TfpgEdit;
- lblName1: TfpgLabel;
- lblName2: TfpgLabel;
- lblName3: TfpgLabel;
- lblName4: TfpgLabel;
- lblName5: TfpgLabel;
- lblName6: TfpgLabel;
- lblName7: TfpgLabel;
- btnSave: TfpgButton;
- btnCancel: TfpgButton;
- {@VFD_HEAD_END: AddressEditForm}
- FData: TAddress;
- FMediator: TtiModelMediator;
- procedure SetData(const AValue: TAddress);
- procedure SetupMediators;
- public
- procedure AfterCreate; override;
- property Data: TAddress read FData write SetData;
- end;
-
-{@VFD_NEWFORM_DECL}
-
-function EditAddress(AData: TAddress): Boolean;
-
-implementation
-
-uses
- contactmanager;
-
-
-function EditAddress(AData: TAddress): Boolean;
-var
- frm: TAddressEditForm;
-begin
- frm:= TAddressEditForm.Create(nil);
- try
- frm.SetData(AData);
- result:= frm.ShowModal = mrOK;
- finally
- frm.Free;
- end;
-end;
-
-{@VFD_NEWFORM_IMPL}
-
-procedure TAddressEditForm.SetData(const AValue: TAddress);
-begin
- if FData=AValue then exit;
- FData:=AValue;
- SetupMediators;
-end;
-
-procedure TAddressEditForm.SetupMediators;
-begin
- if not Assigned(FMediator) then
- begin
- FMediator := TtiModelMediator.Create(self);
- FMediator.AddProperty('AddressType', cbType).ValueList := gContactManager.AddressTypeList;
- FMediator.AddProperty('Nr', edNo);
- FMediator.AddProperty('Street', edStreet);
- FMediator.AddProperty('City', cbCity).ValueList := gContactManager.CityList;
- FMediator.AddProperty('Telephone1', edPhone1);
- FMediator.AddProperty('Telephone2', edPhone2);
- FMediator.AddProperty('Fax', edFax);
- end;
- FMediator.Subject := FData;
- FMediator.Active := True;
-end;
-
-procedure TAddressEditForm.AfterCreate;
-begin
- {@VFD_BODY_BEGIN: AddressEditForm}
- Name := 'AddressEditForm';
- SetPosition(300, 231, 296, 282);
- WindowTitle := 'Address Edit Form';
-
- cbType := TfpgComboBox.Create(self);
- with cbType do
- begin
- Name := 'cbType';
- SetPosition(8, 24, 272, 22);
- FontDesc := '#List';
- end;
-
- edNo := TfpgEdit.Create(self);
- with edNo do
- begin
- Name := 'edNo';
- SetPosition(8, 68, 56, 22);
- TabOrder := 1;
- Text := '';
- FontDesc := '#Edit1';
- end;
-
- edStreet := TfpgEdit.Create(self);
- with edStreet do
- begin
- Name := 'edStreet';
- SetPosition(76, 68, 204, 22);
- TabOrder := 2;
- Text := '';
- FontDesc := '#Edit1';
- end;
-
- cbCity := TfpgComboBox.Create(self);
- with cbCity do
- begin
- Name := 'cbCity';
- SetPosition(8, 112, 272, 22);
- FontDesc := '#List';
- TabOrder := 3;
- end;
-
- edPhone1 := TfpgEdit.Create(self);
- with edPhone1 do
- begin
- Name := 'edPhone1';
- SetPosition(8, 160, 120, 22);
- TabOrder := 4;
- Text := '';
- FontDesc := '#Edit1';
- end;
-
- edPhone2 := TfpgEdit.Create(self);
- with edPhone2 do
- begin
- Name := 'edPhone2';
- SetPosition(160, 160, 120, 22);
- TabOrder := 5;
- Text := '';
- FontDesc := '#Edit1';
- end;
-
- edFax := TfpgEdit.Create(self);
- with edFax do
- begin
- Name := 'edFax';
- SetPosition(8, 204, 120, 22);
- TabOrder := 6;
- Text := '';
- FontDesc := '#Edit1';
- end;
-
- lblName1 := TfpgLabel.Create(self);
- with lblName1 do
- begin
- Name := 'lblName1';
- SetPosition(76, 52, 120, 16);
- FontDesc := '#Label1';
- Hint := '';
- Text := 'Street:';
- end;
-
- lblName2 := TfpgLabel.Create(self);
- with lblName2 do
- begin
- Name := 'lblName2';
- SetPosition(8, 52, 60, 16);
- FontDesc := '#Label1';
- Hint := '';
- Text := 'Number:';
- end;
-
- lblName3 := TfpgLabel.Create(self);
- with lblName3 do
- begin
- Name := 'lblName3';
- SetPosition(8, 144, 120, 16);
- FontDesc := '#Label1';
- Hint := '';
- Text := 'Telephone #1:';
- end;
-
- lblName4 := TfpgLabel.Create(self);
- with lblName4 do
- begin
- Name := 'lblName4';
- SetPosition(160, 144, 112, 16);
- FontDesc := '#Label1';
- Hint := '';
- Text := 'Telephone #2:';
- end;
-
- lblName5 := TfpgLabel.Create(self);
- with lblName5 do
- begin
- Name := 'lblName5';
- SetPosition(8, 188, 80, 16);
- FontDesc := '#Label1';
- Hint := '';
- Text := 'Fax:';
- end;
-
- lblName6 := TfpgLabel.Create(self);
- with lblName6 do
- begin
- Name := 'lblName6';
- SetPosition(8, 8, 80, 16);
- FontDesc := '#Label1';
- Hint := '';
- Text := 'Type:';
- end;
-
- lblName7 := TfpgLabel.Create(self);
- with lblName7 do
- begin
- Name := 'lblName7';
- SetPosition(8, 96, 80, 16);
- FontDesc := '#Label1';
- Hint := '';
- Text := 'City:';
- end;
-
- btnSave := TfpgButton.Create(self);
- with btnSave do
- begin
- Name := 'btnSave';
- SetPosition(124, 248, 80, 24);
- Text := 'Save';
- FontDesc := '#Label1';
- Hint := '';
- ImageName := '';
- TabOrder := 7;
- ModalResult := mrOK;
- end;
-
- btnCancel := TfpgButton.Create(self);
- with btnCancel do
- begin
- Name := 'btnCancel';
- SetPosition(208, 248, 80, 24);
- Text := 'Cancel';
- FontDesc := '#Label1';
- Hint := '';
- ImageName := '';
- TabOrder := 8;
- ModalResult := mrCancel;
- end;
-
- {@VFD_BODY_END: AddressEditForm}
-end;
-
-
-end.
diff --git a/extras/tiopf/demos/Demo_21_AdrsBook_MGM/frmcitylist.pas b/extras/tiopf/demos/Demo_21_AdrsBook_MGM/frmcitylist.pas
deleted file mode 100644
index 522362d1..00000000
--- a/extras/tiopf/demos/Demo_21_AdrsBook_MGM/frmcitylist.pas
+++ /dev/null
@@ -1,173 +0,0 @@
-unit frmCityList;
-
-{$mode objfpc}{$H+}
-
-interface
-
-uses
- SysUtils, Classes, fpg_base, fpg_main,
- fpg_widget, fpg_form, fpg_button,
- fpg_grid, fpg_dialogs, fpg_menu,
- fpg_panel,
- tiModelMediator, model;
-
-type
-
- TCityListForm = class(TfpgForm)
- private
- {@VFD_HEAD_BEGIN: CityListForm}
- bvlName1: TfpgBevel;
- btnAdd: TfpgButton;
- btnEdit: TfpgButton;
- btnDelete: TfpgButton;
- grdName1: TfpgStringGrid;
- btnCancel: TfpgButton;
- {@VFD_HEAD_END: CityListForm}
- FData: TCityList;
- FMediator: TtiModelMediator;
- procedure SetData(const AValue: TCityList);
- procedure SetupMediators;
- procedure btnEditClicked(Sender: TObject);
- public
- procedure AfterCreate; override;
- property Data: TCityList read FData write SetData;
- end;
-
-{@VFD_NEWFORM_DECL}
-
-procedure ShowCities(const AList: TCityList);
-
-
-implementation
-
-uses
- tiListMediators, frmCityMaint{, tiDialogs};
-
-
-procedure ShowCities(const AList: TCityList);
-var
- frm: TCityListForm;
-begin
- frm := TCityListForm.Create(nil);
- try
- frm.SetData(AList);
- frm.ShowModal;
- finally;
- frm.Free;
- end;
-end;
-
-{@VFD_NEWFORM_IMPL}
-
-procedure TCityListForm.SetupMediators;
-begin
- if not Assigned(FMediator) then
- begin
- FMediator := TtiModelMediator.Create(self);
- FMediator.AddComposite('Name(110);Zip(80);CountryAsString(150)', grdName1);
- end;
- FMediator.Subject := FData;
- FMediator.Active := True;
-end;
-
-procedure TCityListForm.btnEditClicked(Sender: TObject);
-var
- c: TCity;
-begin
- c := TCity(TtiStringGridMediatorView(FMediator.FindByComponent(grdName1).Mediator).SelectedObject);
-// tiShowString(c.AsDebugString);
-
- if not Assigned(c) then
- Exit; //==>
-
- if EditCity(c) then
- begin
- // we can save contact here
- end;
-end;
-
-procedure TCityListForm.SetData(const AValue: TCityList);
-begin
- if FData=AValue then exit;
- FData:=AValue;
- SetupMediators;
-end;
-
-procedure TCityListForm.AfterCreate;
-begin
- {@VFD_BODY_BEGIN: CityListForm}
- Name := 'CityListForm';
- SetPosition(412, 278, 421, 315);
- WindowTitle := 'City Listing';
-
- bvlName1 := TfpgBevel.Create(self);
- with bvlName1 do
- begin
- Name := 'bvlName1';
- SetPosition(0, 0, 420, 36);
- Anchors := [anLeft,anRight,anTop];
- Shape := bsSpacer;
- end;
-
- btnAdd := TfpgButton.Create(bvlName1);
- with btnAdd do
- begin
- Name := 'btnAdd';
- SetPosition(12, 4, 52, 24);
- Text := 'Add';
- FontDesc := '#Label1';
- ImageName := '';
- Enabled := False;
- end;
-
- btnEdit := TfpgButton.Create(bvlName1);
- with btnEdit do
- begin
- Name := 'btnEdit';
- SetPosition(68, 4, 52, 24);
- Text := 'Edit';
- FontDesc := '#Label1';
- ImageName := '';
- TabOrder := 1;
- OnClick := @btnEditClicked;
- end;
-
- btnDelete := TfpgButton.Create(bvlName1);
- with btnDelete do
- begin
- Name := 'btnDelete';
- SetPosition(124, 4, 52, 24);
- Text := 'Delete';
- FontDesc := '#Label1';
- ImageName := '';
- TabOrder := 2;
- Enabled := False;
- end;
-
- grdName1 := TfpgStringGrid.Create(self);
- with grdName1 do
- begin
- Name := 'grdName1';
- SetPosition(8, 40, 404, 220);
- FontDesc := '#Grid';
- HeaderFontDesc := '#GridHeader';
- TabOrder := 1;
- end;
-
- btnCancel := TfpgButton.Create(self);
- with btnCancel do
- begin
- Name := 'btnCancel';
- SetPosition(332, 276, 80, 24);
- Text := 'Cancel';
- FontDesc := '#Label1';
- ImageName := '';
- TabOrder := 2;
- ModalResult := mrOK;
- end;
-
- {@VFD_BODY_END: CityListForm}
-end;
-
-
-end.
diff --git a/extras/tiopf/demos/Demo_21_AdrsBook_MGM/frmcitymaint.pas b/extras/tiopf/demos/Demo_21_AdrsBook_MGM/frmcitymaint.pas
deleted file mode 100644
index 1b6f27f7..00000000
--- a/extras/tiopf/demos/Demo_21_AdrsBook_MGM/frmcitymaint.pas
+++ /dev/null
@@ -1,200 +0,0 @@
-unit frmCityMaint;
-
-{$mode objfpc}{$H+}
-
-interface
-
-uses
- SysUtils, Classes, fpg_base, fpg_main, fpg_edit,
- fpg_widget, fpg_form, fpg_label, fpg_button,
- fpg_dialogs, fpg_combobox,
- model, tiModelMediator;
-
-type
-
- TCityEditForm = class(TfpgForm)
- private
- {@VFD_HEAD_BEGIN: CityEditForm}
- lblName1: TfpgLabel;
- edName: TfpgEdit;
- lblName2: TfpgLabel;
- edZIP: TfpgEdit;
- lblName3: TfpgLabel;
- cbCountry: TfpgComboBox;
- btnSave: TfpgButton;
- btnCancel: TfpgButton;
- btnDebug: TfpgButton;
- {@VFD_HEAD_END: CityEditForm}
- FMediator: TtiModelMediator;
- FData: TCity;
- procedure SetData(const AValue: TCity);
- procedure SetupMediators;
- procedure btnDebugClicked(Sender: TObject);
- public
- procedure AfterCreate; override;
- property Data: TCity read FData write SetData;
- end;
-
-{@VFD_NEWFORM_DECL}
-
-function EditCity(AData: TCity): boolean;
-
-
-implementation
-
-uses
- tiBaseMediator, contactmanager, typinfo, tiDialogs;
-
-
-function EditCity(AData: TCity): boolean;
-var
- frm: TCityEditForm;
-begin
- frm:= TCityEditForm.Create(nil);
- try
- frm.SetData(AData);
- result:= frm.ShowModal = mrOK;
- finally
- frm.Free;
- end;
-end;
-
-{@VFD_NEWFORM_IMPL}
-
-procedure TCityEditForm.SetData(const AValue: TCity);
-begin
- if FData=AValue then exit;
- FData:=AValue;
- SetupMediators;
-end;
-
-procedure TCityEditForm.SetupMediators;
-begin
- if not Assigned(FMediator) then
- begin
- FMediator := TtiModelMediator.Create(self);
- FMediator.AddProperty('Name', edName);
- FMediator.AddProperty('ZIP', edZIP);
- FMediator.AddProperty('Country', cbCountry).ValueList := gContactManager.CountryList;
- end;
- FMediator.Subject := FData;
- FMediator.Active := True;
-end;
-
-procedure TCityEditForm.btnDebugClicked(Sender: TObject);
-begin
- tiShowString(FData.AsDebugString);
-end;
-
-procedure TCityEditForm.AfterCreate;
-begin
- {@VFD_BODY_BEGIN: CityEditForm}
- Name := 'CityEditForm';
- SetPosition(673, 204, 350, 186);
- WindowTitle := 'City Maintenance';
-
- lblName1 := TfpgLabel.Create(self);
- with lblName1 do
- begin
- Name := 'lblName1';
- SetPosition(8, 8, 80, 16);
- FontDesc := '#Label1';
- Hint := '';
- Text := 'City name:';
- end;
-
- edName := TfpgEdit.Create(self);
- with edName do
- begin
- Name := 'edName';
- SetPosition(8, 24, 200, 22);
- TabOrder := 1;
- Text := '';
- FontDesc := '#Edit1';
- end;
-
- lblName2 := TfpgLabel.Create(self);
- with lblName2 do
- begin
- Name := 'lblName2';
- SetPosition(8, 52, 80, 16);
- FontDesc := '#Label1';
- Hint := '';
- Text := 'ZIP code:';
- end;
-
- edZIP := TfpgEdit.Create(self);
- with edZIP do
- begin
- Name := 'edZIP';
- SetPosition(8, 68, 120, 22);
- TabOrder := 3;
- Text := '';
- FontDesc := '#Edit1';
- end;
-
- lblName3 := TfpgLabel.Create(self);
- with lblName3 do
- begin
- Name := 'lblName3';
- SetPosition(8, 96, 80, 16);
- FontDesc := '#Label1';
- Hint := '';
- Text := 'Country:';
- end;
-
- cbCountry := TfpgComboBox.Create(self);
- with cbCountry do
- begin
- Name := 'cbCountry';
- SetPosition(8, 112, 200, 22);
- FontDesc := '#List';
- TabOrder := 5;
- end;
-
- btnSave := TfpgButton.Create(self);
- with btnSave do
- begin
- Name := 'btnSave';
- SetPosition(182, 156, 80, 24);
- Anchors := [anRight,anBottom];
- Text := 'Save';
- FontDesc := '#Label1';
- Hint := '';
- ImageName := '';
- TabOrder := 6;
- ModalResult := mrOK;
- end;
-
- btnCancel := TfpgButton.Create(self);
- with btnCancel do
- begin
- Name := 'btnCancel';
- SetPosition(266, 156, 80, 24);
- Anchors := [anRight,anBottom];
- Text := 'Cancel';
- FontDesc := '#Label1';
- Hint := '';
- ImageName := '';
- TabOrder := 7;
- ModalResult := mrCancel;
- end;
-
- btnDebug := TfpgButton.Create(self);
- with btnDebug do
- begin
- Name := 'btnDebug';
- SetPosition(8, 156, 100, 24);
- Text := 'Debug (Show)';
- FontDesc := '#Label1';
- Hint := '';
- ImageName := '';
- TabOrder := 8;
- OnClick := @btnDebugClicked;
- end;
-
- {@VFD_BODY_END: CityEditForm}
-end;
-
-
-end.
diff --git a/extras/tiopf/demos/Demo_21_AdrsBook_MGM/frmcontactmaint.pas b/extras/tiopf/demos/Demo_21_AdrsBook_MGM/frmcontactmaint.pas
deleted file mode 100644
index 8bd46e31..00000000
--- a/extras/tiopf/demos/Demo_21_AdrsBook_MGM/frmcontactmaint.pas
+++ /dev/null
@@ -1,335 +0,0 @@
-unit frmContactMaint;
-
-{$mode objfpc}{$H+}
-
-interface
-
-uses
- SysUtils, Classes, fpg_base, fpg_main, fpg_edit,
- fpg_widget, fpg_form, fpg_label, fpg_button,
- fpg_listview, fpg_memo,
- model, tiModelMediator;
-
-type
-
- TContactEditForm = class(TfpgForm)
- private
- {@VFD_HEAD_BEGIN: ContactEditForm}
- lblName1: TfpgLabel;
- edFName: TfpgEdit;
- lblName2: TfpgLabel;
- edLName: TfpgEdit;
- lblName3: TfpgLabel;
- edEmail: TfpgEdit;
- lblName4: TfpgLabel;
- edMobile: TfpgEdit;
- lblName5: TfpgLabel;
- meComments: TfpgMemo;
- lblName6: TfpgLabel;
- lvAddresses: TfpgListView;
- btnSave: TfpgButton;
- btnCancel: TfpgButton;
- btnAdd: TfpgButton;
- btnEdit: TfpgButton;
- btnDelete: TfpgButton;
- btnDebug: TfpgButton;
- {@VFD_HEAD_END: ContactEditForm}
- FData: TContact;
- FMediator: TtiModelMediator;
- FAdrsMediator: TtiModelMediator;
- procedure SetData(const AValue: TContact);
- procedure SetupMediators;
- procedure btnDebugClicked(Sender: TObject);
- procedure btnEditClicked(Sender: TObject);
- public
- procedure AfterCreate; override;
- property Data: TContact read FData write SetData;
- end;
-
-{@VFD_NEWFORM_DECL}
-
-function EditContact(AData: TContact): Boolean;
-
-
-implementation
-
-uses
- contactmanager, tiDialogs, frmAddressMaint, tiListMediators;
-
-
-function EditContact(AData: TContact): Boolean;
-var
- frm: TContactEditForm;
-begin
- frm:= TContactEditForm.Create(nil);
- try
- frm.SetData(AData);
- result:= frm.ShowModal = mrOK;
- finally
- frm.Free;
- end;
-end;
-
-
-{@VFD_NEWFORM_IMPL}
-
-procedure TContactEditForm.SetupMediators;
-begin
- if not Assigned(FMediator) then
- begin
- FMediator := TtiModelMediator.Create(self);
- FMediator.AddProperty('FirstName', edFName);
- FMediator.AddProperty('LastName', edLName);
- FMediator.AddProperty('EMail', edEmail);
- FMediator.AddProperty('Mobile', edMobile);
- FMediator.AddProperty('Comments', meComments);
- end;
- FMediator.Subject := FData;
- FMediator.Active := True;
-
- if not Assigned(FAdrsMediator) then
- begin
- FAdrsMediator := TtiModelMediator.Create(self);
- FAdrsMediator.AddComposite({'AddressType.Name;}'AddressType4GUI(50,"Type");Nr;Street;Telephone1', lvAddresses);
- end;
- FAdrsMediator.Subject := FData.AddressList;
- FAdrsMediator.Active := True;
-end;
-
-procedure TContactEditForm.btnDebugClicked(Sender: TObject);
-begin
- tiShowString(FData.AsDebugString);
-end;
-
-procedure TContactEditForm.btnEditClicked(Sender: TObject);
-var
- obj: TAddress;
-begin
- obj := TAddress(TtiListViewMediatorView(FAdrsMediator.FindByComponent(lvAddresses).Mediator).SelectedObject);
- tiShowString(obj.AsDebugString);
-
- if not Assigned(obj) then
- Exit; //==>
-
- if EditAddress(obj) then
- begin
- // do nothing
- end;
-end;
-
-procedure TContactEditForm.SetData(const AValue: TContact);
-begin
- if FData=AValue then exit;
- FData:=AValue;
- SetupMediators;
-end;
-
-procedure TContactEditForm.AfterCreate;
-begin
- {@VFD_BODY_BEGIN: ContactEditForm}
- Name := 'ContactEditForm';
- SetPosition(513, 423, 537, 331);
- WindowTitle := 'Contact Edit Form';
-
- lblName1 := TfpgLabel.Create(self);
- with lblName1 do
- begin
- Name := 'lblName1';
- SetPosition(8, 8, 80, 16);
- FontDesc := '#Label1';
- Hint := '';
- Text := 'Firstname:';
- end;
-
- edFName := TfpgEdit.Create(self);
- with edFName do
- begin
- Name := 'edFName';
- SetPosition(8, 24, 216, 22);
- TabOrder := 1;
- Text := '';
- FontDesc := '#Edit1';
- end;
-
- lblName2 := TfpgLabel.Create(self);
- with lblName2 do
- begin
- Name := 'lblName2';
- SetPosition(8, 52, 80, 16);
- FontDesc := '#Label1';
- Hint := '';
- Text := 'Lastname:';
- end;
-
- edLName := TfpgEdit.Create(self);
- with edLName do
- begin
- Name := 'edLName';
- SetPosition(8, 68, 216, 22);
- TabOrder := 3;
- Text := '';
- FontDesc := '#Edit1';
- end;
-
- lblName3 := TfpgLabel.Create(self);
- with lblName3 do
- begin
- Name := 'lblName3';
- SetPosition(8, 96, 80, 16);
- FontDesc := '#Label1';
- Hint := '';
- Text := 'EMail:';
- end;
-
- edEmail := TfpgEdit.Create(self);
- with edEmail do
- begin
- Name := 'edEmail';
- SetPosition(8, 112, 216, 22);
- TabOrder := 5;
- Text := '';
- FontDesc := '#Edit1';
- end;
-
- lblName4 := TfpgLabel.Create(self);
- with lblName4 do
- begin
- Name := 'lblName4';
- SetPosition(8, 140, 80, 16);
- FontDesc := '#Label1';
- Hint := '';
- Text := 'Mobile:';
- end;
-
- edMobile := TfpgEdit.Create(self);
- with edMobile do
- begin
- Name := 'edMobile';
- SetPosition(8, 156, 216, 22);
- TabOrder := 7;
- Text := '';
- FontDesc := '#Edit1';
- end;
-
- lblName5 := TfpgLabel.Create(self);
- with lblName5 do
- begin
- Name := 'lblName5';
- SetPosition(8, 184, 80, 16);
- FontDesc := '#Label1';
- Hint := '';
- Text := 'Comments:';
- end;
-
- meComments := TfpgMemo.Create(self);
- with meComments do
- begin
- Name := 'meComments';
- SetPosition(8, 200, 216, 80);
- FontDesc := '#Edit1';
- TabOrder := 9;
- Lines.text := 'Hello';
- end;
-
- lblName6 := TfpgLabel.Create(self);
- with lblName6 do
- begin
- Name := 'lblName6';
- SetPosition(264, 8, 80, 16);
- FontDesc := '#Label1';
- Hint := '';
- Text := 'Addresses:';
- end;
-
- lvAddresses := TfpgListView.Create(self);
- with lvAddresses do
- begin
- Name := 'lvAddresses';
- SetPosition(264, 24, 260, 124);
- ShowHeaders := True;
- TabOrder := 11;
- end;
-
- btnSave := TfpgButton.Create(self);
- with btnSave do
- begin
- Name := 'btnSave';
- SetPosition(364, 300, 80, 24);
- Text := 'Save';
- FontDesc := '#Label1';
- Hint := '';
- ImageName := '';
- TabOrder := 12;
- ModalResult := mrOK;
- end;
-
- btnCancel := TfpgButton.Create(self);
- with btnCancel do
- begin
- Name := 'btnCancel';
- SetPosition(448, 300, 80, 24);
- Text := 'Cancel';
- FontDesc := '#Label1';
- Hint := '';
- ImageName := '';
- TabOrder := 13;
- ModalResult := mrCancel;
- end;
-
- btnAdd := TfpgButton.Create(self);
- with btnAdd do
- begin
- Name := 'btnAdd';
- SetPosition(264, 152, 52, 24);
- Text := 'Add';
- FontDesc := '#Label1';
- Hint := '';
- ImageName := '';
- TabOrder := 14;
- Enabled := False;
- end;
-
- btnEdit := TfpgButton.Create(self);
- with btnEdit do
- begin
- Name := 'btnEdit';
- SetPosition(320, 152, 52, 24);
- Text := 'Edit';
- FontDesc := '#Label1';
- Hint := '';
- ImageName := '';
- TabOrder := 15;
- OnClick := @btnEditClicked;
- end;
-
- btnDelete := TfpgButton.Create(self);
- with btnDelete do
- begin
- Name := 'btnDelete';
- SetPosition(376, 152, 52, 24);
- Text := 'Delete';
- FontDesc := '#Label1';
- Hint := '';
- ImageName := '';
- TabOrder := 16;
- Enabled := False;
- end;
-
- btnDebug := TfpgButton.Create(self);
- with btnDebug do
- begin
- Name := 'btnDebug';
- SetPosition(8, 300, 100, 24);
- Text := 'Debug (Show)';
- FontDesc := '#Label1';
- Hint := '';
- ImageName := '';
- TabOrder := 17;
- OnClick := @btnDebugClicked;
- end;
-
- {@VFD_BODY_END: ContactEditForm}
-end;
-
-
-end.
diff --git a/extras/tiopf/demos/Demo_21_AdrsBook_MGM/frmcountrylist.pas b/extras/tiopf/demos/Demo_21_AdrsBook_MGM/frmcountrylist.pas
deleted file mode 100644
index c9f54537..00000000
--- a/extras/tiopf/demos/Demo_21_AdrsBook_MGM/frmcountrylist.pas
+++ /dev/null
@@ -1,166 +0,0 @@
-unit frmCountryList;
-
-{$mode objfpc}{$H+}
-
-interface
-
-uses
- SysUtils, Classes, fpg_base, fpg_main,
- fpg_widget, fpg_form, fpg_button, fpg_grid,
- fpg_dialogs, fpg_menu,
- fpg_panel,
- model, tiModelMediator;
-
-type
-
- TCountryListForm = class(TfpgForm)
- private
- {@VFD_HEAD_BEGIN: CountryListForm}
- bvlName1: TfpgBevel;
- btnAdd: TfpgButton;
- btnEdit: TfpgButton;
- btnDelete: TfpgButton;
- grdName1: TfpgStringGrid;
- btnCancel: TfpgButton;
- {@VFD_HEAD_END: CountryListForm}
- FData: TCountryList;
- FMediator: TtiModelMediator;
- procedure SetData(const AValue: TCountryList);
- procedure SetupMediators;
- procedure btnEditClicked(Sender: TObject);
- public
- procedure AfterCreate; override;
- property Data: TCountryList read FData write SetData;
- end;
-
-{@VFD_NEWFORM_DECL}
-
-procedure ShowCountries(const AList: TCountryList);
-
-
-implementation
-
-
-
-
-procedure ShowCountries(const AList: TCountryList);
-var
- frm: TCountryListForm;
-begin
- frm := TCountryListForm.Create(nil);
- try
- frm.SetData(AList);
- frm.ShowModal;
- finally;
- frm.Free;
- end;
-end;
-
-{@VFD_NEWFORM_IMPL}
-
-procedure TCountryListForm.SetupMediators;
-begin
- if not Assigned(FMediator) then
- begin
- FMediator := TtiModelMediator.Create(self);
- FMediator.AddComposite('ISO(60);Name(110)', grdName1);
- end;
- FMediator.Subject := FData;
- FMediator.Active := True;
-end;
-
-procedure TCountryListForm.btnEditClicked(Sender: TObject);
-begin
- //
-end;
-
-procedure TCountryListForm.SetData(const AValue: TCountryList);
-begin
- if FData=AValue then exit;
- FData:=AValue;
- SetupMediators;
-end;
-
-procedure TCountryListForm.AfterCreate;
-begin
- {@VFD_BODY_BEGIN: CountryListForm}
- Name := 'CountryListForm';
- SetPosition(412, 278, 421, 315);
- WindowTitle := 'Country Listing';
-
- bvlName1 := TfpgBevel.Create(self);
- with bvlName1 do
- begin
- Name := 'bvlName1';
- SetPosition(0, 0, 420, 36);
- Anchors := [anLeft,anRight,anTop];
- Shape := bsSpacer;
- end;
-
- btnAdd := TfpgButton.Create(bvlName1);
- with btnAdd do
- begin
- Name := 'btnAdd';
- SetPosition(12, 4, 52, 24);
- Text := 'Add';
- FontDesc := '#Label1';
- Hint := '';
- ImageName := '';
- Enabled := False;
- end;
-
- btnEdit := TfpgButton.Create(bvlName1);
- with btnEdit do
- begin
- Name := 'btnEdit';
- SetPosition(68, 4, 52, 24);
- Text := 'Edit';
- FontDesc := '#Label1';
- Hint := '';
- ImageName := '';
- TabOrder := 1;
- OnClick := @btnEditClicked;
- Enabled := False;
- end;
-
- btnDelete := TfpgButton.Create(bvlName1);
- with btnDelete do
- begin
- Name := 'btnDelete';
- SetPosition(124, 4, 52, 24);
- Text := 'Delete';
- FontDesc := '#Label1';
- Hint := '';
- ImageName := '';
- TabOrder := 2;
- Enabled := False;
- end;
-
- grdName1 := TfpgStringGrid.Create(self);
- with grdName1 do
- begin
- Name := 'grdName1';
- SetPosition(8, 40, 404, 220);
- FontDesc := '#Grid';
- HeaderFontDesc := '#GridHeader';
- TabOrder := 1;
- end;
-
- btnCancel := TfpgButton.Create(self);
- with btnCancel do
- begin
- Name := 'btnCancel';
- SetPosition(332, 276, 80, 24);
- Text := 'Cancel';
- FontDesc := '#Label1';
- Hint := '';
- ImageName := '';
- TabOrder := 2;
- ModalResult := mrOK;
- end;
-
- {@VFD_BODY_END: CountryListForm}
-end;
-
-
-end.
diff --git a/extras/tiopf/demos/Demo_21_AdrsBook_MGM/frmmain.pas b/extras/tiopf/demos/Demo_21_AdrsBook_MGM/frmmain.pas
deleted file mode 100644
index 979e6592..00000000
--- a/extras/tiopf/demos/Demo_21_AdrsBook_MGM/frmmain.pas
+++ /dev/null
@@ -1,276 +0,0 @@
-unit frmmain;
-
-{$mode objfpc}{$H+}
-
-interface
-
-uses
- SysUtils, Classes,
- { fpGUI Toolkit }
- fpg_base, fpg_main, fpg_widget, fpg_form, fpg_button,
- fpg_grid, fpg_dialogs, fpg_menu,
- { tiOPF }
- tiModelMediator;
-
-type
- { The main application window }
- TMainForm = class(TfpgForm)
- private
- {@VFD_HEAD_BEGIN: MainForm}
- grdContacts: TfpgStringGrid;
- btnAdd: TfpgButton;
- btnEdit: TfpgButton;
- btnDelete: TfpgButton;
- MainMenu: TfpgMenuBar;
- miFile: TfpgPopupMenu;
- miEdit: TfpgPopupMenu;
- miSystem: TfpgPopupMenu;
- {@VFD_HEAD_END: MainForm}
- FMediator: TtiModelMediator;
- procedure FormShow(Sender: TObject);
- procedure GridDoubleClicked(Sender: TObject; AButton: TMouseButton; AShift: TShiftState; const AMousePos: TPoint);
- procedure SetupMediators;
- procedure miEditAddClick(Sender: TObject);
- procedure miEditEditClick(Sender: TObject);
- procedure miEditDeleteClick(Sender: TObject);
- procedure miSystemCityList(Sender: TObject);
- procedure miSystemCountryList(Sender: TObject);
- procedure miSystemAddressTypeList(Sender: TObject);
- procedure miFileExit(Sender: TObject);
- public
- procedure AfterCreate; override;
- procedure AfterConstruction; override;
- constructor Create(AOwner: TComponent); override;
- end;
-
-{@VFD_NEWFORM_DECL}
-
-implementation
-
-uses
- model, contactmanager, tiListMediators, tiBaseMediator, tiMediators,
- frmcontactmaint, frmcitylist, frmcountrylist, tiDialogs, tiObject;
-
-{@VFD_NEWFORM_IMPL}
-
-procedure TMainForm.FormShow(Sender: TObject);
-begin
-// do nothing yet
-end;
-
-procedure TMainForm.GridDoubleClicked(Sender: TObject; AButton: TMouseButton;
- AShift: TShiftState; const AMousePos: TPoint);
-begin
- miEditEditClick(nil);
-end;
-
-procedure TMainForm.SetupMediators;
-begin
- if not Assigned(FMediator) then
- begin
- FMediator := TtiModelMediator.Create(self);
- FMediator.AddComposite('FirstName;LastName(130);EMail(180);Mobile(130);Comments(200)', grdContacts);
- end;
- FMediator.Subject := gContactManager.ContactList;
- FMediator.Active := True;
-end;
-
-procedure TMainForm.miEditAddClick(Sender: TObject);
-var
- c: TContact;
-begin
- c := TContact.CreateNew;
- if EditContact(c) then
- gContactManager.ContactList.Add(c)
- else
- c.Free;
-end;
-
-procedure TMainForm.miEditEditClick(Sender: TObject);
-var
- c: TContact;
-begin
- if grdContacts.FocusRow < 0 then
- begin
- tiAppError('You need to select a Contact first');
- Exit;
- end;
- c := TContact(TtiStringGridMediatorView(FMediator.FindByComponent(grdContacts).Mediator).SelectedObject);
-
- if not Assigned(c) then
- Exit; //==>
-
- if EditContact(c) then
- begin
- // we can save contact here if we wanted
- end;
-end;
-
-procedure TMainForm.miEditDeleteClick(Sender: TObject);
-var
- c: TContact;
-begin
- if grdContacts.FocusRow < 0 then
- begin
- tiAppError('You need to select a Contact first');
- Exit;
- end;
- c := TContact(TtiStringGridMediatorView(FMediator.FindByComponent(grdContacts).Mediator).SelectedObject);
-
- if tiAppConfirmation('Are you sure you want to delete <%s>', [c.FirstName + ' ' + c.LastName]) then
- begin
- { We can't use .Deleted property here, because we don't actually save
- changes. This means the ObjectState will only be posDelete and not
- posDeleted, which is what .FreeDeleted is looking for. }
-// c.Deleted := True;
- c.ObjectState := posDeleted;
- gContactManager.ContactList.FreeDeleted;
- end;
-end;
-
-procedure TMainForm.miSystemCityList(Sender: TObject);
-begin
- ShowCities(gContactManager.CityList);
-end;
-
-procedure TMainForm.miSystemCountryList(Sender: TObject);
-begin
- ShowCountries(gContactManager.CountryList);
-end;
-
-procedure TMainForm.miSystemAddressTypeList(Sender: TObject);
-begin
- // ShowAddressTypeList(gContactManager.AddressTypeList);
-end;
-
-procedure TMainForm.miFileExit(Sender: TObject);
-begin
- Close;
-end;
-
-procedure TMainForm.AfterCreate;
-begin
- {@VFD_BODY_BEGIN: MainForm}
- Name := 'MainForm';
- SetPosition(373, 273, 540, 404);
- WindowTitle := 'Demo 21: Address Book Demo using MGM';
-
- grdContacts := TfpgStringGrid.Create(self);
- with grdContacts do
- begin
- Name := 'grdContacts';
- SetPosition(12, 56, 516, 336);
- Anchors := [anLeft,anRight,anTop,anBottom];
- FontDesc := '#Grid';
- HeaderFontDesc := '#GridHeader';
- OnDoubleClick := @GridDoubleClicked;
- end;
-
- btnAdd := TfpgButton.Create(self);
- with btnAdd do
- begin
- Name := 'btnAdd';
- SetPosition(12, 28, 52, 24);
- Text := 'Add';
- FontDesc := '#Label1';
- Hint := '';
- ImageName := '';
- TabOrder := 1;
- OnClick := @miEditAddClick;
- end;
-
- btnEdit := TfpgButton.Create(self);
- with btnEdit do
- begin
- Name := 'btnEdit';
- SetPosition(68, 28, 52, 24);
- Text := 'Edit';
- FontDesc := '#Label1';
- Hint := '';
- ImageName := '';
- TabOrder := 2;
- OnClick := @miEditEditClick;
- end;
-
- btnDelete := TfpgButton.Create(self);
- with btnDelete do
- begin
- Name := 'btnDelete';
- SetPosition(124, 28, 52, 24);
- Text := 'Delete';
- FontDesc := '#Label1';
- Hint := '';
- ImageName := '';
- TabOrder := 3;
- OnClick := @miEditDeleteClick;
- end;
-
- MainMenu := TfpgMenuBar.Create(self);
- with MainMenu do
- begin
- Name := 'MainMenu';
- SetPosition(0, 0, 540, 24);
- Anchors := [anLeft,anRight,anTop];
- end;
-
- miFile := TfpgPopupMenu.Create(self);
- with miFile do
- begin
- Name := 'miFile';
- SetPosition(344, 136, 120, 20);
- AddMenuItem('E&xit', 'Alt+F4', @miFileExit);
- end;
-
- miEdit := TfpgPopupMenu.Create(self);
- with miEdit do
- begin
- Name := 'miEdit';
- SetPosition(344, 156, 120, 20);
- AddMenuItem('Add Contact', '', @miEditAddClick);
- AddMenuItem('Edit Contact', '', @miEditEditClick);
- AddMenuItem('Delete Contact', '', @miEditDeleteClick);
- end;
-
- miSystem := TfpgPopupMenu.Create(self);
- with miSystem do
- begin
- Name := 'miSystem';
- SetPosition(344, 176, 120, 20);
- AddMenuItem('City List', '', @miSystemCityList);
- AddMenuItem('Country List', '', @miSystemCountryList);
- AddMenuItem('Address Type List', '', @miSystemAddressTypeList).Enabled := False;
- end;
-
- {@VFD_BODY_END: MainForm}
-
- // setup main menu
- MainMenu.AddMenuItem('&File', nil).SubMenu := miFile;
- MainMenu.AddMenuItem('&Edit', nil).SubMenu := miEdit;
- MainMenu.AddMenuItem('&System', nil).SubMenu := miSystem;
-end;
-
-procedure TMainForm.AfterConstruction;
-begin
- inherited AfterConstruction;
- SetupMediators;
-end;
-
-constructor TMainForm.Create(AOwner: TComponent);
-begin
- inherited Create(AOwner);
- gContactManager.PopulateContacts;
- OnShow := @FormShow;
-end;
-
-
-initialization
- RegisterFallBackMediators;
-
- gMediatorManager.RegisterMediator(TtiStringGridMediatorView, TContactList);
- gMediatorManager.RegisterMediator(TtiListViewMediatorView, TAddressList);
- gMediatorManager.RegisterMediator(TtiStringGridMediatorView, TCityList);
- gMediatorManager.RegisterMediator(TtiStringGridMediatorView, TCountryList);
- gMediatorManager.RegisterMediator(TtiDynamicComboBoxMediatorView, TCity, 'Country');
- gMediatorManager.RegisterMediator(TtiDynamicComboBoxMediatorView, TAddressType, 'AddressType');
-
-end.
diff --git a/extras/tiopf/demos/Demo_21_AdrsBook_MGM/model.pas b/extras/tiopf/demos/Demo_21_AdrsBook_MGM/model.pas
deleted file mode 100644
index 643fe7c0..00000000
--- a/extras/tiopf/demos/Demo_21_AdrsBook_MGM/model.pas
+++ /dev/null
@@ -1,553 +0,0 @@
-{
- The business object model
-}
-unit model;
-
-{$IFDEF FPC}
- {$mode objfpc}{$H+}
-{$ENDIF}
-
-interface
-
-uses
- Classes, SysUtils, tiObject;
-
-type
-
- TMarkObject = class(TtiObject)
- protected
- procedure Mark;
- end;
-
-
- TMarkObjectList = class(TtiObjectList)
- protected
- procedure Mark;
- end;
-
-
- TCountry = class(TMarkObject)
- private
- FISO: string;
- FName: string;
- procedure SetISO(const AValue: string);
- procedure SetName(const AValue: string);
- protected
- function GetCaption: string; override;
- public
- constructor CreateNew(const AISO: string; const AName: string); reintroduce; overload;
- published
- property ISO: string read FISO write SetISO;
- property Name: string read FName write SetName;
- end;
-
-
- TCountryList = class(TMarkObjectList)
- protected
- function GetItems(i: integer): TCountry; reintroduce;
- procedure SetItems(i: integer; const AValue: TCountry); reintroduce;
- public
- function Add(const AObject: TCountry): integer; reintroduce;
- property Items[i: integer]: TCountry read GetItems write SetItems; default;
- end;
-
-
- TCity = class(TMarkObject)
- private
- FZIP: string;
- FName: string;
- FCountry: TCountry;
- function GetCountryAsString: string;
- procedure SetCountry(const AValue: TCountry);
- procedure SetName(const AValue: string);
- procedure SetZIP(const AValue: string);
- protected
- function GetCaption: string; override;
- public
- procedure AssignClassProps(ASource: TtiObject); override;
- published
- property Country: TCountry read FCountry write SetCountry;
- property Name: string read FName write SetName;
- property ZIP: string read FZIP write SetZIP;
- property CountryAsString: string read GetCountryAsString;
- end;
-
-
- TCityList = class(TMarkObjectList)
- protected
- function GetItems(i: integer): TCity; reintroduce;
- procedure SetItems(i: integer; const AValue: TCity); reintroduce;
- public
- function Add(const AObject: TCity): integer; reintroduce;
- property Items[i: integer]: TCity read GetItems write SetItems; default;
- end;
-
-
- TAddressType = class(TMarkObject)
- private
- FName: string;
- procedure SetName(const AValue: string);
- protected
- function GetCaption: string; override;
- published
- property Name: string read FName write SetName;
- end;
-
-
- TAddressTypeList = class(TMarkObjectList)
- protected
- function GetItems(i: integer): TAddressType; reintroduce;
- procedure SetItems(i: integer; const AValue: TAddressType); reintroduce;
- public
- function Add(const AObject: TAddressType): integer; reintroduce;
- property Items[i: integer]: TAddressType read GetItems write SetItems; default;
- end;
-
-
- TAddress = class(TMarkObject)
- private
- FAddressType: TAddressType;
- FCity: TCity;
- FFax: string;
- FNr: integer;
- FStreet: string;
- FTelephone1: string;
- FTelephone2: string;
- function GetAddressType4GUI: string;
- procedure SetAddressType(const AValue: TAddressType);
- procedure SetCity(const AValue: TCity);
- procedure SetFax(const AValue: string);
- procedure SetNr(const AValue: integer);
- procedure SetStreet(const AValue: string);
- procedure SetTelephone1(const AValue: string);
- procedure SetTelephone2(const AValue: string);
- public
- constructor Create; override;
- procedure AssignClassProps(ASource: TtiObject); override;
- published
- property Street: string read FStreet write SetStreet;
- property Nr: integer read FNr write SetNr;
- property Telephone1: string read FTelephone1 write SetTelephone1;
- property Telephone2: string read FTelephone2 write SetTelephone2;
- property Fax: string read FFax write SetFax;
- property AddressType: TAddressType read FAddressType write SetAddressType;
- property AddressType4GUI: string read GetAddressType4GUI;
- property City: TCity read FCity write SetCity;
- end;
-
-
- TAddressList = class(TMarkObjectList)
- protected
- function GetItems(i: integer): TAddress; reintroduce;
- procedure SetItems(i: integer; const AValue: TAddress); reintroduce;
- public
- function Add(const AObject: TAddress): integer; reintroduce;
- property Items[i: integer]: TAddress read GetItems write SetItems; default;
- end;
-
-
- TContact = class(TMarkObject)
- private
- FAddressList: TAddressList;
- FComments: string;
- FEmail: string;
- FFirstName: string;
- FLastName: string;
- FMobile: string;
- procedure SetComments(const AValue: string);
- procedure SetEmail(const AValue: string);
- procedure SetFirstName(const AValue: string);
- procedure SetLastName(const AValue: string);
- procedure SetMobile(const AValue: string);
- public
- constructor Create; override;
- destructor Destroy; override;
- published
- property FirstName: string read FFirstName write SetFirstName;
- property LastName: string read FLastName write SetLastName;
- property EMail: string read FEmail write SetEmail;
- property Mobile: string read FMobile write SetMobile;
- property Comments: string read FComments write SetComments;
- property AddressList: TAddressList read FAddressList;
- end;
-
-
- TContactList = class(TMarkObjectList)
- protected
- function GetItems(i: integer): TContact; reintroduce;
- procedure SetItems(i: integer; const AValue: TContact); reintroduce;
- public
- function Add(const AObject: TContact): integer; reintroduce;
- property Items[i: integer]: TContact read GetItems write SetItems; default;
- end;
-
-
-
-implementation
-
-
-{ TMarkObject }
-
-procedure TMarkObject.Mark;
-begin
- if (ObjectState <> posEmpty) then
- Dirty:= True;
-end;
-
-{ TMarkObjectList }
-
-procedure TMarkObjectList.Mark;
-begin
- if (ObjectState <> posEmpty) then
- Dirty:= True;
-end;
-
-{ TCountry }
-
-procedure TCountry.SetISO(const AValue: string);
-begin
- if FISO = AValue then
- Exit; //==>
-
- BeginUpdate;
- FISO:= AValue;
- Mark;
- EndUpdate;
-end;
-
-procedure TCountry.SetName(const AValue: string);
-begin
- if FName = AValue then
- Exit; //==>
-
- BeginUpdate;
- FName:= AValue;
- Mark;
- EndUpdate;
-end;
-
-function TCountry.GetCaption: string;
-begin
- Result:= Name;
-end;
-
-constructor TCountry.CreateNew(const AISO: string; const AName: string);
-begin
- inherited CreateNew;
- FISO:= AISO;
- FName:= AName;
-end;
-
-{ TCity }
-
-procedure TCity.SetCountry(const AValue: TCountry);
-begin
- if FCountry = AValue then
- Exit; //==>
-
- BeginUpdate;
- FCountry:= AValue;
- Mark;
- EndUpdate;
-end;
-
-function TCity.GetCountryAsString: string;
-begin
- result:= Country.Name + ' (' + Country.ISO + ')';
-end;
-
-procedure TCity.SetName(const AValue: string);
-begin
- if FName = AValue then
- Exit; //==>
-
- BeginUpdate;
- FName:= AValue;
- Mark;
- EndUpdate;
-end;
-
-procedure TCity.SetZIP(const AValue: string);
-begin
- if FZip = AValue then
- Exit; //==>
-
- BeginUpdate;
- FZip:= AValue;
- Mark;
- EndUpdate;
-end;
-
-function TCity.GetCaption: string;
-begin
- Result := Name;
-end;
-
-procedure TCity.AssignClassProps(ASource: TtiObject);
-begin
- FCountry:= TCity(ASource).Country; // reference only
-end;
-
-{ TAddressType }
-
-procedure TAddressType.SetName(const AValue: string);
-begin
- if FName = AValue then
- Exit; //==>
-
- BeginUpdate;
- FName:= AValue;
- Mark;
- EndUpdate;
-end;
-
-function TAddressType.GetCaption: string;
-begin
- Result := Name;
-end;
-
-{ TAddress }
-
-procedure TAddress.SetStreet(const AValue: string);
-begin
- if FStreet=AValue then exit;
-
- BeginUpdate;
- FStreet:=AValue;
- Mark;
- EndUpdate;
-end;
-
-procedure TAddress.SetTelephone1(const AValue: string);
-begin
- if FTelephone1=AValue then exit;
-
- BeginUpdate;
- FTelephone1:=AValue;
- Mark;
- EndUpdate;
-end;
-
-procedure TAddress.SetTelephone2(const AValue: string);
-begin
- if FTelephone2=AValue then exit;
-
- BeginUpdate;
- FTelephone2:=AValue;
- Mark;
- EndUpdate;
-end;
-
-constructor TAddress.Create;
-begin
- inherited Create;
- FAddressType := nil;
-end;
-
-procedure TAddress.AssignClassProps(ASource: TtiObject);
-begin
- FAddressType := TAddress(ASource).AddressType; // reference only
- FCity := TAddress(ASource).City; // reference only
-end;
-
-procedure TAddress.SetNr(const AValue: integer);
-begin
- if FNr=AValue then exit;
-
- BeginUpdate;
- FNr:=AValue;
- Mark;
- EndUpdate;
-end;
-
-procedure TAddress.SetAddressType(const AValue: TAddressType);
-begin
- if FAddressType = AValue then
- Exit; //==>
-
- BeginUpdate;
- FAddressType := AValue;
- Mark;
- EndUpdate;
-end;
-
-function TAddress.GetAddressType4GUI: string;
-begin
- Result := FAddressType.Name;
-end;
-
-procedure TAddress.SetCity(const AValue: TCity);
-begin
- if FCity=AValue then exit;
-
- BeginUpdate;
- FCity:=AValue;
- Mark;
- EndUpdate;
-end;
-
-procedure TAddress.SetFax(const AValue: string);
-begin
- if FFax=AValue then exit;
-
- BeginUpdate;
- FFax:=AValue;
- Mark;
- EndUpdate;
-end;
-
-{ TContact }
-
-procedure TContact.SetFirstName(const AValue: string);
-begin
- if FFirstName=AValue then exit;
-
- BeginUpdate;
- FFirstName:=AValue;
- Mark;
- EndUpdate;
-end;
-
-procedure TContact.SetEmail(const AValue: string);
-begin
- if FEmail=AValue then exit;
-
- BeginUpdate;
- FEmail:=AValue;
- Mark;
- EndUpdate;
-end;
-
-procedure TContact.SetComments(const AValue: string);
-begin
- if FComments=AValue then exit;
-
- BeginUpdate;
- FComments:=AValue;
- Mark;
- EndUpdate;
-end;
-
-procedure TContact.SetLastName(const AValue: string);
-begin
- if FLastName=AValue then exit;
-
- BeginUpdate;
- FLastName:=AValue;
- Mark;
- EndUpdate;
-end;
-
-procedure TContact.SetMobile(const AValue: string);
-begin
- if FMobile=AValue then exit;
-
- BeginUpdate;
- FMobile:=AValue;
- Mark;
- EndUpdate;
-end;
-
-constructor TContact.Create;
-begin
- inherited Create;
- FAddressList:= TAddressList.Create;
- FAddressList.Owner:= self;
- // ToDo: Refactor to remove need for ItemOwner. Use Parent instead
- FAddressList.ItemOwner:= self;
-end;
-
-destructor TContact.Destroy;
-begin
- FAddressList.Free;
- inherited Destroy;
-end;
-
-{ TCountryList }
-
-function TCountryList.GetItems(i: integer): TCountry;
-begin
- Result:= TCountry(inherited GetItems(i));
-end;
-
-procedure TCountryList.SetItems(i: integer; const AValue: TCountry);
-begin
- inherited SetItems(i, AValue);
-end;
-
-function TCountryList.Add(const AObject: TCountry): integer;
-begin
- Result:= inherited Add(AObject);
-end;
-
-{ TCityList }
-
-function TCityList.GetItems(i: integer): TCity;
-begin
- result:= TCity(inherited GetItems(i));
-end;
-
-procedure TCityList.SetItems(i: integer; const AValue: TCity);
-begin
- inherited SetItems(i, AValue);
-end;
-
-function TCityList.Add(const AObject: TCity): integer;
-begin
- result:= inherited Add(AObject);
-end;
-
-{ TAddressList }
-
-function TAddressList.GetItems(i: integer): TAddress;
-begin
- result:= TAddress(inherited GetItems(i));
-end;
-
-procedure TAddressList.SetItems(i: integer; const AValue: TAddress);
-begin
- inherited SetItems(i, AValue);
-end;
-
-function TAddressList.Add(const AObject: TAddress): integer;
-begin
- result:= inherited Add(AObject);
-end;
-
-{ TContactList }
-
-function TContactList.GetItems(i: integer): TContact;
-begin
- result:= TContact(inherited GetItems(i));
-end;
-
-procedure TContactList.SetItems(i: integer; const AValue: TContact);
-begin
- inherited SetItems(i, AValue);
-end;
-
-function TContactList.Add(const AObject: TContact): integer;
-begin
- result:= inherited Add(AObject);
-end;
-
-
-{ TAddressTypeList }
-
-function TAddressTypeList.GetItems(i: integer): TAddressType;
-begin
- result := TAddressType(inherited GetItems(i));
-end;
-
-procedure TAddressTypeList.SetItems(i: integer; const AValue: TAddressType);
-begin
- inherited SetItems(i, AValue);
-end;
-
-function TAddressTypeList.Add(const AObject: TAddressType): integer;
-begin
- result := inherited Add(AObject);
-end;
-
-end.
-
diff --git a/extras/tiopf/demos/Demo_21_AdrsBook_MGM/units/placeholder.txt b/extras/tiopf/demos/Demo_21_AdrsBook_MGM/units/placeholder.txt
deleted file mode 100644
index 4805699e..00000000
--- a/extras/tiopf/demos/Demo_21_AdrsBook_MGM/units/placeholder.txt
+++ /dev/null
@@ -1 +0,0 @@
-do not delete me.
diff --git a/extras/tiopf/demos/Demo_TtiBaseObject/PerformanceTesting.lpi b/extras/tiopf/demos/Demo_TtiBaseObject/PerformanceTesting.lpi
deleted file mode 100644
index 047ccf7a..00000000
--- a/extras/tiopf/demos/Demo_TtiBaseObject/PerformanceTesting.lpi
+++ /dev/null
@@ -1,59 +0,0 @@
-<?xml version="1.0"?>
-<CONFIG>
- <ProjectOptions>
- <Version Value="7"/>
- <General>
- <Flags>
- <SaveOnlyProjectUnits Value="True"/>
- <LRSInOutputDirectory Value="False"/>
- </Flags>
- <SessionStorage Value="InProjectDir"/>
- <MainUnit Value="0"/>
- <TargetFileExt Value=""/>
- </General>
- <VersionInfo>
- <ProjectVersion Value=""/>
- </VersionInfo>
- <PublishOptions>
- <Version Value="2"/>
- <IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/>
- <ExcludeFileFilter Value="*.(bak|ppu|ppw|o|so);*~;backup"/>
- </PublishOptions>
- <RunParams>
- <local>
- <FormatVersion Value="1"/>
- <LaunchingApplication PathPlusParams="/usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/>
- </local>
- </RunParams>
- <RequiredPackages Count="2">
- <Item1>
- <PackageName Value="fpgui_toolkit"/>
- </Item1>
- <Item2>
- <PackageName Value="tiOPF"/>
- </Item2>
- </RequiredPackages>
- <Units Count="2">
- <Unit0>
- <Filename Value="PerformanceTesting.lpr"/>
- <IsPartOfProject Value="True"/>
- </Unit0>
- <Unit1>
- <Filename Value="frm_main.pas"/>
- <IsPartOfProject Value="True"/>
- <UnitName Value="frm_main"/>
- </Unit1>
- </Units>
- </ProjectOptions>
- <CompilerOptions>
- <Version Value="8"/>
- <SearchPaths>
- <UnitOutputDirectory Value="units/$(TargetCPU)-$(TargetOS)"/>
- </SearchPaths>
- <Other>
- <CustomOptions Value="-dUseCThreads
-"/>
- <CompilerPath Value="$(CompPath)"/>
- </Other>
- </CompilerOptions>
-</CONFIG>
diff --git a/extras/tiopf/demos/Demo_TtiBaseObject/PerformanceTesting.lpr b/extras/tiopf/demos/Demo_TtiBaseObject/PerformanceTesting.lpr
deleted file mode 100644
index e43592fd..00000000
--- a/extras/tiopf/demos/Demo_TtiBaseObject/PerformanceTesting.lpr
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- This demo does performance testing of the TtiBaseObject to see the difference
- when Reference Counting is enabled, linked in or not.
-}
-program PerformanceTesting;
-
-uses
- {$IFDEF UNIX}{$IFDEF UseCThreads}
- cthreads,
- {$ENDIF}{$ENDIF}
- Classes, fpg_main, frm_main;
-
-
-procedure MainProc;
-var
- frm: TMainForm;
-begin
- fpgApplication.Initialize;
- frm := TMainForm.Create(nil);
- try
- frm.Show;
- fpgApplication.Run;
- finally
- frm.Free;
- end;
-end;
-
-begin
- MainProc;
-end.
-
diff --git a/extras/tiopf/demos/Demo_TtiBaseObject/frm_main.pas b/extras/tiopf/demos/Demo_TtiBaseObject/frm_main.pas
deleted file mode 100644
index 6b39cf0d..00000000
--- a/extras/tiopf/demos/Demo_TtiBaseObject/frm_main.pas
+++ /dev/null
@@ -1,218 +0,0 @@
-unit frm_main;
-
-{$mode objfpc}{$H+}
-
-// You need to enable these in tiOPF's tiDefines.inc as well.
-{.$Define object_tracking}
-{$Define reference_counting}
-
-
-interface
-
-uses
- SysUtils, Classes, fpg_base, fpg_main, fpg_edit,
- fpg_widget, fpg_form, fpg_label, fpg_button,
- fpg_listbox, fpg_memo, fpg_combobox, fpg_grid,
- fpg_dialogs, fpg_checkbox, fpg_tree, fpg_trackbar,
- fpg_progressbar, fpg_radiobutton, fpg_tab, fpg_menu,
- fpg_panel, fpg_popupcalendar, fpg_gauge;
-
-type
-
- TMainForm = class(TfpgForm)
- private
- procedure PerformanceTestNoReferenceCounting(Sender: TObject);
- procedure PerformanceTestReferenceCounting(Sender: TObject);
- procedure btnTestValidClick(Sender: TObject);
- procedure Log(const AMessage: string);
- public
- {@VFD_HEAD_BEGIN: MainForm}
- btnNoRefCount: TfpgButton;
- btnRefCount: TfpgButton;
- btnTestValid: TfpgButton;
- memName1: TfpgMemo;
- lblName1: TfpgLabel;
- lblName2: TfpgLabel;
- memLog: TfpgMemo;
- {@VFD_HEAD_END: MainForm}
- constructor Create(AOwner: TComponent); override;
- procedure AfterCreate; override;
- end;
-
-{@VFD_NEWFORM_DECL}
-
-implementation
-
-uses
- tiUtils,
- tiBaseObject;
-
-const
- CTestRunTime = 5; // Seconds
- CTestCount = 1000000; // 1 million
-
-{@VFD_NEWFORM_IMPL}
-
-procedure TMainForm.PerformanceTestNoReferenceCounting(Sender: TObject);
-var
- LO: TtiBaseObject;
- LStart: Cardinal;
- LCount: Cardinal;
-begin
- LCount := 0;
- LStart := tiGetTickCount;
- while LCount < CTestCount do
- begin
- LO := TtiBaseObject.Create;
- LO.Free;
- Inc(LCount);
- end;
- Log(Format('%s iterations in %d ms (no reference counting)',
- [tiIntToCommaStr(LCount), tiGetTickCount - LStart]));
-end;
-
-procedure TMainForm.PerformanceTestReferenceCounting(Sender: TObject);
-{$ifdef reference_counting}
-var
-// LO: IInterface;
- LO: TtiBaseObject; // We are testing object creation only. Hence a class and not interface reference.
- LStart: Cardinal;
- LCount: Cardinal;
-begin
- LCount := 0;
- LStart := tiGetTickCount;
- while LCount < CTestCount do
- begin
- LO := TtiBaseObject.CreateWithRefCounting;
- LO.Free; // we are testing object creation. This remove the garbage collector.
- Inc(LCount);
- end;
- Log(Format('%s iterations in %d ms (reference counting)',
- [tiIntToCommaStr(LCount), tiGetTickCount - LStart]));
-{$else}
-begin
- Assert(False, 'reference_counting not enabled');
-{$endif}
-end;
-
-procedure TMainForm.btnTestValidClick(Sender: TObject);
-var
- LO: TtiBaseObject;
-begin
- LO := TtiBaseObject.Create;
- Assert(LO.TestValid);
- LO.Free;
- Assert(not LO.TestValid);
-end;
-
-procedure TMainForm.Log(const AMessage: string);
-begin
- memLog.Lines.Add(AMessage);
- memLog.Invalidate;
-end;
-
-constructor TMainForm.Create(AOwner: TComponent);
-begin
- inherited Create(AOwner);
- memLog.Lines.Clear;
- {$ifdef object_tracking}
- Log('object_tracking is ON');
- {$else}
- btnTestValid.Enabled := False;
- Log('object_tracking is OFF');
- {$endif}
- {$ifdef reference_counting}
- Log('reference_counting is ON');
- {$else}
- Log('reference_counting is OFF');
- btnRefCount.Enabled := False;
- {$endif}
- Log('---');
-end;
-
-procedure TMainForm.AfterCreate;
-begin
- {@VFD_BODY_BEGIN: MainForm}
- Name := 'MainForm';
- SetPosition(307, 319, 357, 290);
- WindowTitle := 'TtiBaseObject Performance Demo';
- WindowPosition := wpScreenCenter;
-
- btnNoRefCount := TfpgButton.Create(self);
- with btnNoRefCount do
- begin
- Name := 'btnNoRefCount';
- SetPosition(16, 28, 155, 23);
- Text := 'No reference counting';
- FontDesc := '#Label1';
- ImageName := '';
- OnClick := @PerformanceTestNoReferenceCounting;
- end;
-
- btnRefCount := TfpgButton.Create(self);
- with btnRefCount do
- begin
- Name := 'btnRefCount';
- SetPosition(16, 56, 155, 23);
- Text := 'Reference counting';
- FontDesc := '#Label1';
- ImageName := '';
- OnClick := @PerformanceTestReferenceCounting;
- end;
-
- btnTestValid := TfpgButton.Create(self);
- with btnTestValid do
- begin
- Name := 'btnTestValid';
- SetPosition(16, 112, 155, 23);
- Text := 'TtiBaseObject.TestValid';
- FontDesc := '#Label1';
- ImageName := '';
- OnClick := @btnTestValidClick;
- end;
-
- memName1 := TfpgMemo.Create(self);
- with memName1 do
- begin
- Name := 'memName1';
- SetPosition(176, 28, 176, 125);
- Lines.Add('Toggle the conditional defines');
- Lines.Add('REFERENCE_COUNTING ');
- Lines.Add('and OBJECT_TRACKING on ');
- Lines.Add('and off to examine behaviour.');
- FontDesc := '#Edit1';
- Enabled := False;
- end;
-
- lblName1 := TfpgLabel.Create(self);
- with lblName1 do
- begin
- Name := 'lblName1';
- SetPosition(8, 8, 160, 15);
- Text := 'Performance';
- FontDesc := '#Label2';
- end;
-
- lblName2 := TfpgLabel.Create(self);
- with lblName2 do
- begin
- Name := 'lblName2';
- SetPosition(8, 92, 160, 15);
- Text := 'TtiBaseObject.TestValid';
- FontDesc := '#Label2';
- end;
-
- memLog := TfpgMemo.Create(self);
- with memLog do
- begin
- Name := 'memLog';
- SetPosition(8, 164, 344, 121);
- Lines.Add('');
- FontDesc := '#Edit1';
- end;
-
- {@VFD_BODY_END: MainForm}
-end;
-
-
-end.
diff --git a/extras/tiopf/demos/Demo_TtiBaseObject/performancetest.lpi b/extras/tiopf/demos/Demo_TtiBaseObject/performancetest.lpi
deleted file mode 100644
index cf7d5e86..00000000
--- a/extras/tiopf/demos/Demo_TtiBaseObject/performancetest.lpi
+++ /dev/null
@@ -1,117 +0,0 @@
-<?xml version="1.0"?>
-<CONFIG>
- <ProjectOptions>
- <Version Value="7"/>
- <General>
- <Flags>
- <LRSInOutputDirectory Value="False"/>
- </Flags>
- <MainUnit Value="0"/>
- <TargetFileExt Value=""/>
- <ActiveEditorIndexAtStart Value="0"/>
- </General>
- <VersionInfo>
- <ProjectVersion Value=""/>
- <Language Value=""/>
- <CharSet Value=""/>
- </VersionInfo>
- <PublishOptions>
- <Version Value="2"/>
- <IgnoreBinaries Value="False"/>
- <IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/>
- <ExcludeFileFilter Value="*.(bak|ppu|ppw|o|so);*~;backup"/>
- </PublishOptions>
- <RunParams>
- <local>
- <FormatVersion Value="1"/>
- <LaunchingApplication PathPlusParams="/usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/>
- </local>
- </RunParams>
- <Units Count="9">
- <Unit0>
- <Filename Value="performancetest.lpr"/>
- <IsPartOfProject Value="True"/>
- <UnitName Value="performancetest"/>
- <CursorPos X="1" Y="13"/>
- <TopLine Value="13"/>
- <EditorIndex Value="0"/>
- <UsageCount Value="20"/>
- <Loaded Value="True"/>
- </Unit0>
- <Unit1>
- <Filename Value="frm_main.pas"/>
- <UnitName Value="frm_main"/>
- <CursorPos X="37" Y="85"/>
- <TopLine Value="65"/>
- <EditorIndex Value="2"/>
- <UsageCount Value="10"/>
- <Loaded Value="True"/>
- </Unit1>
- <Unit2>
- <Filename Value="/opt/fpc_2.2.0/src/packages/fcl-base/src/inc/custapp.pp"/>
- <UnitName Value="CustApp"/>
- <CursorPos X="3" Y="26"/>
- <TopLine Value="11"/>
- <UsageCount Value="10"/>
- </Unit2>
- <Unit3>
- <Filename Value="../../../../../3rdParty/tiOPF2/Source/Core/tiUtils.pas"/>
- <UnitName Value="tiUtils"/>
- <CursorPos X="9" Y="507"/>
- <TopLine Value="486"/>
- <UsageCount Value="10"/>
- </Unit3>
- <Unit4>
- <Filename Value="../../../../../3rdParty/tiOPF2/Source/Core/tiLinux.pas"/>
- <UnitName Value="tiLinux"/>
- <CursorPos X="1" Y="48"/>
- <TopLine Value="28"/>
- <UsageCount Value="10"/>
- </Unit4>
- <Unit5>
- <Filename Value="../../../../../3rdParty/tiOPF2/Source/Core/tiBaseObject.pas"/>
- <UnitName Value="tiBaseObject"/>
- <CursorPos X="1" Y="128"/>
- <TopLine Value="94"/>
- <EditorIndex Value="1"/>
- <UsageCount Value="10"/>
- <Loaded Value="True"/>
- </Unit5>
- <Unit6>
- <Filename Value="/opt/fpc_2.2.0/src/rtl/inc/objpash.inc"/>
- <CursorPos X="29" Y="220"/>
- <TopLine Value="212"/>
- <UsageCount Value="10"/>
- </Unit6>
- <Unit7>
- <Filename Value="/opt/fpc_2.2.0/src/rtl/inc/objpas.inc"/>
- <CursorPos X="9" Y="709"/>
- <TopLine Value="705"/>
- <UsageCount Value="10"/>
- </Unit7>
- <Unit8>
- <Filename Value="FMain.pas"/>
- <UnitName Value="FMain"/>
- <CursorPos X="1" Y="1"/>
- <TopLine Value="38"/>
- <UsageCount Value="10"/>
- </Unit8>
- </Units>
- <JumpHistory Count="2" HistoryIndex="1">
- <Position1>
- <Filename Value="performancetest.lpr"/>
- <Caret Line="112" Column="1" TopLine="112"/>
- </Position1>
- <Position2>
- <Filename Value="performancetest.lpr"/>
- <Caret Line="249" Column="1" TopLine="220"/>
- </Position2>
- </JumpHistory>
- </ProjectOptions>
- <CompilerOptions>
- <Version Value="8"/>
- <Other>
- <CompilerPath Value="$(CompPath)"/>
- </Other>
- </CompilerOptions>
-</CONFIG>
diff --git a/extras/tiopf/demos/Demo_TtiBaseObject/performancetest.lpr b/extras/tiopf/demos/Demo_TtiBaseObject/performancetest.lpr
deleted file mode 100644
index d42615cc..00000000
--- a/extras/tiopf/demos/Demo_TtiBaseObject/performancetest.lpr
+++ /dev/null
@@ -1,248 +0,0 @@
-{
- This program tests the speed of Reference Counted and non-Reference Counted
- objects over a set time period. Default of 5 seconds.
-}
-program performancetest;
-
-{$mode objfpc}{$H+}
-
-uses
- Classes, SysUtils, CustApp;
-
-const
- CTestCount = 1000000; // 1 million
-
-type
- TMyApplication = class(TCustomApplication)
- protected
- procedure DoRun; override;
- procedure TestRefCountedObjects;
- procedure TestNonRefCountedObjects;
- procedure TestRefCountedMyObjects;
- procedure TestNonRefCountedMyObjects;
- procedure Log(const AMessage: string);
- public
- constructor Create(TheOwner: TComponent); override;
- destructor Destroy; override;
- procedure WriteHelp; virtual;
- end;
-
-
- TMyBaseObject = class(TObject, IUnknown)
- private
- FRefCounting: Boolean;
- FRefCount: Integer;
- protected
- function QueryInterface(const IID: TGUID; out Obj): longint; stdcall;
- function _AddRef: longint; stdcall;
- function _Release: longint; stdcall;
- public
- constructor Create;
- destructor Destroy; override;
- constructor CreateWithRefCounting;
- procedure AfterConstruction; override;
- procedure BeforeDestruction; override;
- class function NewInstance: TObject; override;
- end;
-
-{ TMyBaseObject }
-
-function TMyBaseObject.QueryInterface(const IID: TGUID; out Obj): longint; stdcall;
-begin
- if GetInterface(IID, Obj) then
- Result := 0
- else
- Result := E_NOINTERFACE;
-end;
-
-function TMyBaseObject._AddRef: longint; stdcall;
-begin
- Result := InterlockedIncrement(FRefCount);
-end;
-
-function TMyBaseObject._Release: longint; stdcall;
-begin
- Result := InterlockedDecrement(FRefCount);
- if FRefCounting then
- if Result = 0 then
- Destroy;
-end;
-
-constructor TMyBaseObject.Create;
-begin
- FRefCounting := False;
-end;
-
-destructor TMyBaseObject.Destroy;
-begin
- inherited Destroy;
-end;
-
-constructor TMyBaseObject.CreateWithRefCounting;
-begin
- Create;
- FRefCounting := True;
-end;
-
-procedure TMyBaseObject.AfterConstruction;
-begin
- inherited AfterConstruction;
- // Release the constructor's implicit refcount
- if FRefCounting then
- InterlockedDecrement(FRefCount);
-end;
-
-procedure TMyBaseObject.BeforeDestruction;
-begin
- if FRefCounting then
- if FRefCount <> 0 then
- System.Error(reInvalidPtr);
- inherited BeforeDestruction;
-end;
-
-class function TMyBaseObject.NewInstance: TObject;
-begin
- Result := inherited NewInstance;
- TMyBaseObject(Result).FRefCount := 1;
-end;
-
-function tiGetTickCount: Cardinal;
-begin
- Result := Cardinal(Trunc(Now * 24 * 60 * 60 * 1000));
-end;
-
-
-{ TMyApplication }
-
-procedure TMyApplication.DoRun;
-var
- ErrorMsg: String;
-begin
- // quick check parameters
- ErrorMsg := CheckOptions('h','help');
- if ErrorMsg <> '' then
- begin
- ShowException(Exception.Create(ErrorMsg));
- Halt;
- end;
-
- // parse parameters
- if HasOption('h','help') then
- begin
- WriteHelp;
- Halt;
- end;
-
-// TestNonRefCountedMyObjects;
- TestNonRefCountedObjects;
- TestRefCountedObjects;
- TestNonRefCountedMyObjects;
- TestRefCountedMyObjects;
-
- // stop program loop
- Terminate;
-end;
-
-procedure TMyApplication.TestRefCountedObjects;
-var
- LO: TInterfacedObject;
- LStart: Cardinal;
- LCount: Cardinal;
-begin
- LCount := 0;
- LStart := tiGetTickCount;
- while LCount < CTestCount do
- begin
- LO := TInterfacedObject.Create;
- LO.Free;
- Inc(LCount);
- end;
- Log(Format('%s iterations in %d ms (reference counting with TInterfacedObject)',
- [IntToStr(LCount), tiGetTickCount - LStart]));
-end;
-
-procedure TMyApplication.TestNonRefCountedObjects;
-var
- LO: TObject;
- LStart: Cardinal;
- LCount: Cardinal;
-begin
- LCount := 0;
- LStart := tiGetTickCount;
- while LCount < CTestCount do
- begin
- LO := TObject.Create;
- LO.Free;
- Inc(LCount);
- end;
- Log(Format('%s iterations in %d ms (no reference counting with TObject)',
- [IntToStr(LCount), tiGetTickCount - LStart]));
-end;
-
-procedure TMyApplication.TestRefCountedMyObjects;
-var
- LO: TMyBaseObject;
- LStart: Cardinal;
- LCount: Cardinal;
-begin
- LCount := 0;
- LStart := tiGetTickCount;
- while LCount < CTestCount do
- begin
- LO := TMyBaseObject.CreateWithRefCounting;
- LO.Free;
- Inc(LCount);
- end;
- Log(Format('%s iterations in %d ms (reference counting with MyBaseObject)',
- [IntToStr(LCount), tiGetTickCount - LStart]));
-end;
-
-procedure TMyApplication.TestNonRefCountedMyObjects;
-var
- LO: TMyBaseObject;
- LStart: Cardinal;
- LCount: Cardinal;
-begin
- LCount := 0;
- LStart := tiGetTickCount;
- while LCount < CTestCount do
- begin
- LO := TMyBaseObject.Create;
- LO.Free;
- Inc(LCount);
- end;
- Log(Format('%s iterations in %d ms (no reference counting with MyBaseObject)',
- [IntToStr(LCount), tiGetTickCount - LStart]));
-end;
-
-procedure TMyApplication.Log(const AMessage: string);
-begin
- writeln(AMessage);
-end;
-
-constructor TMyApplication.Create(TheOwner: TComponent);
-begin
- inherited Create(TheOwner);
- StopOnException := True;
-end;
-
-destructor TMyApplication.Destroy;
-begin
- inherited Destroy;
-end;
-
-procedure TMyApplication.WriteHelp;
-begin
- { add your help code here }
- writeln('Usage: ',ExeName,' -h');
-end;
-
-var
- Application: TMyApplication;
-begin
- Application := TMyApplication.Create(nil);
- Application.Title := 'My Application';
- Application.Run;
- Application.Free;
-end.
-
diff --git a/extras/tiopf/demos/EditControlsDemo/editmediators.lpi b/extras/tiopf/demos/EditControlsDemo/editmediators.lpi
deleted file mode 100644
index 0f0543c7..00000000
--- a/extras/tiopf/demos/EditControlsDemo/editmediators.lpi
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0"?>
-<CONFIG>
- <ProjectOptions>
- <Version Value="7"/>
- <General>
- <Flags>
- <SaveOnlyProjectUnits Value="True"/>
- <LRSInOutputDirectory Value="False"/>
- </Flags>
- <SessionStorage Value="InProjectDir"/>
- <MainUnit Value="0"/>
- <TargetFileExt Value=""/>
- <UseAppBundle Value="False"/>
- </General>
- <VersionInfo>
- <ProjectVersion Value=""/>
- </VersionInfo>
- <PublishOptions>
- <Version Value="2"/>
- <IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/>
- <ExcludeFileFilter Value="*.(bak|ppu|ppw|o|so);*~;backup"/>
- </PublishOptions>
- <RunParams>
- <local>
- <FormatVersion Value="1"/>
- <LaunchingApplication PathPlusParams="/usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/>
- </local>
- </RunParams>
- <RequiredPackages Count="1">
- <Item1>
- <PackageName Value="tiOPFfpGUI"/>
- <MinVersion Major="2" Release="3" Valid="True"/>
- </Item1>
- </RequiredPackages>
- <Units Count="5">
- <Unit0>
- <Filename Value="editmediators.lpr"/>
- <IsPartOfProject Value="True"/>
- <UnitName Value="editmediators"/>
- </Unit0>
- <Unit1>
- <Filename Value="frmMain.pas"/>
- <IsPartOfProject Value="True"/>
- <UnitName Value="frmMain"/>
- </Unit1>
- <Unit2>
- <Filename Value="../Common/Model_View.pas"/>
- <IsPartOfProject Value="True"/>
- <UnitName Value="Model_View"/>
- </Unit2>
- <Unit3>
- <Filename Value="../Common/Constants.pas"/>
- <IsPartOfProject Value="True"/>
- <UnitName Value="Constants"/>
- </Unit3>
- <Unit4>
- <Filename Value="../Common/Model.pas"/>
- <IsPartOfProject Value="True"/>
- <UnitName Value="Model"/>
- </Unit4>
- </Units>
- </ProjectOptions>
- <CompilerOptions>
- <Version Value="8"/>
- <SearchPaths>
- <OtherUnitFiles Value="../Common/"/>
- <UnitOutputDirectory Value="units/$(TargetCPU)-$(TargetOS)"/>
- </SearchPaths>
- <Other>
- <CompilerPath Value="$(CompPath)"/>
- </Other>
- </CompilerOptions>
-</CONFIG>
diff --git a/extras/tiopf/demos/EditControlsDemo/editmediators.lpr b/extras/tiopf/demos/EditControlsDemo/editmediators.lpr
deleted file mode 100644
index 0dd11cc8..00000000
--- a/extras/tiopf/demos/EditControlsDemo/editmediators.lpr
+++ /dev/null
@@ -1,27 +0,0 @@
-program editmediators;
-
-{$mode objfpc}{$H+}
-
-uses
- {$IFDEF UNIX}{$IFDEF UseCThreads}
- cthreads,
- {$ENDIF}{$ENDIF}
- Classes, fpg_main, frmMain;
-
-
-
-procedure MainProc;
-var
- frm: TMainForm;
-begin
- fpgApplication.Initialize;
- frm := TMainForm.Create(nil);
- frm.Show;
- fpgApplication.Run;
-end;
-
-begin
- MainProc;
-end.
-
-
diff --git a/extras/tiopf/demos/EditControlsDemo/frmMain.pas b/extras/tiopf/demos/EditControlsDemo/frmMain.pas
deleted file mode 100644
index 03749901..00000000
--- a/extras/tiopf/demos/EditControlsDemo/frmMain.pas
+++ /dev/null
@@ -1,237 +0,0 @@
-unit frmMain;
-
-{$mode objfpc}{$H+}
-
-interface
-
-uses
- Classes, SysUtils, fpg_form, fpg_button, fpg_label, fpg_edit, fpg_trackbar,
- fpg_combobox, fpg_memo, Model, tiModelMediator, Model_View;
-
-type
- TMainForm = class(TfpgForm)
- private
- btnClose: TfpgButton;
- btnViaCode: TfpgButton;
- btnShowModel: TfpgButton;
- Label1: TfpgLabel;
- Label2: TfpgLabel;
- edtName: TfpgEdit;
- AgeTrackBar: TfpgTrackBar;
- memMemo: TfpgMemo;
- cbGender: TfpgComboBox;
- Label3: TfpgLabel;
-
- { The object we will be working with. }
- FPerson: TPerson;
- { Form Mediator }
- FMediator: TtiModelMediator;
-
- procedure btnCloseClick(Sender: TObject);
- procedure btnShowModelClick(Sender: TObject);
- procedure btnViaCodeClick(Sender: TObject);
- procedure InitializeComponents;
- procedure SetupMediators;
- public
- constructor Create(AOwner: TComponent); override;
- destructor Destroy; override;
- procedure AfterConstruction; override;
- end;
-
-implementation
-
-uses
- fpg_dialogs
- ;
-
-{ TMainForm }
-
-procedure TMainForm.btnCloseClick(Sender: TObject);
-begin
- Close;
-end;
-
-procedure TMainForm.btnShowModelClick(Sender: TObject);
-begin
- ShowMessage(FPerson.AsDebugString);
-end;
-
-{ The controls will automatically update as well! }
-procedure TMainForm.btnViaCodeClick(Sender: TObject);
-begin
- FPerson.Name := 'John Doe';
- FPerson.Age := 23;
- FPerson.Gender := genFemale;
-end;
-
-procedure TMainForm.InitializeComponents;
-begin
- Label1 := TfpgLabel.Create(self);
- with Label1 do
- begin
- Left := 8;
- Height := 17;
- Top := 16;
- Width := 49;
- Text := 'Name:';
- end;
-
- Label2 := TfpgLabel.Create(self);
- with Label2 do
- begin
- Left := 8;
- Height := 17;
- Top := 48;
- Width := 34;
- Text := 'Age:';
- end;
-
- Label3 := TfpgLabel.Create(self);
- with Label3 do
- begin
- Left := 264;
- Height := 17;
- Top := 16;
- Width := 90;
- Text := '(Read-Only)';
- end;
-
- btnClose := TfpgButton.Create(self);
- with btnClose do
- begin
- Left := 416;
- Height := 25;
- Top := 160;
- Width := 75;
- Text := 'Close';
- OnClick := @btnCloseClick;
- ImageName := 'stdimg.Close';
- ShowImage := True;
- TabOrder := 0;
- end;
-
- btnViaCode := TfpgButton.Create(self);
- with btnViaCode do
- begin
- Left := 7;
- Height := 25;
- Top := 160;
- Width := 150;
- Text := 'Change via Code';
- OnClick := @btnViaCodeClick;
- TabOrder := 1;
- end;
-
- btnShowModel := TfpgButton.Create(self);
- with btnShowModel do
- begin
- Left := 164;
- Height := 25;
- Top := 160;
- Width := 100;
- Text := 'Show Model';
- OnClick := @btnShowModelClick;
- TabOrder := 2;
- end;
-
- edtName := TfpgEdit.Create(self);
- with edtName do
- begin
- Left := 64;
- Height := 21;
- Top := 16;
- Width := 150;
- TabOrder := 3;
- end;
-
- AgeTrackBar := TfpgTrackBar.Create(self);
- with AgeTrackBar do
- begin
- Left := 64;
- Height := 41;
- Top := 72;
- Width := 150;
- Max := 100;
- ShowPosition := True;
- TabOrder := 5;
- end;
-
- memMemo := TfpgMemo.Create(self);
- with memMemo do
- begin
- Left := 264;
- Height := 57;
- Top := 32;
- Width := 185;
- TabOrder := 6;
- end;
-
- cbGender := TfpgComboBox.Create(self);
- with cbGender do
- begin
- Left := 264;
- Height := 21;
- Top := 96;
- TabOrder := 7;
- end;
-end;
-
-procedure TMainForm.SetupMediators;
-begin
-{
- FComboBoxGenderMediator := TPerson_Gender_ComboBox_Mediator.CreateCustom(cbGender, FPerson, 'GenderGUI', 'Text');
-}
- if not Assigned(FMediator) then
- begin
- FMediator := TtiModelMediator.Create(self);
- FMediator.Name := 'DemoFormMediator';
- FMediator.AddProperty('Name', edtName);
- FMediator.AddProperty('Age', AgeTrackBar);
- FMediator.AddProperty('Name', memMemo);
- FMediator.AddProperty('GenderGUI', cbGender);
- end;
- FMediator.Subject := FPerson;
- FMediator.Active := True;
-end;
-
-constructor TMainForm.Create(AOwner: TComponent);
-var
- i: TGender;
-begin
- inherited Create(AOwner);
- WindowTitle := 'Edit Mediators Demo';
- WindowPosition := wpUser;
- SetPosition(100, 100, 500, 200);
-
- { The Data Object being observed }
- FPerson := TPerson.Create;
- FPerson.Name := 'Graeme Geldenhuys';
- FPerson.Age := 32;
-
- InitializeComponents;
-
- for i := Low(TGender) to High(TGender) do
- cbGender.Items.Add(cGender[i]);
-end;
-
-destructor TMainForm.Destroy;
-begin
- // TFormMediator (FMediator) get free'd automatically because it's a TComponent
- FPerson.Free;
- inherited Destroy;
-end;
-
-procedure TMainForm.AfterConstruction;
-begin
- inherited AfterConstruction;
- { The only trick here is to not let the OnChange events fire
- before the mediators are not set up!! }
- SetupMediators;
-
- // This will cause all components to update at once
- FPerson.NotifyObservers;
-end;
-
-
-end.
-
diff --git a/extras/tiopf/demos/ListControlDemo/frmMain.pas b/extras/tiopf/demos/ListControlDemo/frmMain.pas
deleted file mode 100644
index 551a6b18..00000000
--- a/extras/tiopf/demos/ListControlDemo/frmMain.pas
+++ /dev/null
@@ -1,255 +0,0 @@
-unit frmMain;
-
-{$mode objfpc}{$H+}
-
-interface
-
-uses
- Classes, SysUtils, fpg_form, fpg_button, fpg_label, fpg_edit, fpg_trackbar,
- fpg_combobox, fpg_checkbox, fpg_listbox, Model,
- tiGenericEditMediators, tiGenericListMediators;
-
-type
- TMainForm = class(TfpgForm)
- private
- btnClose: TfpgButton;
- btnViaCode: TfpgButton;
- btnAddViaCode: TfpgButton;
- btnShowModel: TfpgButton;
- btnDeleted: TfpgButton;
- lblName: TfpgLabel;
- edtName: TfpgEdit;
- lblAge: TfpgLabel;
-// edtAge: TSpinEdit;
- AgeTrackBar: TfpgTrackBar;
- cbPeople: TfpgComboBox;
- lbPeople: TfpgListBox;
- lblPerson: TfpgLabel;
-// gbPerson: TGroupBox;
- chkShowDeleted: TfpgCheckBox;
- { The object we will be working with. }
- FPersonList: TPersonList;
-
- { Mediators }
- FComboBoxMediator: TComboBoxMediator;
- FListBoxMediator: TListBoxMediator;
- FNameMediator: TMediatorEditView;
-// FAgeMediator: TMediatorSpinEditView;
- FTrackBarAgeMediator: TMediatorTrackBarView;
-
- procedure btnCloseClick(Sender: TObject);
- procedure btnShowModelClick(Sender: TObject);
- procedure btnViaCodeClick(Sender: TObject);
- procedure btnDeleteClick(Sender: TObject);
- procedure btnViaCodeAddClick(Sender: TObject);
- procedure lbSelectionChanged(Sender: TObject);
- procedure cbSelectionChanged(Sender: TObject);
- procedure chkShowDeletedChange(Sender: TObject);
-
- procedure InitializeComponents;
- procedure SetupMediators;
- procedure SetupEventHandlers;
- public
- constructor Create(AOwner: TComponent); override;
- destructor Destroy; override;
- procedure AfterConstruction; override;
- end;
-
-implementation
-
-uses
- Model_View
- ,gfxbase
- ,tiObject
- ,tiDialogs
- ;
-
-{ TMainForm }
-
-procedure TMainForm.btnCloseClick(Sender: TObject);
-begin
- Close;
-end;
-
-procedure TMainForm.btnShowModelClick(Sender: TObject);
-begin
- tiShowString(FPersonList.AsDebugString);
-end;
-
-procedure TMainForm.btnViaCodeClick(Sender: TObject);
-begin
- { The BeginUpdate/EndUpdate will let the Item notify its observers
- only once, even though two change where made.
- Note:
- This is for observers to the Item, not the List that the Item belongs to! }
- FPersonList.Items[1].BeginUpdate;
- FPersonList.Items[1].Name := 'I have changed via code';
- FPersonList.Items[1].Age := 99;
- FPersonList.Items[1].EndUpdate;
- { This notifies observers of the List, that something has changed. }
- FPersonList.NotifyObservers;
-end;
-
-{ This toggles the Deleted state of an object. Not really the correct way of
- doing things. It is for demonstration purposes only! }
-procedure TMainForm.btnDeleteClick(Sender: TObject);
-begin
- if FListBoxMediator.SelectedObject.Deleted then
- FListBoxMediator.SelectedObject.ObjectState := posCreate
- else
- FListBoxMediator.SelectedObject.Deleted := True;
- FPersonList.NotifyObservers;
-end;
-
-procedure TMainForm.btnViaCodeAddClick(Sender: TObject);
-var
- lData: TPerson;
-begin
- lData := TPerson.Create;
- lData.Name := 'I am new';
- lData.Age := 44;
- FPersonList.Add(lData);
-end;
-
-procedure TMainForm.lbSelectionChanged(Sender: TObject);
-var
- backup: TNotifyEvent;
-begin
- FListBoxMediator.HandleSelectionChanged;
- { This is only done to keep the ComboBox and ListBox in sync. This would not
- be done or needed in a real application }
- backup := cbPeople.OnChange;
- cbPeople.OnChange := nil;
- cbPeople.FocusItem := lbPeople.FocusItem;
- cbpeople.OnChange := backup;
-end;
-
-procedure TMainForm.cbSelectionChanged(Sender: TObject);
-var
- backup: TNotifyEvent;
-begin
- FComboBoxMediator.HandleSelectionChanged;
- { This is only done to keep the ComboBox and ListBox in sync. This would not
- be done or needed in a real application }
- backup := lbPeople.OnChange;
- lbPeople.OnChange := nil;
- lbPeople.FocusItem := cbPeople.FocusItem;
- lbPeople.OnChange := backup;
-end;
-
-procedure TMainForm.chkShowDeletedChange(Sender: TObject);
-begin
- FComboBoxMediator.ShowDeleted := chkShowDeleted.Checked;
- FListBoxMediator.ShowDeleted := chkShowDeleted.Checked;
-end;
-
-procedure TMainForm.InitializeComponents;
-var
- lbl: TfpgLabel;
-begin
- btnClose := CreateButton(self, 416, 370, 75, 'Close', @btnCloseClick);
- btnClose.ImageName := 'stdimg.Close';
- btnClose.ShowImage := True;
-
- btnViaCode := CreateButton(self, 7, btnClose.Top, 150, 'Change via Code', @btnViaCodeClick);
- btnViaCode.Hint := 'This changes a object via code, and magically the list views are updated.';
-
- btnAddViaCode := CreateButton(self, 7, btnViaCode.Top - btnViaCode.Height - 5, 150, 'Add via Code', @btnViaCodeAddClick);
- btnAddViaCode.Hint := 'This adds a object via code, and magically the list views are updated.';
-
- btnShowModel := CreateButton(self, btnViaCode.Right + 7, btnViaCode.Top, 100, 'Show Model', @btnShowModelClick);
- btnShowModel.Hint := 'Show the internal state of all objects';
-
- btnDeleted := CreateButton(self, btnShowModel.Right + 7, btnClose.Top, 75, 'Delete', @btnDeleteClick);
- btnDeleted.Hint := 'Toggle the Deleted state of seleted object in ListBox';
-
- lblPerson := CreateLabel(self, 7, 20, 'Details of selected object in ComboBox');
- lblPerson.FontDesc := '#Label2';
-
- lblName := CreateLabel(self, 25, lblPerson.Bottom + 7, 'Name:');
- edtName := CreateEdit(self, lblName.Right + 7, lblPerson.Bottom + 5, 150, 20);
- edtName.Enabled := False;
-
- lblAge := CreateLabel(self, 25, edtName.Bottom + 7, 'Age:');
- AgeTrackBar := TfpgTrackbar.Create(self);
- AgeTrackBar.Left := edtName.Left;
- AgeTrackBar.Top := lblAge.Top-4;
- AgeTrackBar.Width := edtName.Width;
- AgeTrackBar.ShowPosition := True;
- AgeTrackBar.Enabled := False;
-
- lbl := CreateLabel(self, edtName.Right + 30, edtName.Top, 'These components observe the selected item of ComboBox', 200, AgeTrackBar.Top-5);
- lbl.TextColor := clBlue;
- lbl.WrapText := True;
-
- lbPeople := TfpgListBox.Create(self);
- lbPeople.Top := AgeTrackBar.Bottom + 17;
- lbPeople.Left := 7;
- lbPeople.Height := 200;
- lbPeople.Width := 200;
- lbPeople.Hint := 'Shows objects from the object list';
-
- cbPeople := TfpgComboBox.Create(self);
- cbPeople.Top := AgeTrackBar.Bottom + 17;
- cbPeople.Left := lbPeople.Right + 15;
- cbPeople.Width := 200;
- cbPeople.Hint := 'Shows objects from the object list';
-
- chkShowDeleted := CreateCheckBox(self, cbPeople.Left, lbPeople.Bottom-20, 'Show Deleted');
-
-end;
-
-procedure TMainForm.SetupMediators;
-begin
- { list mediators }
- FComboBoxMediator := TPersonList_ComboBox_Mediator.CreateCustom(FPersonList, cbPeople);
- FListBoxMediator := TListBoxMediator.CreateCustom(FPersonList, lbPeople);
-
- { property/edit mediators }
- FNameMediator := TPerson_Name_TextEdit_View.CreateCustom(edtName, FComboBoxMediator.SelectedObject, 'Name', 'Text');
- FTrackBarAgeMediator := TPerson_Age_TrackBar_Mediator.CreateCustom(AgeTrackBar, FComboBoxMediator.SelectedObject, 'Age', 'Position');
-
- { By default we creating mediators, they are not updated automatically. This
- allows us to notify all observers at once. This behaviour can be changed. }
- FPersonList.NotifyObservers;
-end;
-
-procedure TMainForm.SetupEventHandlers;
-begin
- lbPeople.OnChange := @lbSelectionChanged;
- cbPeople.OnChange := @cbSelectionChanged;
- chkShowDeleted.OnChange := @chkShowDeletedChange;
-end;
-
-constructor TMainForm.Create(AOwner: TComponent);
-begin
- inherited Create(AOwner);
- WindowTitle := 'List Mediators Demo';
- WindowPosition := wpUser;
- SetPosition(100, 100, 500, 400);
-
- InitializeComponents;
- FPersonList := GeneratePersonList;
- SetupEventHandlers;
-end;
-
-destructor TMainForm.Destroy;
-begin
- FNameMediator.Free;
- FTrackBarAgeMediator.Free;
- FComboBoxMediator.Free;
- FListBoxMediator.Free;
- FPersonList.Free;
- inherited Destroy;
-end;
-
-procedure TMainForm.AfterConstruction;
-begin
- inherited AfterConstruction;
- { The only trick here is to not let the OnChange events fire
- before the mediators are not set up!! }
- SetupMediators;
-end;
-
-end.
-
diff --git a/extras/tiopf/demos/ListControlDemo/listcontroldemo.lpi b/extras/tiopf/demos/ListControlDemo/listcontroldemo.lpi
deleted file mode 100644
index 6faa819b..00000000
--- a/extras/tiopf/demos/ListControlDemo/listcontroldemo.lpi
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0"?>
-<CONFIG>
- <ProjectOptions>
- <Version Value="7"/>
- <General>
- <Flags>
- <SaveOnlyProjectUnits Value="True"/>
- <LRSInOutputDirectory Value="False"/>
- </Flags>
- <SessionStorage Value="InProjectDir"/>
- <MainUnit Value="0"/>
- <TargetFileExt Value=""/>
- </General>
- <VersionInfo>
- <ProjectVersion Value=""/>
- </VersionInfo>
- <PublishOptions>
- <Version Value="2"/>
- <IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/>
- <ExcludeFileFilter Value="*.(bak|ppu|ppw|o|so);*~;backup"/>
- </PublishOptions>
- <RunParams>
- <local>
- <FormatVersion Value="1"/>
- <LaunchingApplication PathPlusParams="/usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/>
- </local>
- </RunParams>
- <RequiredPackages Count="1">
- <Item1>
- <PackageName Value="tiOPFfpGUI"/>
- <MinVersion Major="2" Release="3" Valid="True"/>
- </Item1>
- </RequiredPackages>
- <Units Count="5">
- <Unit0>
- <Filename Value="listcontroldemo.lpr"/>
- <IsPartOfProject Value="True"/>
- <UnitName Value="listcontroldemo"/>
- </Unit0>
- <Unit1>
- <Filename Value="frmMain.pas"/>
- <IsPartOfProject Value="True"/>
- <UnitName Value="frmMain"/>
- </Unit1>
- <Unit2>
- <Filename Value="../Common/Model_View.pas"/>
- <IsPartOfProject Value="True"/>
- <UnitName Value="Model_View"/>
- </Unit2>
- <Unit3>
- <Filename Value="../Common/Constants.pas"/>
- <IsPartOfProject Value="True"/>
- <UnitName Value="Constants"/>
- </Unit3>
- <Unit4>
- <Filename Value="../Common/Model.pas"/>
- <IsPartOfProject Value="True"/>
- <UnitName Value="Model"/>
- </Unit4>
- </Units>
- </ProjectOptions>
- <CompilerOptions>
- <Version Value="8"/>
- <SearchPaths>
- <OtherUnitFiles Value="../Common/"/>
- <UnitOutputDirectory Value="units/$(TargetCPU)-$(TargetOS)"/>
- </SearchPaths>
- <Other>
- <CustomOptions Value="
-"/>
- <CompilerPath Value="$(CompPath)"/>
- </Other>
- </CompilerOptions>
-</CONFIG>
diff --git a/extras/tiopf/demos/ListControlDemo/listcontroldemo.lpr b/extras/tiopf/demos/ListControlDemo/listcontroldemo.lpr
deleted file mode 100644
index 6455aa9b..00000000
--- a/extras/tiopf/demos/ListControlDemo/listcontroldemo.lpr
+++ /dev/null
@@ -1,26 +0,0 @@
-program listcontroldemo;
-
-{$mode objfpc}{$H+}
-
-uses
- {$IFDEF UNIX}{$IFDEF UseCThreads}
- cthreads,
- {$ENDIF}{$ENDIF}
- Classes, fpg_base, fpg_main, frmMain, Model, Constants, Model_View;
-
-
-procedure MainProc;
-var
- frm: TMainForm;
-begin
- fpgApplication.Initialize;
- frm := TMainForm.Create(nil);
- frm.Show;
- fpgApplication.Run;
-end;
-
-begin
- MainProc;
-end.
-
-
diff --git a/extras/tiopf/demos/StringGridMediatorDemo/frm_main.pas b/extras/tiopf/demos/StringGridMediatorDemo/frm_main.pas
deleted file mode 100644
index 3878ad61..00000000
--- a/extras/tiopf/demos/StringGridMediatorDemo/frm_main.pas
+++ /dev/null
@@ -1,288 +0,0 @@
-unit frm_main;
-
-{$mode objfpc}{$H+}
-
-interface
-
-uses
- SysUtils, Classes, fpg_base, fpg_main, fpg_edit,
- fpg_widget, fpg_form, fpg_label, fpg_button,
- fpg_basegrid, fpg_grid, fpg_menu,
- fpg_panel, fpg_popupcalendar, fpg_gauge, Model, tiListMediators;
-
-type
-
- TMainForm = class(TfpgForm)
- private
- FList: TPersonList;
- medGrid: TtiStringGridMediatorView;
- procedure SetupMediators;
- procedure ValidateData;
- procedure btnAddClicked(Sender: TObject);
- procedure btnEditClicked(Sender: TObject);
- procedure btnDeleteClicked(Sender: TObject);
- procedure btnUpdateClicked(Sender: TObject);
- procedure btnQuitClicked(Sender: TObject);
- procedure btnRetrieveClicked(Sender: TObject);
- public
- {@VFD_HEAD_BEGIN: MainForm}
- grdName1: TfpgStringGrid;
- lblName1: TfpgLabel;
- edtName: TfpgEdit;
- lblName2: TfpgLabel;
- edtAge: TfpgEdit;
- btnQuit: TfpgButton;
- btnUpdate: TfpgButton;
- btnAdd: TfpgButton;
- btnEdit: TfpgButton;
- btnDelete: TfpgButton;
- btnRetrieve: TfpgButton;
- lblName3: TfpgLabel;
- {@VFD_HEAD_END: MainForm}
- constructor Create(AOwner: TComponent); override;
- destructor Destroy; override;
- procedure AfterCreate; override;
- end;
-
-{@VFD_NEWFORM_DECL}
-
-implementation
-
-uses
- fpg_dialogs, frm_personmaint;
-
-{@VFD_NEWFORM_IMPL}
-
-procedure TMainForm.SetupMediators;
-begin
- medGrid := TtiStringGridMediatorView.CreateCustom(FList, grdName1, 'Name(200);Age');
-end;
-
-procedure TMainForm.ValidateData;
-var
- i: integer;
-begin
- try
- i := StrToInt(edtAge.Text);
- if (i < 1) or (i > 100) then
- begin
- TfpgMessageDialog.Warning('Age out of range', 'Age must be between 1 and 100');
- Abort;
- end;
- except
- on E: Exception do
- TfpgMessageDialog.Critical('Age must be a numeric value', E.Message);
- end;
-end;
-
-procedure TMainForm.btnAddClicked(Sender: TObject);
-var
- lData: TPerson;
-begin
- lData := TPerson.CreateNew;
- lData.Name := 'New Name';
- lData.Age := 12;
- FList.Add(lData);
-end;
-
-procedure TMainForm.btnEditClicked(Sender: TObject);
-begin
- if medGrid.SelectedObject = nil then
- Exit;
- EditPerson(TPerson(medGrid.SelectedObject));
-end;
-
-procedure TMainForm.btnDeleteClicked(Sender: TObject);
-begin
- medGrid.SelectedObject.Deleted := True;
- FList.NotifyObservers;
-end;
-
-procedure TMainForm.btnUpdateClicked(Sender: TObject);
-var
- lData: TPerson;
-begin
- ValidateData;
- lData := medGrid.SelectedObject as TPerson;
- lData.BeginUpdate;
- lData.Name := edtName.Text;
- lData.Age := StrToInt(edtAge.Text);
- lData.EndUpdate;
-end;
-
-procedure TMainForm.btnQuitClicked(Sender: TObject);
-begin
- Close;
-end;
-
-procedure TMainForm.btnRetrieveClicked(Sender: TObject);
-var
- lData: TPerson;
-begin
- lData := medGrid.SelectedObject as TPerson;
- if lData = nil then
- Exit;
- edtName.Text := lData.Name;
- edtAge.Text := IntToStr(lData.Age);
-end;
-
-constructor TMainForm.Create(AOwner: TComponent);
-begin
- inherited Create(AOwner);
- FList := GeneratePersonList;
-end;
-
-destructor TMainForm.Destroy;
-begin
- medGrid.Free;
- FList.Free;
- inherited Destroy;
-end;
-
-procedure TMainForm.AfterCreate;
-begin
- {@VFD_BODY_BEGIN: MainForm}
- Name := 'MainForm';
- SetPosition(308, 203, 463, 265);
- WindowTitle := 'StringGrid Mediator Demo';
-
- grdName1 := TfpgStringGrid.Create(self);
- with grdName1 do
- begin
- Name := 'grdName1';
- SetPosition(8, 28, 272, 172);
- FontDesc := '#Grid';
- HeaderFontDesc := '#GridHeader';
- end;
-
- lblName1 := TfpgLabel.Create(self);
- with lblName1 do
- begin
- Name := 'lblName1';
- SetPosition(332, 80, 80, 15);
- FontDesc := '#Label1';
- Text := 'Name:';
- end;
-
- edtName := TfpgEdit.Create(self);
- with edtName do
- begin
- Name := 'edtName';
- SetPosition(332, 96, 120, 21);
- TabOrder := 2;
- Text := '';
- FontDesc := '#Edit1';
- end;
-
- lblName2 := TfpgLabel.Create(self);
- with lblName2 do
- begin
- Name := 'lblName2';
- SetPosition(332, 120, 80, 15);
- FontDesc := '#Label1';
- Text := 'Age:';
- end;
-
- edtAge := TfpgEdit.Create(self);
- with edtAge do
- begin
- Name := 'edtAge';
- SetPosition(332, 136, 52, 21);
- TabOrder := 4;
- Text := '';
- FontDesc := '#Edit1';
- end;
-
- btnQuit := TfpgButton.Create(self);
- with btnQuit do
- begin
- Name := 'btnQuit';
- SetPosition(376, 236, 80, 23);
- Anchors := [anRight,anBottom];
- Text := 'Quit';
- FontDesc := '#Label1';
- ImageName := 'stdimg.quit';
- TabOrder := 5;
- OnClick := @btnQuitClicked;
- end;
-
- btnUpdate := TfpgButton.Create(self);
- with btnUpdate do
- begin
- Name := 'btnUpdate';
- SetPosition(356, 168, 80, 23);
- Text := 'Update';
- FontDesc := '#Label1';
- ImageName := '';
- TabOrder := 6;
- OnClick := @btnUpdateClicked;
- end;
-
- btnAdd := TfpgButton.Create(self);
- with btnAdd do
- begin
- Name := 'btnAdd';
- SetPosition(8, 4, 48, 20);
- Text := 'add';
- FontDesc := '#Label1';
- ImageName := '';
- TabOrder := 7;
- OnClick := @btnAddClicked;
-// Enabled := False;
- end;
-
- btnEdit := TfpgButton.Create(self);
- with btnEdit do
- begin
- Name := 'btnEdit';
- SetPosition(60, 4, 48, 20);
- Text := 'edit';
- FontDesc := '#Label1';
- ImageName := '';
- TabOrder := 8;
- OnClick := @btnEditClicked;
- end;
-
- btnDelete := TfpgButton.Create(self);
- with btnDelete do
- begin
- Name := 'btnDelete';
- SetPosition(112, 4, 48, 20);
- Text := 'delete';
- FontDesc := '#Label1';
- ImageName := '';
- TabOrder := 9;
- OnClick := @btnDeleteClicked;
-// Enabled := False;
- end;
-
- btnRetrieve := TfpgButton.Create(self);
- with btnRetrieve do
- begin
- Name := 'btnRetrieve';
- SetPosition(288, 84, 28, 23);
- Text := '>>';
- FontDesc := '#Label1';
- ImageName := '';
- TabOrder := 10;
- OnClick := @btnRetrieveClicked;
- end;
-
- lblName3 := TfpgLabel.Create(self);
- with lblName3 do
- begin
- Name := 'lblName3';
- SetPosition(288, 0, 167, 70);
- Anchors := [anLeft,anRight,anTop];
- FontDesc := '#Label1';
- Text := 'The controls below allow you to manually update the selected object. No mediators are used.';
- WrapText := True;
- end;
-
- {@VFD_BODY_END: MainForm}
-
- SetupMediators;
-end;
-
-
-end.
diff --git a/extras/tiopf/demos/StringGridMediatorDemo/frm_personmaint.pas b/extras/tiopf/demos/StringGridMediatorDemo/frm_personmaint.pas
deleted file mode 100644
index 96620e92..00000000
--- a/extras/tiopf/demos/StringGridMediatorDemo/frm_personmaint.pas
+++ /dev/null
@@ -1,191 +0,0 @@
-unit frm_personmaint;
-
-{$mode objfpc}{$H+}
-
-interface
-
-uses
- SysUtils, Classes, fpg_base, fpg_main, fpg_edit,
- fpg_form, fpg_label, fpg_button,
- model, model_view;
-
-type
-
- TPersonMaintForm = class(TfpgForm)
- private
- FData: TPerson;
- FMemento: TPersonMemento; // This form is the Caretaker
- FmedName: TPerson_Name_TextEdit_View;
- FmedAge: TPerson_Age_TextEdit_View;
- procedure FormShow(Sender: TObject);
- procedure SetData(const AValue: TPerson);
- procedure SetupMediators;
- public
- {@VFD_HEAD_BEGIN: PersonMaintForm}
- lblName1: TfpgLabel;
- edtName: TfpgEdit;
- lblName2: TfpgLabel;
- edtAge: TfpgEdit;
- btnOK: TfpgButton;
- btnCancel: TfpgButton;
- lblName3: TfpgLabel;
- {@VFD_HEAD_END: PersonMaintForm}
- constructor Create(AOwner: TComponent); override;
- destructor Destroy; override;
- procedure AfterCreate; override;
- property Data: TPerson read FData write SetData;
- end;
-
-
-procedure EditPerson(const AData: TPerson);
-
-{@VFD_NEWFORM_DECL}
-
-implementation
-
-procedure EditPerson(const AData: TPerson);
-var
- frm: TPersonMaintForm;
-begin
- frm := TPersonMaintForm.Create(nil);
- try
- frm.Data := AData;
- if frm.ShowModal = 2 then // Cancel clicked
- begin
- // undo changes
- AData.BeginUpdate;
- AData.Memento := frm.FMemento;
- AData.EndUpdate;
- end;
- finally
- frm.Free;
- end;
-end;
-
-{@VFD_NEWFORM_IMPL}
-
-procedure TPersonMaintForm.FormShow(Sender: TObject);
-begin
- SetupMediators;
-end;
-
-procedure TPersonMaintForm.SetData(const AValue: TPerson);
-begin
- if FData = AValue then
- exit; //==>>
- FData := AValue;
- FreeAndNil(FMemento);
- FMemento := FData.Memento;
-end;
-
-procedure TPersonMaintForm.SetupMediators;
-begin
- FmedName := TPerson_Name_TextEdit_View.CreateCustom(edtName, FData, 'Name', 'Text');
- FmedAge := TPerson_Age_TextEdit_View.CreateCustom(edtAge, FData, 'Age', 'Text');
-// edtName.Text := FData.Name;
-// edtAge.Text := IntToStr(FData.Age);
-
- // Notify all observers to update themselves.
- FData.NotifyObservers;
-end;
-
-constructor TPersonMaintForm.Create(AOwner: TComponent);
-begin
- inherited Create(AOwner);
- OnShow := @FormShow;
-end;
-
-destructor TPersonMaintForm.Destroy;
-begin
- FmedName.Free;
- FmedAge.Free;
- inherited Destroy;
-end;
-
-procedure TPersonMaintForm.AfterCreate;
-begin
- {@VFD_BODY_BEGIN: PersonMaintForm}
- Name := 'PersonMaintForm';
- SetPosition(418, 244, 232, 190);
- WindowTitle := 'Edit Person...';
-
- lblName1 := TfpgLabel.Create(self);
- with lblName1 do
- begin
- Name := 'lblName1';
- SetPosition(8, 8, 212, 15);
- FontDesc := '#Label1';
- Text := 'Name:';
- end;
-
- edtName := TfpgEdit.Create(self);
- with edtName do
- begin
- Name := 'edtName';
- SetPosition(8, 24, 212, 21);
- TabOrder := 1;
- Text := '';
- FontDesc := '#Edit1';
- end;
-
- lblName2 := TfpgLabel.Create(self);
- with lblName2 do
- begin
- Name := 'lblName2';
- SetPosition(8, 56, 212, 15);
- FontDesc := '#Label1';
- Text := 'Age:';
- end;
-
- edtAge := TfpgEdit.Create(self);
- with edtAge do
- begin
- Name := 'edtAge';
- SetPosition(8, 72, 64, 21);
- TabOrder := 3;
- Text := '';
- FontDesc := '#Edit1';
- end;
-
- btnOK := TfpgButton.Create(self);
- with btnOK do
- begin
- Name := 'btnOK';
- SetPosition(56, 159, 80, 23);
- Anchors := [anRight,anBottom];
- Text := 'OK';
- FontDesc := '#Label1';
- ImageName := '';
- ModalResult := 1;
- TabOrder := 4;
- end;
-
- btnCancel := TfpgButton.Create(self);
- with btnCancel do
- begin
- Name := 'btnCancel';
- SetPosition(140, 159, 80, 23);
- Anchors := [anRight,anBottom];
- Text := 'Cancel';
- FontDesc := '#Label1';
- ImageName := '';
- ModalResult := 2;
- TabOrder := 5;
- end;
-
- lblName3 := TfpgLabel.Create(self);
- with lblName3 do
- begin
- Name := 'lblName3';
- SetPosition(8, 108, 212, 39);
- Anchors := [anLeft,anRight,anTop,anBottom];
- FontDesc := '#Label1';
- Text := 'Notice as you change the values they are updated in the MainForm''s Grid.';
- WrapText := True;
- end;
-
- {@VFD_BODY_END: PersonMaintForm}
-end;
-
-
-end.
diff --git a/extras/tiopf/demos/StringGridMediatorDemo/stringgridmediatordemo.lpi b/extras/tiopf/demos/StringGridMediatorDemo/stringgridmediatordemo.lpi
deleted file mode 100644
index b18e4bf3..00000000
--- a/extras/tiopf/demos/StringGridMediatorDemo/stringgridmediatordemo.lpi
+++ /dev/null
@@ -1,84 +0,0 @@
-<?xml version="1.0"?>
-<CONFIG>
- <ProjectOptions>
- <Version Value="7"/>
- <General>
- <Flags>
- <SaveOnlyProjectUnits Value="True"/>
- <LRSInOutputDirectory Value="False"/>
- </Flags>
- <SessionStorage Value="InProjectDir"/>
- <MainUnit Value="0"/>
- <TargetFileExt Value=""/>
- </General>
- <VersionInfo>
- <ProjectVersion Value=""/>
- </VersionInfo>
- <PublishOptions>
- <Version Value="2"/>
- <IgnoreBinaries Value="False"/>
- <IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/>
- <ExcludeFileFilter Value="*.(bak|ppu|ppw|o|so);*~;backup"/>
- </PublishOptions>
- <RunParams>
- <local>
- <FormatVersion Value="1"/>
- <LaunchingApplication PathPlusParams="/usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/>
- </local>
- </RunParams>
- <RequiredPackages Count="1">
- <Item1>
- <PackageName Value="tiOPFfpGUI"/>
- </Item1>
- </RequiredPackages>
- <Units Count="6">
- <Unit0>
- <Filename Value="stringgridmediatordemo.lpr"/>
- <IsPartOfProject Value="True"/>
- <UnitName Value="stringgridmediatordemo"/>
- </Unit0>
- <Unit1>
- <Filename Value="frm_main.pas"/>
- <IsPartOfProject Value="True"/>
- <UnitName Value="frm_main"/>
- </Unit1>
- <Unit2>
- <Filename Value="../Common/Model.pas"/>
- <IsPartOfProject Value="True"/>
- <UnitName Value="Model"/>
- </Unit2>
- <Unit3>
- <Filename Value="../Common/Constants.pas"/>
- <IsPartOfProject Value="True"/>
- <UnitName Value="Constants"/>
- </Unit3>
- <Unit4>
- <Filename Value="../Common/Model_View.pas"/>
- <IsPartOfProject Value="True"/>
- <UnitName Value="Model_View"/>
- </Unit4>
- <Unit5>
- <Filename Value="frm_personmaint.pas"/>
- <IsPartOfProject Value="True"/>
- <UnitName Value="frm_personmaint"/>
- </Unit5>
- </Units>
- </ProjectOptions>
- <CompilerOptions>
- <Version Value="8"/>
- <SearchPaths>
- <OtherUnitFiles Value="../Common/"/>
- <UnitOutputDirectory Value="units/$(TargetCPU)-$(TargetOS)"/>
- </SearchPaths>
- <Linking>
- <Debugging>
- <GenerateDebugInfo Value="True"/>
- </Debugging>
- </Linking>
- <Other>
- <CustomOptions Value="
-"/>
- <CompilerPath Value="$(CompPath)"/>
- </Other>
- </CompilerOptions>
-</CONFIG>
diff --git a/extras/tiopf/demos/StringGridMediatorDemo/stringgridmediatordemo.lpr b/extras/tiopf/demos/StringGridMediatorDemo/stringgridmediatordemo.lpr
deleted file mode 100644
index 366718b0..00000000
--- a/extras/tiopf/demos/StringGridMediatorDemo/stringgridmediatordemo.lpr
+++ /dev/null
@@ -1,30 +0,0 @@
-program stringgridmediatordemo;
-
-{$mode objfpc}{$H+}
-
-uses
- {$IFDEF UNIX}{$IFDEF UseCThreads}
- cthreads,
- {$ENDIF}{$ENDIF}
- Classes, fpg_main, frm_main, Model, Constants, tiOPFfpGUI, frm_personmaint,
- Model_View;
-
-
-procedure MainProc;
-var
- frm: TMainForm;
-begin
- fpgApplication.Initialize;
- frm := TMainForm.Create(nil);
- try
- frm.Show;
- fpgApplication.Run;
- finally
- frm.Free;
- end;
-end;
-
-begin
- MainProc;
-end.
-
diff --git a/extras/tiopf/demos/readme.txt b/extras/tiopf/demos/readme.txt
deleted file mode 100644
index 4961aa2c..00000000
--- a/extras/tiopf/demos/readme.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-
- Model-GUI-Mediator (MGM) pattern implementation by Graeme Geldenhuys.
- ---------------------------------------------------------------------
-
-This allows standard controls or any other GUI controls for that matter to become
-object-aware. The benefits are much greater ease in cross platform development,
-or if you would like to make your favorite set of GUI controls object-aware.
-
-Please note this is work in progress...
-So far I have implemented most used basic edit controls:
- TfpgEdit
- TfpgSpinEdit (dependend on fpGUI component)
- TfpgLabel
- TfpgComboBox (single and list property)
- TfpgTrackBar
- TfpgMemo
- TfpgListView (includes popup menu)
- TfpgListBox (includes popup menu)
-
-Currently I am considering implementing the container classes like TfpgTreeView.
-They are quite complex and there are multiple ways of implementing them.
-
-For more information on the MGM pattern, visit Andy Bulka's website.
- http://www.atug.com/andypatterns/mgm.htm
-
-
- ----oO0Oo----
-
-
diff --git a/extras/tiopf/demos/rtf_reporting/demo.rtf b/extras/tiopf/demos/rtf_reporting/demo.rtf
deleted file mode 100644
index 637733dd..00000000
--- a/extras/tiopf/demos/rtf_reporting/demo.rtf
+++ /dev/null
@@ -1,93 +0,0 @@
-{\rtf1\ansi\deff1\adeflang1025
-{\fonttbl{\f0\froman\fprq2\fcharset0 Times New Roman;}{\f1\fnil\fprq0\fcharset0 Times{\*\falt Times New Roman};}{\f2\fnil\fprq0\fcharset0 Times{\*\falt Times New Roman};}{\f3\fswiss\fprq2\fcharset0 DejaVuSans;}{\f4\fnil\fprq0\fcharset0 Times{\*\falt Times New Roman};}{\f5\fswiss\fprq0\fcharset0 Helvetica;}{\f6\fnil\fprq2\fcharset0 AR PL ShanHeiSun Uni;}{\f7\fnil\fprq0\fcharset0 Tahoma;}{\f8\fswiss\fprq0\fcharset0 Tahoma;}}
-{\colortbl;\red0\green0\blue0;\red0\green0\blue128;\red255\green0\blue0;\red153\green153\blue153;\red230\green230\blue230;\red128\green128\blue128;}
-{\stylesheet{\s1\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057\snext1 Normal;}
-{\s2\sb240\sa120\keepn\rtlch\af5\afs28\lang255\ltrch\dbch\af6\langfe255\hich\f5\fs28\lang2057\loch\f5\fs28\lang2057\sbasedon1\snext3 Heading;}
-{\s3\sa120\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057\sbasedon1\snext3 Body Text;}
-{\s4\sa120\rtlch\af8\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057\sbasedon3\snext4 List;}
-{\s5\sb120\sa120\rtlch\af7\afs24\lang255\ai\ltrch\dbch\af3\langfe255\hich\f2\fs24\lang2057\i\loch\f2\fs24\lang2057\i\sbasedon1\snext5 caption;}
-{\s6\rtlch\af8\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057\sbasedon1\snext6 Index;}
-{\s7\sb120\sa120\rtlch\af8\afs24\lang255\ai\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\i\loch\fs24\lang2057\i\sbasedon1\snext7 caption;}
-{\s8\sb240\sa120\keepn\rtlch\af5\afs21\lang255\ab\ltrch\dbch\af6\langfe255\hich\f5\fs21\lang2057\b\loch\f5\fs21\lang2057\b\sbasedon2\snext3{\*\soutlvl8} heading 9;}
-{\s9\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057\sbasedon1\snext9 Table Contents;}
-{\s10\qc\rtlch\afs24\lang255\ab\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\b\loch\fs24\lang2057\b\sbasedon9\snext10 Table Heading;}
-{\*\cs12\cf0\rtlch\af1\afs24\lang255\ltrch\dbch\af1\langfe255\hich\f1\fs24\lang2057\loch\f1\fs24\lang2057 RTF_Num 2 1;}
-{\*\cs13\cf0\rtlch\af1\afs24\lang255\ltrch\dbch\af1\langfe255\hich\f1\fs24\lang2057\loch\f1\fs24\lang2057 RTF_Num 2 2;}
-{\*\cs14\cf0\rtlch\af1\afs24\lang255\ltrch\dbch\af1\langfe255\hich\f1\fs24\lang2057\loch\f1\fs24\lang2057 RTF_Num 2 3;}
-{\*\cs15\cf0\rtlch\af1\afs24\lang255\ltrch\dbch\af1\langfe255\hich\f1\fs24\lang2057\loch\f1\fs24\lang2057 RTF_Num 2 4;}
-{\*\cs16\cf0\rtlch\af1\afs24\lang255\ltrch\dbch\af1\langfe255\hich\f1\fs24\lang2057\loch\f1\fs24\lang2057 RTF_Num 2 5;}
-{\*\cs17\cf0\rtlch\af1\afs24\lang255\ltrch\dbch\af1\langfe255\hich\f1\fs24\lang2057\loch\f1\fs24\lang2057 RTF_Num 2 6;}
-{\*\cs18\cf0\rtlch\af1\afs24\lang255\ltrch\dbch\af1\langfe255\hich\f1\fs24\lang2057\loch\f1\fs24\lang2057 RTF_Num 2 7;}
-{\*\cs19\cf0\rtlch\af1\afs24\lang255\ltrch\dbch\af1\langfe255\hich\f1\fs24\lang2057\loch\f1\fs24\lang2057 RTF_Num 2 8;}
-{\*\cs20\cf0\rtlch\af1\afs24\lang255\ltrch\dbch\af1\langfe255\hich\f1\fs24\lang2057\loch\f1\fs24\lang2057 RTF_Num 2 9;}
-{\*\cs21\cf0\rtlch\af1\afs24\lang255\ltrch\dbch\af1\langfe255\hich\f1\fs24\lang2057\loch\f1\fs24\lang2057 RTF_Num 2 10;}
-{\*\cs22\cf2\ul\ulc0\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 Internet link;}
-{\*\cs23\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 Numbering Symbols;}
-}{\*\listtable{\list\listtemplateid1
-{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'00.;}{\levelnumbers\'01;}\fi-360\li720}
-{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'01.;}{\levelnumbers\'01;}\fi-360\li1080}
-{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'02.;}{\levelnumbers\'01;}\fi-360\li1440}
-{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'03.;}{\levelnumbers\'01;}\fi-360\li1800}
-{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'04.;}{\levelnumbers\'01;}\fi-360\li2160}
-{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'05.;}{\levelnumbers\'01;}\fi-360\li2520}
-{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'06.;}{\levelnumbers\'01;}\fi-360\li2880}
-{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'07.;}{\levelnumbers\'01;}\fi-360\li3240}
-{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'08.;}{\levelnumbers\'01;}\fi-360\li3600}
-{\*\soutlvl{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'09.;}{\levelnumbers\'01;}\fi-360\li3960}}{\listname RTF_Num 2;}\listid1}
-}{\listoverridetable{\listoverride\listid1\listoverridecount0\ls0}}
-
-{\info{\creatim\yr0\mo0\dy0\hr0\min0}{\revtim\yr0\mo0\dy0\hr0\min0}{\printim\yr0\mo0\dy0\hr0\min0}{\comment StarWriter}{\vern6800}}\deftab709
-{\*\pgdsctbl
-{\pgdsc0\pgdscuse195\pgwsxn11905\pghsxn16837\marglsxn1134\margrsxn1134\margtsxn1134\margbsxn1134\pgdscnxt0 Standard;}}
-{\*\pgdscno0}\paperh16837\paperw11905\margl1134\margr1134\margt1134\margb1134\sectd\sbknone\pgwsxn11905\pghsxn16837\marglsxn1134\margrsxn1134\margtsxn1134\margbsxn1134\ftnbj\ftnstart1\ftnrstcont\ftnnar\aenddoc\aftnrstcont\aftnstart1\aftnnrlc
-\pard\plain \ltrpar\s1\ql\rtlch\afs32\lang255\ltrch\dbch\af3\langfe255\hich\fs32\lang2057\loch\fs32\lang2057 {\rtlch \ltrch\loch\f1\fs32\lang2057\i0\b0 Simple demo of tiRtfReport}
-\par \pard\plain \ltrpar\s1\ql\rtlch\afs20\lang255\ab\ltrch\dbch\af3\langfe255\hich\fs20\lang2057\b\loch\fs20\lang2057\b
-\par \pard\plain \ltrpar\s1\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs20\lang2057\b\loch\fs20\lang2057\b {\rtlch \ltrch\loch\f1\fs20\lang2057\i0\b This shows embedded \\Date\\ \\Time\\ (date & time) value. \line Date \\Date\\ in decoded format: Y=\\SYear(Date)\\ M=\\Month(Date)\\ D=\\Day(Date)\\}
-\par \pard\plain \ltrpar\s1\ql\rtlch\afs20\lang255\ltrch\dbch\af3\langfe255\hich\fs20\lang2057\loch\fs20\lang2057 {\rtlch \ltrch\loch\f1\fs20\lang2057\i0\b0 If you view the report design you will notice that function parameters do not need to be escaped with the backslash symbol.}
-\par \pard\plain \ltrpar\s1\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\par \pard\plain \ltrpar\s1\ql\rtlch\afs24\lang255\ab\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\b\loch\fs24\lang2057\b {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b Accessing the tiOPF framework objects}
-\par \pard\plain \ltrpar\s1\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\par \pard\plain \ltrpar\s1\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 \\@count:=0\\\\scan(demoitems)\\}
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat4\cellx1260\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat4\cellx4818\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat4\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\clcbpat4\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Id}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Name}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Data.Id}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Data.Name}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 \\scanentry\\\\@count:=@count+1\\}
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx1264\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx4815\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\clcbpat5\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 \\DemoItems.Id\\}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 \\demoitems.Name\\}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 \\demoitems.oData.Id\\}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 \\demoitems.oData.Name\\}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 \\if(RecordCount(demoitems.oList)>0)\\\\scan(demoitems.oList)\\}
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx1260\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx4818\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Nested items}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 \\demoitems.oList.Id\\}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 \\demoitems.oList.Name\\}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 \\endscan\\\\endif\\\\endscan\\}
-\par \pard\plain \ltrpar\s1\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\par \pard\plain \ltrpar\s1\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Total of \\@count\\ records in the demoitems list.}
-\par \pard\plain \ltrpar\s1\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\par \pard\plain \ltrpar\s1\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\par \pard\plain \ltrpar\s1\ql\rtlch\afs24\lang255\ab\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\b\loch\fs24\lang2057\b {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b Custom function}
-\par \pard\plain \ltrpar\s1\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is the result of the extra defined function: \\bla\\}
-\par \pard\plain \ltrpar\s1\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\par \pard\plain \ltrpar\s1\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\par \pard\plain \ltrpar\s1\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 If you mistype a field name you get something like this: \\First(DemoItems)\\\\DemoItems.Hahaha\\. This is extremely useful for detecting and solving errors in your RTF reports.}
-\par \pard\plain \ltrpar\s1\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\par \pard\plain \ltrpar\s1\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\par \pard\plain \ltrpar\s1\ql\rtlch\afs24\lang255\ab\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\b\loch\fs24\lang2057\b {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b Report Design}
-\par \pard\plain \ltrpar\s1\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Sometimes it is necessary to make report fields hidden so that it fixes report formatting issues. To view all the Report Fields you need to tell OpenOffice to show hidden text.}
-\par \pard\plain \ltrpar\s1\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\par \pard\plain \ltrpar\s1\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Follow these steps to view hidden text:}
-\par \pard\plain {\listtext\pard\plain \li720\ri0\lin720\rin0\fi-360\f3 1.\tab}\ilvl0 \ltrpar\s1\ls0\li720\ri0\lin720\rin0\fi-360\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Enable nonprinting characters: View | Nonprinting Characters}
-\par \pard\plain {\listtext\pard\plain \li720\ri0\lin720\rin0\fi-360\f3 2.\tab}\ilvl0 \ltrpar\s1\ls0\li720\ri0\lin720\rin0\fi-360\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 If you don't see all the fields yet (eg: between the table header and table details lines) you need to enable the show hidden text option in: Tools | Options | OpenOffice.org Writer | Formatting Aids. Then tick the "Hidden text" option in the "Display of"
- section.}
-\par \pard\plain \ltrpar\s1\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\par \pard\plain \ltrpar\s1\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\par \pard\plain \ltrpar\s1\cf3\qc\rtlch\afs24\lang255\ab\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\b\loch\fs24\lang2057\b {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b The End!}
-\par \pard\plain \ltrpar\s1\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\par \pard\plain \ltrpar\s1\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\par \pard\plain \ltrpar\s1\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\par } \ No newline at end of file
diff --git a/extras/tiopf/demos/rtf_reporting/demoproject.lpi b/extras/tiopf/demos/rtf_reporting/demoproject.lpi
deleted file mode 100644
index dd154d16..00000000
--- a/extras/tiopf/demos/rtf_reporting/demoproject.lpi
+++ /dev/null
@@ -1,56 +0,0 @@
-<?xml version="1.0"?>
-<CONFIG>
- <ProjectOptions>
- <Version Value="7"/>
- <General>
- <Flags>
- <SaveOnlyProjectUnits Value="True"/>
- <LRSInOutputDirectory Value="False"/>
- </Flags>
- <SessionStorage Value="InProjectDir"/>
- <MainUnit Value="0"/>
- <TargetFileExt Value=""/>
- </General>
- <VersionInfo>
- <ProjectVersion Value=""/>
- </VersionInfo>
- <PublishOptions>
- <Version Value="2"/>
- <IgnoreBinaries Value="False"/>
- <IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/>
- <ExcludeFileFilter Value="*.(bak|ppu|ppw|o|so);*~;backup"/>
- </PublishOptions>
- <RunParams>
- <local>
- <FormatVersion Value="1"/>
- <LaunchingApplication PathPlusParams="/usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/>
- </local>
- </RunParams>
- <RequiredPackages Count="1">
- <Item1>
- <PackageName Value="tiOPFfpGUI"/>
- </Item1>
- </RequiredPackages>
- <Units Count="2">
- <Unit0>
- <Filename Value="demoproject.lpr"/>
- <IsPartOfProject Value="True"/>
- <UnitName Value="demoproject"/>
- </Unit0>
- <Unit1>
- <Filename Value="frmMain.pas"/>
- <IsPartOfProject Value="True"/>
- <UnitName Value="frmMain"/>
- </Unit1>
- </Units>
- </ProjectOptions>
- <CompilerOptions>
- <Version Value="8"/>
- <SearchPaths>
- <UnitOutputDirectory Value="units/$(TargetCPU)-$(TargetOS)"/>
- </SearchPaths>
- <Other>
- <CompilerPath Value="$(CompPath)"/>
- </Other>
- </CompilerOptions>
-</CONFIG>
diff --git a/extras/tiopf/demos/rtf_reporting/demoproject.lpr b/extras/tiopf/demos/rtf_reporting/demoproject.lpr
deleted file mode 100644
index e8ab8521..00000000
--- a/extras/tiopf/demos/rtf_reporting/demoproject.lpr
+++ /dev/null
@@ -1,30 +0,0 @@
-program demoproject;
-
-{$mode objfpc}{$H+}
-
-uses
- {$IFDEF UNIX}{$IFDEF UseCThreads}
- cthreads,
- {$ENDIF}{$ENDIF}
- Classes, fpg_main, frmMain;
-
-
-procedure MainProc;
-var
- frm: TMainForm;
-begin
- fpgApplication.Initialize;
- frm := TMainForm.Create(nil);
- try
- frm.Show;
- fpgApplication.Run;
- finally
- frm.Free;
- end;
-end;
-
-begin
- MainProc;
-end.
-
-
diff --git a/extras/tiopf/demos/rtf_reporting/frmMain.pas b/extras/tiopf/demos/rtf_reporting/frmMain.pas
deleted file mode 100644
index 2cbe8593..00000000
--- a/extras/tiopf/demos/rtf_reporting/frmMain.pas
+++ /dev/null
@@ -1,313 +0,0 @@
-unit frmMain;
-
-{$mode objfpc}{$H+}
- {$ASMMODE intel}
-
-interface
-
-uses
- SysUtils, Classes, fpg_base, fpg_main,
- fpg_form, fpg_label, fpg_button,
- tiRtfReport;
-
-type
-
- //Add extra functions in your rtfreport
- TRtfPrivateParser = class(TtiRtfParser)
- protected
- procedure AddFunctions; override;
- procedure UdfBla(AArgument: TRtfArgument);
- procedure UdfCentreAddress(AArgument: TRtfArgument);
- end;
-
-
- TMainForm = class(TfpgForm)
- private
- ResultFile: string;
- TemplateFile: string;
- procedure btnEditClicked(Sender: TObject);
- procedure btnParseClicked(Sender: TObject);
- procedure btnShowClicked(Sender: TObject);
- public
- {@VFD_HEAD_BEGIN: MainForm}
- Label1: TfpgLabel;
- btnParse: TfpgButton;
- btnEdit: TfpgButton;
- btnShow: TfpgButton;
- {@VFD_HEAD_END: MainForm}
- constructor Create(AOwner: TComponent); override;
- procedure AfterCreate; override;
- end;
-
-{@VFD_NEWFORM_DECL}
-
-
-implementation
-
-uses
- tiObject, process;
-
-
-type
- // Simple BOM structure, nothing fancy
- TtiNestedDemoItem = class(TtiObject)
- private
- FId: integer;
- FName: string;
- published
- property Id: integer read FId write FId;
- property Name: string read FName write FName;
- end;
-
-
- TtiNestedDemoItems = class(TtiObjectList)
- protected
- function GetItems(Idx: integer): TtiNestedDemoItem; reintroduce;
- public
- property Items[Idx: integer]: TtiNestedDemoItem read GetItems;
- end;
-
-
- TtiDemoItem = class(TtiObject)
- private
- FId: integer;
- FName: string;
- FData: TtiNestedDemoItem;
- FList: TtiNestedDemoItems;
- public
- constructor Create; override;
- destructor Destroy; override;
- published
- property Id: integer read FId write FId;
- property Name: string read FName write FName;
- property oData: TtiNestedDemoItem read FData;
- property oList: TtiNestedDemoItems read FList;
- end;
-
-
- TtiDemoItems = class(TtiObjectList)
- protected
- function GetItems(Idx: integer): TtiDemoItem; reintroduce;
- public
- procedure Populate;
- property Items[Idx: integer]: TtiDemoItem read GetItems;
- end;
-
-
-{ TtiNestedDemoItems }
-
-function TtiNestedDemoItems.GetItems(Idx: integer): TtiNestedDemoItem;
-begin
- Result := TtiNestedDemoItem(inherited GetItems(Idx));
-end;
-
-
-{ TtiDemoItem }
-
-constructor TtiDemoItem.Create;
-begin
- inherited;
- FData := TtiNestedDemoItem.Create;
- FList := TtiNestedDemoItems.Create;
-end;
-
-destructor TtiDemoItem.Destroy;
-begin
- FData.Free;
- FList.Free;
- inherited;
-end;
-
-
-{ TtiDemoItems }
-
-function TtiDemoItems.GetItems(Idx: integer): TtiDemoItem;
-begin
- Result := TtiDemoItem(inherited GetItems(Idx));
-end;
-
-procedure TtiDemoItems.Populate;
-var
- i, j: integer;
- ADemoItem: TtiDemoItem;
- ANestedDemoItem: TtiNestedDemoItem;
-begin
- for i := 1 to 20 do begin
- ADemoItem := TtiDemoItem.Create;
- ADemoItem.Id := i;
- ADemoItem.Name := Format('This is demo item %d',[i]);
- ADemoItem.oData.Id := i * 1000;
- ADemoItem.oData.Name := Format('This is demo data item %d',[i * 1000]);
- Add(ADemoItem);
-
- for j := 1 to Random(5) do begin
- ANestedDemoItem := TtiNestedDemoItem.Create;
- ANestedDemoItem.Id := j;
- ANestedDemoItem.Name := Format('This is nested demo item %d',[j]);
- ADemoItem.oList.Add(ANestedDemoItem);
- end;
- end;
-end;
-
-
-{@VFD_NEWFORM_IMPL}
-
-procedure TMainForm.btnEditClicked(Sender: TObject);
-var
- p: TProcess;
-begin
- p := TProcess.Create(nil);
- try
- p.CommandLine := 'xdg-open ' + TemplateFile;
- p.Execute;
- finally
- p.Free;
- end;
-end;
-
-procedure TMainForm.btnParseClicked(Sender: TObject);
-var
- AStart: TDateTime;
- FParser: TRtfPrivateParser;
- ADemoItems: TtiDemoItems;
-begin
- ADemoItems := TtiDemoItems.Create;
- try
- ADemoItems.Populate;
-
- try
- AStart := Now;
-
- Label1.Text := 'working';
- btnShow.Enabled := false;
- btnParse.Enabled := false;
- MouseCursor := mcHourGlass;
- FParser := TRtfPrivateParser.Create;
- try
-// FParser.OnPictureAttr := OnPictureAttr;
-// FParser.OnCreateDataset := OnCreateDataset;
- FParser.Datasets.Add(ADemoItems, 'DemoItems');
-// FParser.Datasets.Add(tbBioLife, 'BioLife');
- FParser.LoadFromFile(TemplateFile);
- FParser.Execute;
- FParser.SaveToFile(ResultFile);
- finally
- FParser.Free;
- MouseCursor := mcDefault;
- btnShow.Enabled := true;
- btnParse.Enabled := true;
- end;
-
- Label1.Text := Format('Session completed in %s',[FormatDateTime('hh:nn:ss:zzz', Now - AStart)]);
- btnShow.Click;
- except
- on E: Exception do begin
- fpgApplication.HandleException(E);
- end;
- end;
-
- finally
- ADemoItems.Free;
- end;
-end;
-
-procedure TMainForm.btnShowClicked(Sender: TObject);
-var
- p: TProcess;
-begin
- p := TProcess.Create(nil);
- try
- p.CommandLine := 'xdg-open ' + ResultFile;
- p.Execute;
- finally
- p.Free;
- end;
-end;
-
-constructor TMainForm.Create(AOwner: TComponent);
-begin
- inherited Create(AOwner);
- TemplateFile := 'demo.rtf';
-// TemplateFile := 'demo_ms.rtf';
- ResultFile := 'result.rtf';
- ShortDateFormat := 'yyyy-mm-dd';
-end;
-
-procedure TMainForm.AfterCreate;
-begin
- {@VFD_BODY_BEGIN: MainForm}
- Name := 'MainForm';
- SetPosition(333, 208, 300, 124);
- WindowTitle := 'RTF Reporting Demo';
-
- Label1 := TfpgLabel.Create(self);
- with Label1 do
- begin
- Name := 'Label1';
- SetPosition(20, 16, 244, 16);
- FontDesc := '#Label1';
- Text := '--';
- end;
-
- btnParse := TfpgButton.Create(self);
- with btnParse do
- begin
- Name := 'btnParse';
- SetPosition(28, 80, 75, 24);
- Text := 'Parse';
- FontDesc := '#Label1';
- ImageName := '';
- TabOrder := 1;
- OnClick := @btnParseClicked;
- end;
-
- btnEdit := TfpgButton.Create(self);
- with btnEdit do
- begin
- Name := 'btnEdit';
- SetPosition(112, 80, 75, 24);
- Text := 'Edit';
- FontDesc := '#Label1';
- ImageName := '';
- TabOrder := 2;
- OnClick := @btnEditClicked;
- end;
-
- btnShow := TfpgButton.Create(self);
- with btnShow do
- begin
- Name := 'btnShow';
- SetPosition(196, 80, 75, 24);
- Text := 'Show';
- FontDesc := '#Label1';
- ImageName := '';
- TabOrder := 3;
- OnClick := @btnShowClicked;
- end;
-
- {@VFD_BODY_END: MainForm}
-end;
-
-
-{ TRtfPrivateParser }
-
-procedure TRtfPrivateParser.AddFunctions;
-begin
- inherited AddFunctions;
- Functions.Add(etFunction, 'Bla', 0, 0, @UdfBla);
- Functions.Add(etFunction, 'CentreAddress', 0, 0, @UdfCentreAddress);
-end;
-
-procedure TRtfPrivateParser.UdfBla(AArgument: TRtfArgument);
-begin
- AArgument.Token := etLitString;
- AArgument.Value := 'Best value is 1.5e+400';
-end;
-
-procedure TRtfPrivateParser.UdfCentreAddress(AArgument: TRtfArgument);
-begin
- AArgument.Token := etLitString;
- AArgument.Value := '8 Stellendal Road, Somerset West, 7130';
-end;
-
-end.
diff --git a/extras/tiopf/demos/rtf_reporting/result.pdf b/extras/tiopf/demos/rtf_reporting/result.pdf
deleted file mode 100644
index 67e95d42..00000000
--- a/extras/tiopf/demos/rtf_reporting/result.pdf
+++ /dev/null
Binary files differ
diff --git a/extras/tiopf/demos/rtf_reporting/result.rtf b/extras/tiopf/demos/rtf_reporting/result.rtf
deleted file mode 100644
index df05f576..00000000
--- a/extras/tiopf/demos/rtf_reporting/result.rtf
+++ /dev/null
@@ -1,489 +0,0 @@
-{\rtf1\ansi\deff1\adeflang1025
-{\fonttbl{\f0\froman\fprq2\fcharset0 Times New Roman;}{\f1\fnil\fprq0\fcharset0 Times{\*\falt Times New Roman};}{\f2\fnil\fprq0\fcharset0 Times{\*\falt Times New Roman};}{\f3\fswiss\fprq2\fcharset0 DejaVuSans;}{\f4\fnil\fprq0\fcharset0 Times{\*\falt Times New Roman};}{\f5\fswiss\fprq0\fcharset0 Helvetica;}{\f6\fnil\fprq2\fcharset0 AR PL ShanHeiSun Uni;}{\f7\fnil\fprq0\fcharset0 Tahoma;}{\f8\fswiss\fprq0\fcharset0 Tahoma;}}
-{\colortbl;\red0\green0\blue0;\red0\green0\blue128;\red255\green0\blue0;\red153\green153\blue153;\red230\green230\blue230;\red128\green128\blue128;\red0\green0\blue255;\red0\green255\blue255;}
-{\stylesheet{\s1\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057\snext1 Normal;}
-{\s2\sb240\sa120\keepn\rtlch\af5\afs28\lang255\ltrch\dbch\af6\langfe255\hich\f5\fs28\lang2057\loch\f5\fs28\lang2057\sbasedon1\snext3 Heading;}
-{\s3\sa120\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057\sbasedon1\snext3 Body Text;}
-{\s4\sa120\rtlch\af8\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057\sbasedon3\snext4 List;}
-{\s5\sb120\sa120\rtlch\af7\afs24\lang255\ai\ltrch\dbch\af3\langfe255\hich\f2\fs24\lang2057\i\loch\f2\fs24\lang2057\i\sbasedon1\snext5 caption;}
-{\s6\rtlch\af8\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057\sbasedon1\snext6 Index;}
-{\s7\sb120\sa120\rtlch\af8\afs24\lang255\ai\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\i\loch\fs24\lang2057\i\sbasedon1\snext7 caption;}
-{\s8\sb240\sa120\keepn\rtlch\af5\afs21\lang255\ab\ltrch\dbch\af6\langfe255\hich\f5\fs21\lang2057\b\loch\f5\fs21\lang2057\b\sbasedon2\snext3{\*\soutlvl8} heading 9;}
-{\s9\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057\sbasedon1\snext9 Table Contents;}
-{\s10\qc\rtlch\afs24\lang255\ab\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\b\loch\fs24\lang2057\b\sbasedon9\snext10 Table Heading;}
-{\*\cs12\cf0\rtlch\af1\afs24\lang255\ltrch\dbch\af1\langfe255\hich\f1\fs24\lang2057\loch\f1\fs24\lang2057 RTF_Num 2 1;}
-{\*\cs13\cf0\rtlch\af1\afs24\lang255\ltrch\dbch\af1\langfe255\hich\f1\fs24\lang2057\loch\f1\fs24\lang2057 RTF_Num 2 2;}
-{\*\cs14\cf0\rtlch\af1\afs24\lang255\ltrch\dbch\af1\langfe255\hich\f1\fs24\lang2057\loch\f1\fs24\lang2057 RTF_Num 2 3;}
-{\*\cs15\cf0\rtlch\af1\afs24\lang255\ltrch\dbch\af1\langfe255\hich\f1\fs24\lang2057\loch\f1\fs24\lang2057 RTF_Num 2 4;}
-{\*\cs16\cf0\rtlch\af1\afs24\lang255\ltrch\dbch\af1\langfe255\hich\f1\fs24\lang2057\loch\f1\fs24\lang2057 RTF_Num 2 5;}
-{\*\cs17\cf0\rtlch\af1\afs24\lang255\ltrch\dbch\af1\langfe255\hich\f1\fs24\lang2057\loch\f1\fs24\lang2057 RTF_Num 2 6;}
-{\*\cs18\cf0\rtlch\af1\afs24\lang255\ltrch\dbch\af1\langfe255\hich\f1\fs24\lang2057\loch\f1\fs24\lang2057 RTF_Num 2 7;}
-{\*\cs19\cf0\rtlch\af1\afs24\lang255\ltrch\dbch\af1\langfe255\hich\f1\fs24\lang2057\loch\f1\fs24\lang2057 RTF_Num 2 8;}
-{\*\cs20\cf0\rtlch\af1\afs24\lang255\ltrch\dbch\af1\langfe255\hich\f1\fs24\lang2057\loch\f1\fs24\lang2057 RTF_Num 2 9;}
-{\*\cs21\cf0\rtlch\af1\afs24\lang255\ltrch\dbch\af1\langfe255\hich\f1\fs24\lang2057\loch\f1\fs24\lang2057 RTF_Num 2 10;}
-{\*\cs22\cf2\ul\ulc0\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 Internet link;}
-{\*\cs23\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 Numbering Symbols;}
-}{\*\listtable{\list\listtemplateid1
-{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'00.;}{\levelnumbers\'01;}\fi-360\li720}
-{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'01.;}{\levelnumbers\'01;}\fi-360\li1080}
-{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'02.;}{\levelnumbers\'01;}\fi-360\li1440}
-{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'03.;}{\levelnumbers\'01;}\fi-360\li1800}
-{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'04.;}{\levelnumbers\'01;}\fi-360\li2160}
-{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'05.;}{\levelnumbers\'01;}\fi-360\li2520}
-{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'06.;}{\levelnumbers\'01;}\fi-360\li2880}
-{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'07.;}{\levelnumbers\'01;}\fi-360\li3240}
-{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'08.;}{\levelnumbers\'01;}\fi-360\li3600}
-{\*\soutlvl{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'09.;}{\levelnumbers\'01;}\fi-360\li3960}}{\listname RTF_Num 2;}\listid1}
-}{\listoverridetable{\listoverride\listid1\listoverridecount0\ls0}}
-
-{\info{\creatim\yr0\mo0\dy0\hr0\min0}{\revtim\yr0\mo0\dy0\hr0\min0}{\printim\yr0\mo0\dy0\hr0\min0}{\comment StarWriter}{\vern6800}}\deftab709
-{\*\pgdsctbl
-{\pgdsc0\pgdscuse195\pgwsxn11905\pghsxn16837\marglsxn1134\margrsxn1134\margtsxn1134\margbsxn1134\pgdscnxt0 Standard;}}
-{\*\pgdscno0}\paperh16837\paperw11905\margl1134\margr1134\margt1134\margb1134\sectd\sbknone\pgwsxn11905\pghsxn16837\marglsxn1134\margrsxn1134\margtsxn1134\margbsxn1134\ftnbj\ftnstart1\ftnrstcont\ftnnar\aenddoc\aftnrstcont\aftnstart1\aftnnrlc
-\pard\plain \ltrpar\s1\ql\rtlch\afs32\lang255\ltrch\dbch\af3\langfe255\hich\fs32\lang2057\loch\fs32\lang2057 {\rtlch \ltrch\loch\f1\fs32\lang2057\i0\b0 Simple demo of tiRtfReport}
-\par \pard\plain \ltrpar\s1\ql\rtlch\afs20\lang255\ab\ltrch\dbch\af3\langfe255\hich\fs20\lang2057\b\loch\fs20\lang2057\b
-\par \pard\plain \ltrpar\s1\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs20\lang2057\b\loch\fs20\lang2057\b {\rtlch \ltrch\loch\f1\fs20\lang2057\i0\b This shows embedded 2008-10-17 11:55:35 (date & time) value. \line Date 2008-10-17 in decoded format: Y=2008 M=10 D=17}
-\par \pard\plain \ltrpar\s1\ql\rtlch\afs20\lang255\ltrch\dbch\af3\langfe255\hich\fs20\lang2057\loch\fs20\lang2057 {\rtlch \ltrch\loch\f1\fs20\lang2057\i0\b0 If you view the report design you will notice that function parameters do not need to be escaped with the backslash symbol.}
-\par \pard\plain \ltrpar\s1\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\par \pard\plain \ltrpar\s1\ql\rtlch\afs24\lang255\ab\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\b\loch\fs24\lang2057\b {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b Accessing the tiOPF framework objects}
-\par \pard\plain \ltrpar\s1\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\par \pard\plain \ltrpar\s1\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat4\cellx1260\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat4\cellx4818\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat4\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\clcbpat4\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Id}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Name}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Data.Id}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Data.Name}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx1264\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx4815\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\clcbpat5\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 1}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is demo item 1}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 1000}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is demo data item 1000}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx1260\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx4818\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Nested items}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 1}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is nested demo item 1}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx1260\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx4818\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Nested items}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 2}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is nested demo item 2}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx1264\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx4815\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\clcbpat5\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 2}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is demo item 2}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 2000}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is demo data item 2000}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx1260\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx4818\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Nested items}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 1}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is nested demo item 1}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx1260\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx4818\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Nested items}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 2}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is nested demo item 2}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx1264\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx4815\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\clcbpat5\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 3}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is demo item 3}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 3000}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is demo data item 3000}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx1260\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx4818\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Nested items}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 1}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is nested demo item 1}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx1260\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx4818\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Nested items}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 2}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is nested demo item 2}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx1260\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx4818\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Nested items}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 3}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is nested demo item 3}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx1264\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx4815\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\clcbpat5\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 4}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is demo item 4}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 4000}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is demo data item 4000}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx1260\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx4818\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Nested items}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 1}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is nested demo item 1}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx1260\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx4818\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Nested items}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 2}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is nested demo item 2}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx1260\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx4818\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Nested items}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 3}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is nested demo item 3}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx1260\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx4818\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Nested items}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 4}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is nested demo item 4}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx1264\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx4815\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\clcbpat5\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 5}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is demo item 5}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 5000}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is demo data item 5000}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx1260\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx4818\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Nested items}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 1}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is nested demo item 1}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx1260\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx4818\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Nested items}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 2}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is nested demo item 2}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx1260\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx4818\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Nested items}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 3}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is nested demo item 3}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx1264\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx4815\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\clcbpat5\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 6}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is demo item 6}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 6000}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is demo data item 6000}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx1260\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx4818\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Nested items}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 1}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is nested demo item 1}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx1260\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx4818\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Nested items}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 2}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is nested demo item 2}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx1260\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx4818\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Nested items}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 3}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is nested demo item 3}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx1260\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx4818\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Nested items}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 4}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is nested demo item 4}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx1264\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx4815\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\clcbpat5\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 7}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is demo item 7}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 7000}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is demo data item 7000}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx1260\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx4818\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Nested items}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 1}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is nested demo item 1}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx1260\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx4818\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Nested items}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 2}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is nested demo item 2}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx1264\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx4815\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\clcbpat5\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 8}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is demo item 8}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 8000}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is demo data item 8000}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx1260\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx4818\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Nested items}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 1}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is nested demo item 1}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx1260\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx4818\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Nested items}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 2}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is nested demo item 2}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx1260\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx4818\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Nested items}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 3}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is nested demo item 3}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx1260\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx4818\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Nested items}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 4}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is nested demo item 4}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx1264\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx4815\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\clcbpat5\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 9}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is demo item 9}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 9000}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is demo data item 9000}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx1260\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx4818\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Nested items}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 1}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is nested demo item 1}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx1260\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx4818\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Nested items}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 2}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is nested demo item 2}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx1264\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx4815\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\clcbpat5\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 10}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is demo item 10}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 10000}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is demo data item 10000}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx1260\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx4818\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Nested items}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 1}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is nested demo item 1}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx1260\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx4818\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Nested items}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 2}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is nested demo item 2}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx1260\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx4818\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Nested items}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 3}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is nested demo item 3}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx1264\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx4815\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\clcbpat5\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 11}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is demo item 11}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 11000}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is demo data item 11000}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx1260\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx4818\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Nested items}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 1}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is nested demo item 1}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx1260\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx4818\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Nested items}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 2}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is nested demo item 2}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx1260\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx4818\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Nested items}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 3}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is nested demo item 3}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx1264\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx4815\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\clcbpat5\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 12}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is demo item 12}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 12000}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is demo data item 12000}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx1260\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx4818\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Nested items}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 1}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is nested demo item 1}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx1264\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx4815\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\clcbpat5\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 13}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is demo item 13}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 13000}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is demo data item 13000}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx1260\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx4818\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Nested items}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 1}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is nested demo item 1}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx1260\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx4818\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Nested items}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 2}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is nested demo item 2}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx1264\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx4815\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\clcbpat5\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 14}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is demo item 14}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 14000}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is demo data item 14000}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx1260\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx4818\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Nested items}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 1}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is nested demo item 1}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx1264\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx4815\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\clcbpat5\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 15}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is demo item 15}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 15000}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is demo data item 15000}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx1260\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx4818\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Nested items}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 1}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is nested demo item 1}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx1260\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx4818\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Nested items}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 2}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is nested demo item 2}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx1260\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx4818\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Nested items}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 3}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is nested demo item 3}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx1260\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx4818\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Nested items}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 4}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is nested demo item 4}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx1264\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx4815\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\clcbpat5\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 16}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is demo item 16}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 16000}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is demo data item 16000}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx1264\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx4815\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\clcbpat5\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 17}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is demo item 17}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 17000}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is demo data item 17000}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx1260\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx4818\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Nested items}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 1}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is nested demo item 1}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx1260\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx4818\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Nested items}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 2}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is nested demo item 2}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx1260\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx4818\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Nested items}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 3}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is nested demo item 3}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx1260\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx4818\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Nested items}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 4}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is nested demo item 4}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx1264\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx4815\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\clcbpat5\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 18}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is demo item 18}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 18000}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is demo data item 18000}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx1260\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx4818\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Nested items}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 1}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is nested demo item 1}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx1264\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx4815\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\clcbpat5\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 19}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is demo item 19}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 19000}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is demo data item 19000}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx1260\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx4818\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Nested items}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 1}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is nested demo item 1}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx1264\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx4815\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clcbpat5\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\clcbpat5\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 20}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is demo item 20}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 20000}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is demo data item 20000}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx1260\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx4818\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Nested items}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 1}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is nested demo item 1}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx1260\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx4818\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx6540\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx9637
-\pard\intbl\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Nested items}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 2}
-\cell\pard\plain \intbl\ltrpar\s9\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is nested demo item 2}
-\cell\row\pard \pard\plain \ltrpar\s1\v\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 }
-\par \pard\plain \ltrpar\s1\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\par \pard\plain \ltrpar\s1\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Total of 20 records in the demoitems list.}
-\par \pard\plain \ltrpar\s1\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\par \pard\plain \ltrpar\s1\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\par \pard\plain \ltrpar\s1\ql\rtlch\afs24\lang255\ab\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\b\loch\fs24\lang2057\b {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b Custom function}
-\par \pard\plain \ltrpar\s1\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 This is the result of the extra defined function: Best value is 1.5e+400}
-\par \pard\plain \ltrpar\s1\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\par \pard\plain \ltrpar\s1\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\par \pard\plain \ltrpar\s1\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 If you mistype a field name you get something like this: {\b\ul\highlight8\cf7 DemoItems.Hahaha Field "Hahaha" does not exist}. This is extremely useful for detecting and solving errors in your RTF reports.}
-\par \pard\plain \ltrpar\s1\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\par \pard\plain \ltrpar\s1\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\par \pard\plain \ltrpar\s1\ql\rtlch\afs24\lang255\ab\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\b\loch\fs24\lang2057\b {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b Report Design}
-\par \pard\plain \ltrpar\s1\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Sometimes it is necessary to make report fields hidden so that it fixes report formatting issues. To view all the Report Fields you need to tell OpenOffice to show hidden text.}
-\par \pard\plain \ltrpar\s1\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\par \pard\plain \ltrpar\s1\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Follow these steps to view hidden text:}
-\par \pard\plain {\listtext\pard\plain \li720\ri0\lin720\rin0\fi-360\f3 1.\tab}\ilvl0 \ltrpar\s1\ls0\li720\ri0\lin720\rin0\fi-360\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 Enable nonprinting characters: View | Nonprinting Characters}
-\par \pard\plain {\listtext\pard\plain \li720\ri0\lin720\rin0\fi-360\f3 2.\tab}\ilvl0 \ltrpar\s1\ls0\li720\ri0\lin720\rin0\fi-360\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057 {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0 If you don't see all the fields yet (eg: between the table header and table details lines) you need to enable the show hidden text option in: Tools | Options | OpenOffice.org Writer | Formatting Aids. Then tick the "Hidden text" option in the "Display of"
- section.}
-\par \pard\plain \ltrpar\s1\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\par \pard\plain \ltrpar\s1\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\par \pard\plain \ltrpar\s1\cf3\qc\rtlch\afs24\lang255\ab\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\b\loch\fs24\lang2057\b {\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b The End!}
-\par \pard\plain \ltrpar\s1\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\par \pard\plain \ltrpar\s1\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\par \pard\plain \ltrpar\s1\ql\rtlch\afs24\lang255\ltrch\dbch\af3\langfe255\hich\fs24\lang2057\loch\fs24\lang2057
-\par } \ No newline at end of file