diff --git a/components/rx/trunk/Demos/RxIniPropStorageDemo/project1.ico b/components/rx/trunk/Demos/RxIniPropStorageDemo/project1.ico
new file mode 100644
index 000000000..0341321b5
Binary files /dev/null and b/components/rx/trunk/Demos/RxIniPropStorageDemo/project1.ico differ
diff --git a/components/rx/trunk/Demos/RxIniPropStorageDemo/project1.lpi b/components/rx/trunk/Demos/RxIniPropStorageDemo/project1.lpi
new file mode 100644
index 000000000..9f5010ede
--- /dev/null
+++ b/components/rx/trunk/Demos/RxIniPropStorageDemo/project1.lpi
@@ -0,0 +1,79 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/components/rx/trunk/Demos/RxIniPropStorageDemo/project1.lpr b/components/rx/trunk/Demos/RxIniPropStorageDemo/project1.lpr
new file mode 100644
index 000000000..589f4d2cd
--- /dev/null
+++ b/components/rx/trunk/Demos/RxIniPropStorageDemo/project1.lpr
@@ -0,0 +1,22 @@
+program project1;
+
+{$mode objfpc}{$H+}
+
+uses
+ {$IFDEF UNIX}{$IFDEF UseCThreads}
+ cthreads,
+ {$ENDIF}{$ENDIF}
+ Interfaces, // this includes the LCL widgetset
+ Forms, Unit1, rxnew
+ { you can add units after this };
+
+{$R *.res}
+
+begin
+ Application.Title:='RxIniPropStorage DEMO';
+ RequireDerivedFormResource:=True;
+ Application.Initialize;
+ Application.CreateForm(TForm1, Form1);
+ Application.Run;
+end.
+
diff --git a/components/rx/trunk/Demos/RxIniPropStorageDemo/project1.lps b/components/rx/trunk/Demos/RxIniPropStorageDemo/project1.lps
new file mode 100644
index 000000000..44dfd0586
--- /dev/null
+++ b/components/rx/trunk/Demos/RxIniPropStorageDemo/project1.lps
@@ -0,0 +1,89 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/components/rx/trunk/Demos/RxIniPropStorageDemo/project1.res b/components/rx/trunk/Demos/RxIniPropStorageDemo/project1.res
new file mode 100644
index 000000000..4ff746d8a
Binary files /dev/null and b/components/rx/trunk/Demos/RxIniPropStorageDemo/project1.res differ
diff --git a/components/rx/trunk/Demos/RxIniPropStorageDemo/unit1.lfm b/components/rx/trunk/Demos/RxIniPropStorageDemo/unit1.lfm
new file mode 100644
index 000000000..3b09fa1fd
--- /dev/null
+++ b/components/rx/trunk/Demos/RxIniPropStorageDemo/unit1.lfm
@@ -0,0 +1,155 @@
+object Form1: TForm1
+ Left = 676
+ Height = 330
+ Top = 298
+ Width = 632
+ Caption = 'RxIniPropStorage DEMO'
+ ClientHeight = 330
+ ClientWidth = 632
+ Position = poScreenCenter
+ SessionProperties = 'Edit1.Text;Edit2.Text'
+ LCLVersion = '1.7'
+ object Label1: TLabel
+ AnchorSideLeft.Control = Owner
+ AnchorSideTop.Control = Label5
+ AnchorSideTop.Side = asrBottom
+ Left = 6
+ Height = 20
+ Top = 32
+ Width = 48
+ BorderSpacing.Around = 6
+ Caption = 'Value 1'
+ ParentColor = False
+ end
+ object Edit1: TEdit
+ AnchorSideLeft.Control = Label1
+ AnchorSideTop.Control = Label1
+ AnchorSideTop.Side = asrBottom
+ AnchorSideRight.Control = Label5
+ Left = 12
+ Height = 37
+ Top = 58
+ Width = 267
+ Anchors = [akTop, akLeft, akRight]
+ BorderSpacing.Around = 6
+ TabOrder = 0
+ end
+ object Label2: TLabel
+ AnchorSideLeft.Control = Label5
+ AnchorSideLeft.Side = asrBottom
+ AnchorSideTop.Control = Label5
+ AnchorSideTop.Side = asrBottom
+ Left = 354
+ Height = 20
+ Top = 32
+ Width = 48
+ BorderSpacing.Around = 6
+ Caption = 'Value 2'
+ ParentColor = False
+ end
+ object Edit2: TEdit
+ AnchorSideLeft.Control = Label2
+ AnchorSideTop.Control = Label2
+ AnchorSideTop.Side = asrBottom
+ AnchorSideRight.Control = Owner
+ AnchorSideRight.Side = asrBottom
+ Left = 360
+ Height = 37
+ Top = 58
+ Width = 266
+ Anchors = [akTop, akLeft, akRight]
+ BorderSpacing.Around = 6
+ TabOrder = 1
+ end
+ object Edit3: TEdit
+ AnchorSideLeft.Control = Label3
+ AnchorSideTop.Control = Label3
+ AnchorSideTop.Side = asrBottom
+ AnchorSideRight.Control = Label6
+ Left = 12
+ Height = 37
+ Top = 207
+ Width = 259
+ Anchors = [akTop, akLeft, akRight]
+ BorderSpacing.Around = 6
+ TabOrder = 2
+ end
+ object SpinEdit1: TSpinEdit
+ AnchorSideLeft.Control = Label4
+ AnchorSideTop.Control = Label4
+ AnchorSideTop.Side = asrBottom
+ AnchorSideRight.Control = Owner
+ AnchorSideRight.Side = asrBottom
+ Left = 368
+ Height = 37
+ Top = 207
+ Width = 258
+ Anchors = [akTop, akLeft, akRight]
+ BorderSpacing.Around = 6
+ TabOrder = 3
+ Value = 1
+ end
+ object Label3: TLabel
+ AnchorSideLeft.Control = Owner
+ AnchorSideTop.Control = Label6
+ AnchorSideTop.Side = asrBottom
+ Left = 6
+ Height = 20
+ Top = 181
+ Width = 96
+ BorderSpacing.Around = 6
+ Caption = 'Manual value 1'
+ ParentColor = False
+ end
+ object Label4: TLabel
+ AnchorSideLeft.Control = Label6
+ AnchorSideLeft.Side = asrBottom
+ AnchorSideTop.Control = Label6
+ AnchorSideTop.Side = asrBottom
+ Left = 362
+ Height = 20
+ Top = 181
+ Width = 96
+ BorderSpacing.Around = 6
+ Caption = 'Manual value 2'
+ ParentColor = False
+ end
+ object Label5: TLabel
+ AnchorSideLeft.Control = Owner
+ AnchorSideLeft.Side = asrCenter
+ AnchorSideTop.Control = Owner
+ Left = 285
+ Height = 20
+ Top = 6
+ Width = 63
+ BorderSpacing.Around = 6
+ Caption = 'Auto save'
+ ParentColor = False
+ end
+ object Label6: TLabel
+ AnchorSideLeft.Control = Owner
+ AnchorSideLeft.Side = asrCenter
+ AnchorSideTop.Control = Owner
+ AnchorSideTop.Side = asrCenter
+ Left = 277
+ Height = 20
+ Top = 155
+ Width = 79
+ Caption = 'Manual save'
+ ParentColor = False
+ end
+ object RxIniPropStorage1: TRxIniPropStorage
+ StoredValues = <
+ item
+ Name = 'STRING_VALUE1'
+ end
+ item
+ Name = 'INT_VALUE2'
+ end>
+ OnSavingProperties = RxIniPropStorage1SavingProperties
+ OnRestoreProperties = RxIniPropStorage1RestoreProperties
+ SeparateFiles = True
+ left = 304
+ top = 96
+ end
+end
diff --git a/components/rx/trunk/Demos/RxIniPropStorageDemo/unit1.pas b/components/rx/trunk/Demos/RxIniPropStorageDemo/unit1.pas
new file mode 100644
index 000000000..4ec71e590
--- /dev/null
+++ b/components/rx/trunk/Demos/RxIniPropStorageDemo/unit1.pas
@@ -0,0 +1,59 @@
+unit Unit1;
+
+{$mode objfpc}{$H+}
+
+interface
+
+uses
+ Classes, SysUtils, FileUtil, RxIniPropStorage, Forms, Controls, Graphics,
+ Dialogs, StdCtrls, Spin;
+
+type
+
+ { TForm1 }
+
+ TForm1 = class(TForm)
+ Edit1: TEdit;
+ Edit2: TEdit;
+ Edit3: TEdit;
+ Label1: TLabel;
+ Label2: TLabel;
+ Label3: TLabel;
+ Label4: TLabel;
+ Label5: TLabel;
+ Label6: TLabel;
+ RxIniPropStorage1: TRxIniPropStorage;
+ SpinEdit1: TSpinEdit;
+ procedure RxIniPropStorage1RestoreProperties(Sender: TObject);
+ procedure RxIniPropStorage1SavingProperties(Sender: TObject);
+ private
+
+ public
+
+ end;
+
+var
+ Form1: TForm1;
+
+implementation
+
+{$R *.lfm}
+
+{ TForm1 }
+
+procedure TForm1.RxIniPropStorage1RestoreProperties(Sender: TObject);
+begin
+ Edit3.Text:=RxIniPropStorage1.StoredValue['STRING_VALUE1'];
+
+ if RxIniPropStorage1.StoredValue['INT_VALUE2'] <> '' then
+ SpinEdit1.Value:=StrToIntDef(RxIniPropStorage1.StoredValue['INT_VALUE2'], 0);
+end;
+
+procedure TForm1.RxIniPropStorage1SavingProperties(Sender: TObject);
+begin
+ RxIniPropStorage1.StoredValue['STRING_VALUE1']:=Edit3.Text;
+ RxIniPropStorage1.StoredValue['INT_VALUE2']:=IntToStr(SpinEdit1.Value);
+end;
+
+end.
+