Внешний вид сайта:

Сохранение данных из ListBox во время выполнения

Этот пример не является законченной программой, просто основа использования сохранения данных из ListBox через TFileStream. Данные из ListBox записываются в файл MyList.dat. Если файл не существует, программа создает его на диске.

Итак, приступим. Вот примерная реализация нашей задачи:

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

Комментарии

Нет комментариев. Ваш будет первым!