devxlogo

Telling your program about modifications

Telling your program about modifications

Question:
An ordinary Stringgrid with 5 columns and 7 rowsThe user wants to add 1 or 2 more rows. So farI know how to write the code! But where do I putthe code so it knows that there are 1 or 2 or evenmore new rows added? Where do I store the new infoin the programm that now there should be e.g. 7rows instead, when it is reopened(in Create?)

Answer:
The easiest way to implement a component “remembering” what it contains is to use streams to write and read a persistent copy of the component to and from the disk. Here’s an example:

//This writes a component to diskprocedure TForm1.FormClose(Sender: TObject; var                            Action: TCloseAction);var  strm : TFileStream;begin  strm := TFileStream.Create('SGrid.DAT',           fmCreate);  strm.WriteComponent(StringGrid1);  strm.Free;end;//This reads a component from diskprocedure TForm1.FormCreate(Sender: TObject);var  strm : TFileStream;begin  if FileExists('SGrid.DAT') then begin    strm := TFileStream.Create('SGrid.DAT',              fmOpenRead);    strm.ReadComponent(StringGrid1);        strm.Free;    end;end;

The key procedures above are the Write- and ReadComponent procedures. They enable any component to write itself to a persistent state.Another way of doing this is to use the registry, but that’s a far more complicated method, and for simple apps, I usually don’t recommend doing it that way.

devxblackblue

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist