Index: JvAppStorage.pas
===================================================================
--- JvAppStorage.pas	(revision 14367)
+++ JvAppStorage.pas	(working copy)
@@ -959,6 +959,8 @@
     );
 {$ENDIF UNITVERSIONING}
 
+var DefaultAppStorage : TJvCustomAppStorage;  //!
+
 implementation
 
 uses
@@ -1296,10 +1298,13 @@
   FReadOnly := False;
   FInternalTranslateStringEngine := TJvTranslateString.Create(Self);
   FSynchronizeFlushReload := False;
+  DefaultAppStorage:=self;  //!
 end;
 
 destructor TJvCustomAppStorage.Destroy;
 begin
+  if DefaultAppStorage=self then //!
+     DefaultAppStorage:=nil;     //!
   if FlushOnDestroy then
     Flush;
   FreeAndNil(FInternalTranslateStringEngine);
Index: JvFormPlacement.pas
===================================================================
--- JvFormPlacement.pas	(revision 14367)
+++ JvFormPlacement.pas	(working copy)
@@ -111,6 +111,7 @@
     procedure FormDestroy(Sender: TObject);
     function GetForm: TForm;
     procedure SetAppStorage(const Value: TJvCustomAppStorage);
+    function Store_AppStorePath : boolean; //!
   protected
     procedure ResolveAppStoragePath;
     procedure Loaded; override;
@@ -141,7 +142,7 @@
   published
     property Active: Boolean read FActive write FActive default True;
     property AppStorage: TJvCustomAppStorage read FAppStorage write SetAppStorage;
-    property AppStoragePath: string read FAppStoragePath write SetAppStoragePath;
+    property AppStoragePath: string read FAppStoragePath write SetAppStoragePath stored Store_AppStorePath;    //!
     property MinMaxInfo: TJvWinMinMaxInfo read FWinMinMaxInfo write SetWinMinMaxInfo;
     property Options: TPlacementOptions read FOptions write FOptions default [fpState, fpSize, fpLocation];
     property PreventResize: Boolean read FPreventResize write SetPreventResize default False;
@@ -291,6 +292,10 @@
 uses
   Consts,
   JclStrings,
+{$DEFINE CreateRegAppStorageOnDemand}  //! If not AppStorage is defined create a TJvAppRegistryStorage as default storage
+{$IFDEF CreateRegAppStorageOnDemand}
+  JvAppRegistryStorage,
+{$ENDIF}
   JvJCLUtils, JvPropertyStorage;
 
 const
@@ -345,6 +350,17 @@
   inherited Loaded;
   if not (csDesigning in ComponentState) then
   begin
+    //! Make use of FormStorage simpler
+    if not assigned(FAppStorage) then
+    begin
+{$IFDEF CreateRegAppStorageOnDemand}
+         if not assigned(DefaultAppStorage) then
+            AppStorage:=TJvAppRegistryStorage.Create(Owner);
+{$ENDIF}
+         if assigned(DefaultAppStorage) then
+            AppStorage:=DefaultAppStorage;
+    end;
+
     ResolveAppStoragePath;
     if Loading then
       SetEvents;
@@ -1357,6 +1373,12 @@
   ReplaceComponentReference(Self, Value, TComponent(FAppStorage));
 end;
 
+//! reduce footprint in dfm: Don't store path if it was not modified
+function TJvFormPlacement.Store_AppStorePath : boolean;
+begin
+  result:=FAppStoragePath<>cFormNameMask+'\';
+end;
+
 { TJvFormStorageStringList }
 
 procedure TJvFormStorageStringList.Assign(Source: TPersistent);
