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.

devx-admin

Share the Post: