Настройка компонентов TOpenDialog a TsaveDialag
Для установки компонент TOpenDialog и TSaveDialog на форму необходимо, на странице Dialogs меню компонентов щелкнуть мышью соответственно по пиктограммам или и поставить их в любое свободное место формы. Установка фильтра производится следующим образом. Выбрав соответствующий компонент, дважды щелкнуть по правой части свойства Filter инспектора объектов. Появится окно Filter Editor, в левой части которого записывается текст, характеризующий соответствующий фильтр, а в правой части - маску.
Фиг.6.1
Для OpenDialodI установим значения маски как показанона фиг.6.1.Формат *.dat означает что, будут видны все файлы с расширением dat, а формат *.* - что будут видны все файлы (с любым именем и с любым расширением).
Для того, чтобы файл автоматически записывался с расширением .dat в свойстве DefaultExt запишем требуемое расширение-.dat. Аналогичным образам настроим SaveDialogI для текстового файла (расширение *.txt).
Работа с программой
После запуска программы на выполнение появится диалоговое окно программы. Кнопка “Ввести запись”видна не будет. Необходимо создать новый файл записей, нажав на кнопку "Создать" или открыть ранее созданный, нажав - кнопку "Открыть". После этого станет видна кнопка "Ввести запись"
Фиг.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.