Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по курсу.docx
Скачиваний:
104
Добавлен:
24.02.2016
Размер:
2.8 Mб
Скачать

13.4. Компоненты tOpenDialog и tSaveDialog

Для удобства работы с файлами в Delphi имеются два специальных компонента, предназначенных для выбора требуемого файла на диске через удобное окно просмотра. Результатом этого выбора является имя и маршрут к файлу, помещаемому в переменную строкового типа

OpenDialogl.FileName или SaveDialogl.FileName

которые затем используются в процедуре AssignFile().

Компоненты TOpenDialog и TSaveDialog находятся на странице DIALOGS. Все компоненты этой страницы являются невизуальными, т.е. не видны в момент работы программы. Поэтому их можно разместить в любом удобном месте формы. Оба рассматриваемых компонента имеют идентичные свойства и отличаются только внешним видом. После вызова компонента по­является диалоговое окно, с помощью которого выбирается имя программы и путь к ней. В случае успешного завершения диалога имя выбранного файла и маршрут поиска содержaтся в свойстве FileName. Для фильтрации файлов, отображаемых в окне просмотра, используется свойство Filter, а для задания расширения файла, в случае, если оно не задано пользователем, - свойство DefaultExt. Для того, чтобы файл автоматически записывался, например, с расширением dat, в свойстве DefaultExt компонета SaveDialog запишем тре­буемое расширение - .dat (для текстового файла - .txt). Если необходимо изменить заголовок диалогового окна, используется свойство Title.

Пример: Создать файл, содержащий список книг. Предусмотреть воз­можность сортировки книг по алфавиту по фамилии автора и вывод, как всего списка, так и списка книг заданного автора.

Общий вид формы.

/' Лекции - Файлы

Вид формы после запуска программы.

/' Лекции - Файлы

Сортировать! Просмотреть!

Выбрать Выход

Jl Close

Вид формы после нажатия кнопки «Закончить».

/ Лекции - Файлы

/ Лекции - Файлы 0[п][Х

Вид формы после нажатия кнопки «Выбрать», задании фамилии инте­ресующего автора и нажатия кнопки «Вывести»..

unit Unitl; Листинг 13.1

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Con­trols, Forms, Dialogs,StdCtrls, ExtCtrls, Buttons; type

TForml = class(TForm) Buttonl: TButton; Button2: TButton; BitBtnl: TBitBtn;

Panell: TPanel;

Editl: TEdit; Edit2: TEdit; Labell: TLabel; Label2: TLabel;

Button3: TButton;

Button4: TButton; OpenDialogl: TOpenDialog; SaveDialogl: TSaveDialog; Panel2: TPanel; Button5: TButton; Button6: TButton; Button7: TButton;

Button8: TButton; Panel3: TPanel; Button9: TButton;

Button10: TButton;

Edit3: TEdit;

TLabel; TPanel; TLabel; TLabel; TMemo; TMemo;

FormCreate(Sender

TObject); : TObject) : TObject) : TObject) : TObject) : TObject) : TObject) : TObject) : TObject) : TObject) TObject)

Sender Sender Sender Sender Sender Sender Sender Sender Sender

Label3 Panel4 Label4

Label5 Memo1: Memo2:

Button1Click Button3Click Button4Click Button5Click Button6Click Button2Click Button8Click Button7Click

Button9Click

procedure

procedure

procedure

procedure

procedure

procedure

procedure

procedure

procedure

Button10Click(Sender

procedure

procedure private

declarations }

declarations }

{ Private public

{ Public end;

type book=record

avt:string[20] naz:string[30] end;

var

of book;

Form1: TForm1; f:file of book; w:book;

a:array[1..100]

fname:string; n,i,k:integer;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject); begin

panell.Hide; panel2.Hide; panel3.Hide; panel4.Hide; end;

procedure TForml.ButtonlClick(Sender: TObject); begin // Создать

SaveDialogl.Title:='Создать файл';

if SaveDialogl.Execute then begin

fname:=SaveDialogl.FileName; AssignFile(f,fname); Rewrite(f); end; Panell.Show;

Buttonl.Hide; Button2.Hide; BitBtnl.Hide; end;

procedure TForml.Button3Click(Sender: TObject); begin // Ввести

w.avt:=editl.text;

w.naz:=edit2.text;

write(f,w);

editl.clear; edit2.clear; end;

procedure TForml.Button4Click(Sender: TObject); begin // Закончить

CloseFile(f);

panell.Hide; panel2.show; BitBtnl.show; end;

procedure TForml.Button5Click(Sender: TObject); begin // Сортировать reset(f); n:=0; while not eof(f) do begin n:=n+l; read(f,a[n]); end; closeFile(f);

for i:=1 to n-1 do for k:=1 to n-i do

if a[k].avt > a[k+1].avt then

begin w:=a[k]; a[k]:=a[k+1]; a[k+1]:=w; end; rewrite(f);

for i:=1 to n do write(f,a[i]); closeFile(f); end;

procedure TForm1.Button6Click(Sender: TObject); begin // Просмотреть

panel4.Show; memo1.clear; memo2.clear;

reset(f);

while not eof(f) do begin read(f,w);

memo1.lines.add(w.avt); memo2.lines.add(w.naz); end; closeFile(f); end;

procedure TForm1.Button2Click(Sender: TObject); begin // Открыть

OpenDialog1.Title:='Открыть файл';

if OpenDialog1.Execute then begin

fname:=OpenDialog1.FileName; AssignFile(f,fname);

Reset(f); end; Panel2.Show;

Button1.Hide; Button2.Hide; BitBtn1.Hide; end;

procedure TForm1.Button8Click(Sender: TObject); begin // Выход из panel2

Button1.show; Button2.show; BitBtn1.show;

panel2.Hide; end;

procedure TForm1.Button7Click(Sender: TObject); begin // Выбрать

panel2.Hide; panel3.Show; bitbtn1.Hide;

memol.clear; memo2.clear; end;

procedure TForml.Button9Click(Sender: TObject); begin // Вывести

memol.clear; memo2.clear; reset(f); while not eof(f) do begin read(f,w);

if w.avt=edit3.text then begin

memol.lines.add(w.avt); memo2.lines.add(w.naz); end;

end; closeFile(f); end;

procedure TForml.Buttonl0Click(Sender: TObject); begin // Выход из panel3 panel3.Hide; panel4.Hide;

Buttonl.show; Button2.show; BitBtnl.show; end;

end.