Настройка компонентов TOpenDialog a TsaveDialag

 
  Настройка компонентов TOpenDialog a TsaveDialag - student2.ru

Для установки компонент TOpenDialog и TSaveDialog на форму необходимо, на странице Dialogs меню компонентов щелкнуть мышью соответственно по пиктограммам или и поставить их в любое свободное место формы. Установка фильтра производится следующим образом. Выбрав соответствующий компонент, дважды щелкнуть по правой части свойства Filter инспектора объектов. Появится окно Filter Editor, в левой части которого записывается текст, характеризующий соответствующий фильтр, а в правой части - маску.

Фиг.6.1

Для OpenDialodI установим значения маски как показанона фиг.6.1.Формат *.dat означает что, будут видны все файлы с расширением dat, а формат *.* - что будут видны все файлы (с любым именем и с любым расширением).

Для того, чтобы файл автоматически записывался с расширением .dat в свойстве DefaultExt запишем требуемое расширение-.dat. Аналогичным образам настроим SaveDialogI для текстового файла (расширение *.txt).

Работа с программой

 
  Настройка компонентов TOpenDialog a TsaveDialag - student2.ru

После запуска программы на выполнение появится диалоговое окно программы. Кнопка “Ввести запись”видна не будет. Необходимо создать новый файл записей, нажав на кнопку "Создать" или открыть ранее созданный, нажав - кнопку "Открыть". После этого станет видна кнопка "Ввести запись"

Фиг.6.2

и можно будет вводить записи. При нажатии на кнопку "Сортировка" будет проведена сортировка ведомостипо убыванию среднего балла и диалоговое окно примет вид как на фиг.6.2. Затем при нажатии на кнопку “Сохранить” будет создан текстовой файл, содержащий отсортированную ведомость. Файл записей закрывается одновременно с программой при нажатии на кнопку "Close" или . Текст программы приведен ниже.

Unit Unit1;

Interface

Uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,

Dialogs, Buttons, StdCtrls;

Type

TForm1 = class(TForm)

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Edit4: TEdit;

Button1: TButton;

Button2: TButton;

Button3: TButton;

Button4: TButton;

Button5: TButton;

BitBtn1: TBitBtn;

OpenDialog1: TOpenDialog;

SaveDialog1: TSaveDialog;

Memo1: TMemo;

Procedure FormCreate(Sender: TObject);

Procedure Button1Click(Sender: TObject);

Procedure Button2Click(Sender: TObject);

Procedure Button3Click(Sender: TObject);

Procedure Button4Click(Sender: TObject);

Procedure Button5Click(Sender: TObject);

Procedure BitBtn1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

Type

TStudent = record

FIO : string[40]; //Поле ф.и.о.

otc : array[1..3] of word; //Поле массива оценок

sball : extended; //Поле среднего балла

end;

var

Fz : file of Tstudent; //Файл типа запись

Ft : TextFile; //Текстовой файл

Stud : array[1..100] of Tstudent; //Массив записей

Nzap : integer; //Номер записи

FileNameZ, FileNameT : string; //Имя файла

var

Form1: Tform1;

Implementation

{$R *.DFM}

Procedure TForm1.FormCreate(Sender: TObject);

begin

Edit1.Text := '';

Edit2.Text := '';

Edit3.Text := '';

Edit4.Text := '';

Memo1.Clear;

Button1.Hide; //Сделать невидимой кнопку "Ввести запись"

Nzap := 0;

end;

Procedure TForm1.Button1Click(Sender: TObject);

begin

nzap := nzap + 1;

with stud[nzap] do

begin

FIO := Edit1.Text;

otc[1] := StrToInt(Edit2.Text);

otc[2] := StrToInt(Edit3.Text);

otc[3] := StrToInt(Edit4.Text);

sball := (otc[1] + otc[2] + otc[3])/3;

Memo1.Lines.Add(fio + '' + IntToStr(otc[1 ]) +

' ' + IntToStr(otc[2]) + '' + IntToStr(otc[3]));

end;

Write(fz, Stud[nzap]); //Запись в файл

Edit1.Text := '';

Edit2.Text := '';

Edit3.Text := '';

Edit4.Text := '';

end;

Procedure TForm1.Button2Click(Sender: TObject);

begin

OpenDialog1.Title := 'Создать новый файл';

// Изменение заголовка окна диалога

if OpenDialog1.Execute then

// Выполнение стандартного диалога выбора имени файла

begin

FileNameZ := OpenDialog1.FileName;

// Возвращение имени дискового файла

AssignFile(Fz, FileNameZ);

// Связывание файловой переменной Fz с именем файла

Rewrite(Fz); //Создание нового файла

Button1.Show; //Сделать видимой кнопку "Ввести запись"

end;

end;

Procedure TForm1.Button3Click(Sender: TObject);

begin

if OpenDialog1.Execute then

//Выполнение стандартного диалога выбора имени файла

begin

FileNameZ := OpenDialog1.FileName;

// Возвращение имени дискового файла

AssignFile(Fz, FileNameZ);

// Связывание файловой переменной Fz с именем файла

Reset(Fz); //Открытие существующего файла

end;

While not EOF(fz) do

begin

nzap := nzap + 1;

Read(fz, stud[nzap]); //Чтение записи из файла

with stud[nzap] do

Memo1.Lines.Add(fio + '' + IntToStr(otc[1]) +

' ' + IntToStr(otc[2]) + '' + IntToStr(otc[3]));

end;

Button1.Show; //Сделать видимой кнопку "Ввести запись"

end;

Procedure Tform1.Button4Click(Sender: TObject);

// Сортировка записей

var

i, j : word;

st : Tstudent;

begin

for i := 1 to nzap-1 do

for j := i + 1 to nzap do

if Stud[i].sball < Stud[j].sball then

begin

st := Stud[i];

Stud[i] := Stud[j];

Stud[j] := st;

end;

Memo1.Clear;

for i := 1 to nzap do

// Вывод в окно Memo1 отсортированных записей

with stud[i] do

Memo1.Lines.Add(IntToStr(i) + '' +

fio + '' + FloatToStrF(sball, fffixed, 4, 2));

end;

Procedure Tform1.Button5Click(Sender: TObject);

// Сохраниение результатов сортировки в текстовом файле

var

i : word;

begin

if SaveDialog1.Execute then

// Выполнение стандартного диалога выбора имени файла

begin

FileNameT := SaveDialog1.FileName;

// Возвращение имени дискового файла

AssignFile(Ft, FileNameT);

// Связывание файловой переменной Ft с именем файла

Rewrite(Ft); //Открытие нового текстового файла

end;

for i:=1 to nzap do

with stud[i] do

Writeln(Ft, i:4, '.', fio, sball:8:2);

// Запись в текстовой файл

CloseFile(Ft); //Закрытие текстового файла

end;

Procedure TForm1.BitBtn1Click(Sender: TObject);

begin

CloseFile(fz);

// Закрытие файла записей при нажатии на кнопку "Close"

end;

{

Procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

begin

CloseFile(fz);

// Закрытие файла записей при нажатии на кнопку

end;

}

end.

Наши рекомендации