Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП всі лабораторні.doc
Скачиваний:
2
Добавлен:
28.08.2019
Размер:
1.03 Mб
Скачать

7.1.2. Створення процедур обробки подій

Для зручності роботи з декількома різними процедурами обробки подій у властивості Name кожного компонента BitBtn заміните програмні імена кнопок: BitBtn1 – на BitBtnNew, BitBtn2 – на BitBtnOpen, BitBtn3 – на BitBtnSort, BitBtn4 – на BitBtnSave. Подвійним натисненням клавіші “миші” на кнопках BitBtn створіть відповідні процедури обробки подій. Користуючись текстом модуля UnFile, уважно наберіть операторів цих процедур.

7.1.3. Текст модуля UnFile

Unit UnFile;

Interface

uses

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

StdCtrls, Buttons, Grids, Spin;

type

TForm1 = class(TForm)

StringGrid1: TStringGrid;

BitBtnNew: TBitBtn;

BitBtnOpen: TBitBtn;

BitBtnSort: TBitBtn;

BitBtnSave: TBitBtn;

SaveDialog1: TSaveDialog;

SpinEdit1: TSpinEdit;

Label1: TLabel;

OpenDialog1: TOpenDialog;

procedure TForm1.FormCreate(Sender: TObject);

procedure BitBtnSortClick(Sender: TObject);

procedure BitBtnNewClick(Sender: TObject);

procedure SpinEdit1Change(Sender: TObject);

procedure BitBtnOpenClick(Sender: TObject);

procedure BitBtnSaveClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

Implementation

{$R *.DFM}

type

zap=record // оголошення запису

fio :string[20];

mat,fiz,soch:integer;

end;

var

MZap:array[1..25] of zap; // оголошення масиву записів

FileZap:file of zap; // оголошення файлу записів

FileText:TextFile; // оголошення текстового файла

FileNameZap,FileNameText:string; // імена файла записів і текстового файла

n:integer; // поточна к-ть елементів масиву записів

{ Обробник події створення Форми }

procedure TForm1.FormCreate(Sender: TObject);

begin

with StringGrid1 do

begin // занесення інформації в осередки StringGrid1

Cells[0,0]:=’№пп’;

Cells[1,0]:=’Прізвище, ініціали’;

Cells[2,0]:=’Математика’;

Cells[3,0]:=’Фізика’;

Cells[4,0]:=’Твір’;

end;

BitBtnSort.Hide; // сховати кнопку ”Sort”

BitBtnSave.Hide; // сховати кнопку “Save”

end;

{ Обробник натиснення кнопки Sort }

procedure TForm1.BitBtnSortClick(Sender: TObject);

var

i,j :integer;

vper:zap;

begin

for i:=1 to n do

with StringGrid1,MZap[i] do

begin

fio:=Cells[1,i];

mat:=StrToInt(Cells[2,i]);

fiz:=StrToInt(Cells[3,i]);

soch:=StrToInt(Cells[4,i]);

end;

{ сортування методом "бульбашки"}

for i:=2 to n do

for j:=n downto i do

if MZap[j-1].fio>MZap[j].fio then

begin

vper:=MZap[j-1];

MZap[j-1]:=MZap[j];

MZap[j]:=vper;

end;

for i:=1 to n do // заповнення комірок StringGrid1 полями масиву записів

with StringGrid1,MZap[i] do

begin

Cells[0,i]:=IntToStr(i);

Cells[1,i]:=fio;

Cells[2,i]:=IntToStr(mat);

Cells[3,i]:=IntToStr(fiz);

Cells[4,i]:=IntToStr(soch);

end;

end;

{ Створення нового файла записів}

procedure TForm1.BitBtnNewClick(Sender: TObject);

var

i:integer;

begin // вивід на екран вікна із застережливим повідомленням

if MessageDlg('Вміст існуючого файла буде знищений. Ви впевнені?',

mtConfirmation, mbYesNoCancel, 0)=mrYes then

begin

for i:=1 to n do

with StringGrid1,MZap[i] do

begin // формування полів масиву записів

fio:=Cells[1,i];

mat:=StrToInt(Cells[2,i]);

fiz:=StrToInt(Cells[3,i]);

soch:=StrToInt(Cells[4,i]);

end;

with OpenDialog1 do

begin

Title:='Создание файла'; // заголовок вікна діалога

if Execute then // виконання стандартного діалога вибору імені файла

begin

FileNameZap:=FileName; // привласнення імені файла

AssignFile(FileZap,FileNameZap); // призначити файла FileZap ім'я FileNameZap

ReWrite(FileZap); // відкрити файл на запис

for i:=1 to n do

write(FileZap,MZap[i]); // запис у файл масиву записів

CloseFile(FileZap); // закриття файла записів

end;

end;

end;

end;

{Обробник кнопки зміни розміру}

procedure TForm1.SpinEdit1Change(Sender: TObject);

var

i,m:integer;

begin

m:=StrToInt(SpinEdit1.Text); // привласнити нове значення розміру

with StringGrid1 do

begin

RowCount:=m+1; // перерахувати кількість рядків

if m>n then // якщо рядки додані те

for i:=n+1 to m do // ініціалізувати нові осередки

begin

Cells[0,i]:=IntToStr(i);

Cells[1,i]:='';

Cells[2,i]:='';

Cells[3,i]:='';

Cells[4,i]:='';

end;

end;

n:=m; // запам'ятати нове значення розміру

end;

{ обробник натиснення кнопки Open }

procedure TForm1.BitBtnOpenClick(Sender: TObject);

var

i:integer;

begin

with OpenDialog1 do

begin

Title:='Відкриття файла'; // заголовок вікна діалога

if Execute then // виконання стандартного діалога вибору імені файла

begin

FileNameZap:=FileName; // привласнення імені файла

AssignFile(FileZap,FileNameZap); // призначити файла FileZap ім'я FileNameZap

ReSet(FileZap); // відкрити файл на читання

n:=0; // ініціалізація лічильника к-ті прочитаних з файла елементів

while not EOF(FileZap) do

begin

n:=n+1; // збільшення лічильника

read(FileZap,MZap[n]); // читання з файла n-го елемента масиву записів

end;

SpinEdit1.Text:=IntToStr(n); // занести к-ть прочитаних записів в SpinEdit

StringGrid1.RowCount:=n+1; // привласнити к-ть рядків

for i:=1 to n do

with StringGrid1,MZap[i] do

begin // заповнення комірок StringGrid1 полями масиву записів

Cells[0,i]:=IntToStr(i);

Cells[1,i]:=fio;

Cells[2,i]:=IntToStr(mat);

Cells[3,i]:=IntToStr(fiz);

Cells[4,i]:=IntToStr(soch);

end;

CloseFile(FileZap); // закриття файла записів

end;

end;

BitBtnSort.Show; // показати кнопку “Sort”

BitBtnSave.Show; // показати кнопку “Save”

end;

{ Збереження даних в текстовому файлі}

procedure TForm1.BitBtnSaveClick(Sender: TObject);

var

i:integer;

begin

with SaveDialog1 do

if Execute then // виконання стандартного діалога вибору імені файла

begin

FileNameText:=FileName; // привласнення імені файла

AssignFile(FileText,FileNameText); // призначити файла FileText ім'я FileNameText

ReWrite(FileText); // відкрити текстовий файл на запис

for i:=1 to n do

with MZap[i] do // запис в текстовий файл

writeln(FileText,i:3,fio:20,mat:5,fiz:5,soch:5);

CloseFile(FileText); // закриття текстового файла після закінчення запису

end;

BitBtnSort.Hide; // сховати кнопку ”Sort”

end;

end.