Сохранение данных из ListBox во время выполнения
Итак, приступим. Вот примерная реализация нашей задачи:
unit main; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class (TForm) ListBox1: TListBox; Edit1: TEdit; Memo1: TMemo; procedure Edit1KeyPress(Sender: TObject; var Key: Char ); procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure ListBox1DblClick(Sender: TObject); private { Private declarations } public { Public declarations } end ; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1 . Edit1KeyPress(Sender: TObject; var Key: Char ); begin if Key = # 13 then begin Key := # 0 ; ListBox1 . Items . Add(Edit1 . Text); Edit1 . Text := '' ; end ; end ; procedure TForm1 . FormCreate(Sender: TObject); var strm : TFileStream; begin if FileExists( 'MyList.DAT' ) then begin strm := TFileStream . Create( 'MyList.DAT' , fmOpenRead); strm . ReadComponent(ListBox1); strm . Free; end ; end ; procedure TForm1 . FormClose(Sender: TObject; var Action: TCloseAction); var strm : TFileStream; begin strm := TFileStream . Create( 'MyList.DAT' , fmCreate); strm . WriteComponent(ListBox1); strm . Free; end ; procedure TForm1 . ListBox1DblClick(Sender: TObject); begin ListBox1 . Items . Delete(ListBox1 . ItemIndex); end ; end . |
Просто, не так ли?
Программа состоит из формы TForm1 и TEdit и TListBox, которые находятся на ней.
Имеется только два значащих метода: FormCreate и FormClose. В методе FormCreate запишите следующий код:
procedure TForm1 . FormCreate(Sender: TObject); var strm : TFileStream; begin if FileExists( 'MyList.DAT' ) then begin strm := TFileStream . Create( 'MyList.DAT' , fmOpenRead); strm . ReadComponent(ListBox1); strm . Free; end ; end ; |
Здесь программа проверяет наличие файла MyList.DAT при помощи вызова FileExists. Если файл существует, он считывается в ListBox, иначе ничего не происходит.
В методе FormClose запишите:
procedure TForm1 . FormClose(Sender: TObject; var Action: TCloseAction); var strm : TFileStream; begin strm := TFileStream . Create( 'MyList.DAT' , fmCreate); strm . WriteComponent(ListBox1); strm . Free; end ; |
Здесь программа записывает данные из ListBox в MyList.DAT, записывая поверх существующих данных в файле.
Комментарии