Сохранение данных из 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, записывая поверх существующих данных в файле.
Комментарии