  TINIPropSav - Copyright 1997 - Jos Sebastin Battig - Softech S.A.
  E-Mail: sbattig@bigfoot.com

  Version 1.2

  Changes in version 1.01:

  Registry capabilities added:

  UseRegistry property added. For use the registry instead the INI file.
  CompanyName property added. For use with the UseRegistry property when true
  ProductName property added. Same use as CompanyName.

  When you use the resistry option if you dont specified a value for the CompanyName or ProductName,
  the component assumes that this are the same as the application exe name, but without the .exe extension.

  If you dont use the Registry option, occurs the same but with the file name, of course that in this case
  the extension of the file is .ini.

  The place where the keys are stored in the registry is constructed with the following function call:

  Format ('\Software\%s\%s', [FCompanyName, FProductName])

  As you see, if the company is Softech S.A. and the product is TestProgram, then the root key for the key
  values will be:

  HKEY_CURRENT_USER\Software\Softech S.A.\TestProgram

  Changes in Version 1.1

  Changed the units structure to minimize the exe size overload with unused comnponent editor code.

  Changes in Version 1.12  (June 11, 1997)

  In the files iniprops.pas and iniprop.pas.
  Memory leak corrected with the property editors of the components, in the previous versions
  the memory of the property editors where not correctly disposed.
  Conditional compilation directives added in the iniprops.zip file to allow use the same file in delphi 1 and
  delphi 2.

  Changes in version 1.2 (June 17, 1997)

  Added support for objects of class TStrings. The strings are stored in a separate text file. The name of this
  file is given by the name stored in the INI or Registry file. The default value for this file name is entered
  in the component editor when you select a property of TStrings kind.

  Added support for class pointers. The full name of the owner and the component name is stored in the ini
  file, when the property is loaded the pointer is obtained by looking up from the application level until
  solve all the references. For example:

  if Form1 as a menu named Menu1 that is in the Form1. Then a reference to the Menu property in the form will
  be stored in the ini file as follows:

  [Form1]
  Menu = Form1.Menu1

  Added support for method pointers. The methods must be declared in the published part of the components
  because that's the only way to obtain RTTI for the late binding.
  With this the component in this version has support for all the published types.

  Please read this!!!!!!!!!!!!!!!!!!!

  Important Note: in Delphi 1 the name property of the forms is a empty string in runtime. So for
  class pointers or method pointers is not allowed the posibility of save a pointer to another
  form diferent that the owner of the object that owns the property.

  In Delphi2 is convenient to execute the method SaveProperties in the OnCloseQuery event handler if
  you have objects or methods references. The reason of this is that in the OnDestroy event handler
  that is automatically catched by this component, maybe some of the other form no longer exists, or are
  misconfigured. I tried this and when in one form you have references to other forms, the references are
  correctly stored when you use the OnCloseQuery event handler. The problems occurs specially if you want
  to store references to objects located in DataModules, seems to be that the DataModules are destroyed
  before that the forms are hidden, so neither the asvBeforeOnHideForm works...