Property Saver is set of non visual components which allows you to centralize and automate saving and restoring of windows position, properties of visual or non visual components and any other user defined values. Benefits:
Property Saver support storing of forms and standard components settings without line of code (TForm, TEdit, TMemo, TListBox, TComboBox, TRadioButton, TRadioGroup, TCheckBox, TMenuItem). Other components can be managed by already created descendant of TCustomPropSave (TGridsPropSave, TDBGridPropSave) or you can create very easily your own component supporting any type of components (TMS, 3rd party...). Any other values can be also restored by custom code in events OnReadProperties and OnSaveProperties.
All settings are stored in INI file or compressed BZIP file. Its name can be set up at design time or runtime, so it's very easy to use this package in multi user application when users share the same application but with his own INI file and therefore with his own configuration. Custom code can be also used to store setting to DB or any stream.
See simple example in video:
Using of Property Saver
PropSaveFile1.Clear; // clear contents of ini file
PropSaveFile1.SaveFile(''); // save empty file
PropSaveFile1.DisableAll:=true; // don't save properties until close app
ShowMessage('Close the application and run again with default values.'); // inform user
procedure ReadSaveProps(A: TPropSaveAction; PSFile: TPropSaveFile; Key: string; Comp: TComponent); override;
function CanSave(Comp: TComponent): boolean; override;
See GridsPropSave.pas file for example.