Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 902343
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 15, 20262026-05-15T15:42:08+00:00 2026-05-15T15:42:08+00:00

So, I have a form with a few dozen controls and someone would like

  • 0

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?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-15T15:42:08+00:00Added an answer on May 15, 2026 at 3:42 pm

    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:

    procedure SaveComponentToFile(Component: TComponent; const FileName: TFileName);
    var
      FileStream : TFileStream;
      MemStream : TMemoryStream;
    begin
      MemStream := nil;
    
      if not Assigned(Component) then
        raise Exception.Create('Component is not assigned');
    
      FileStream := TFileStream.Create(FileName,fmCreate);
      try
        MemStream := TMemoryStream.Create;
        MemStream.WriteComponent(Component);
        MemStream.Position := 0;
        ObjectBinaryToText(MemStream, FileStream);
      finally
        MemStream.Free;
        FileStream.Free;
      end;
    end;
    

    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:

    procedure LoadComponentFromFile(Component: TComponent; const FileName: TFileName);
    var
      FileStream : TFileStream;
      MemStream : TMemoryStream;
      i: Integer;
    begin
      MemStream := nil;
    
      if not Assigned(Component) then
        raise Exception.Create('Component is not assigned');
    
      if FileExists(FileName) then
      begin
        FileStream := TFileStream.Create(FileName,fmOpenRead);
        try
          for i := Component.ComponentCount - 1 downto 0 do
          begin
            if Component.Components[i] is TControl then
              TControl(Component.Components[i]).Parent := nil;
            Component.Components[i].Free;
          end;
    
          MemStream := TMemoryStream.Create;
          ObjectTextToBinary(FileStream, MemStream);
          MemStream.Position := 0;
          MemStream.ReadComponent(Component);
          Application.InsertComponent(Component);
        finally
          MemStream.Free;
          FileStream.Free;
        end;
      end;
    end;
    

    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:

      SaveComponentToFile(FSecondForm,ExtractFilePath(Application.ExeName)+ 'formdata.txt');
    

    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:

      if not Assigned(FSecondForm) then
        FSecondForm := TfrmSecond.Create(Application);
      LoadComponentFromFile(FSecondForm,ExtractFilePath(Application.ExeName)+ 'formdata.txt');
      FSecondForm.Show;
    

    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.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have a form with a few buttons which execute code when pressed like
I have a form that has a few similar controls and the parent contains
I have a few listview controls on a windows form and i've assigned a
I have a form which is rendered with radio buttons like so: <h2>How long
HI I have a form with a few buttons. Each button runs a few
I have a few text boxes and buttons on my form. Lets say txtBox1
I have a form like this: <form name=mine> <input type=text name=one> <input type=text name=two>
I have subclassed Form to include some extra functionality, which boils down to a
I'm making an example for someone who hasn't yet realized that controls like ListBox
I have form with few buttons and I want to know what button is

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.