So, I have a form with a few dozen controls and someone would like to save and later restore their contents and settings – which radio button was selected, what was the Position of that up/down, etc.
I would also like to store any entries added to a list box at run time.
What’s the simplest way to do it? DfmToString and reverse? Write/read a .INI? Something else?
PRUZ’s solution is a ready made solution; JVCL is open-source, and using JvFormStorage is simple. But you can also use Delphi’s own streaming mechanism without using any third-party components. Here is an example:
SaveComponentToFile takes a component instance, plus a file name, and streams the component into the file, in a human-readable text.
To load the component from file, you can use a code like this:
LoadComponentFromFile takes a component instance, and a file name, then loads file content into the component instance. To avoid naming conflict, we are free all existing owned components of the instance, before loading file data into it.
Now you can use the above code for saving a form into a file:
FSecondForm is a form instance, and it will be saved into “formdata.txt” file inside the same folder as the EXE file.
And to load FSecondForm from “formdata.txt” file, we write this:
LoadComponentFromFile needs the instance to be created first, so we check if FSecondForm is assigned, if not, we create an instance of it (it is an instance of TfrmSecond class), and then load file data into it. And eventually, we show the loaded form.