Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: Pascal
Expertise: Beginner
Apr 10, 1998

Telling your program about modifications

Question:
An ordinary Stringgrid with 5 columns and 7 rows The user wants to add 1 or 2 more rows. So far I know how to write the code! But where do I put the code so it knows that there are 1 or 2 or even more new rows added? Where do I store the new info in the programm that now there should be e.g. 7 rows 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 disk
procedure 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 disk
procedure 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 Pro
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap
Thanks for your registration, follow us on our social networks to keep up-to-date