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