
- •Лабораторна робота № 5.
- •Виконання роботи
- •Відкрийте нову форму з багатосторінковим блокнотом.
- •Виділіть (клацнувши усередині сторінки мишею) і видаліть (Delete) третю сторінку блокнота TabSheet3.
- •Заповніть обидві сторінки форми візуальними об'єктами так, як це показано на малюнку.
- •Збережіть виконану на даний момент форму в своїй папці (FileSave All).
- •Д одайте на форму команди головного меню і введіть назви його команд, як показано на малюнку.
- •Створіть вікно форми «Про програму».
- •Запрограмуйте кнопку Ok вікна «Про програму».
- •Видаліть непотрібну порожню форму Form1 з проекту.
- •Напишіть процедуру створення форми.
- •Напишіть процедуру заповнення полів редагування NewEdit.
- •Напишіть процедуру заповнення комбінованого списку NewComboBox.
- •Запрограмуйте кнопку переходу на попередній запис «Попередній».
- •Аналогічно запрограмуйте кнопку «Наступний».
- •Збережіть програму і переконайтеся в правильності її роботи.
- •Створіть ехе-файл програми.
- •Закрийте Delphi, запустіть створену програму .
- •Продемонструйте створену форму викладачеві.
Напишіть процедуру створення форми.
У вікні інспектора об'єктів активізуйте об'єкт PagesDlg (вікно форми з багатосторінковим блокнотом) і двічі клацніть в рядку OnCreate закладки Events цього об'єкту.
Сформуйте процедуру створення головної форми програми:
procedure TpagesDlg.FormCreate(Sender: TObject);
begin { Заповнюємо заголовок таблиці}
StringGrid1.cells[0, 0] := 'Прізвище';
StringGrid1.cells[l, 0] := 'Ім'я';
StringGrid1.cells[2, 0] := 'Адреса';
StringGrid1.cells[3, 0] := 'Телефон';
ComboBox1. Items .Add("); { Створюємо порожній рядок в комбінованому списку}
ComboBox1.ItemIndex:=0; {Активізуємо цей рядок на випадок створення нового довідника}
end;
Напишіть процедуру заповнення полів редагування NewEdit.
Виклик цієї процедури здійснюється, зокрема, у момент вибору прізвища для пошуку, тобто у момент зміни активного рядка в комбінованому списку. Тому для ініціалізації заготівки цієї процедури активізуйте на закладці Events вікна Object Inspector об'єкту ComboBoxl рядок OnChange (Момент заміни) і в правому стовпці вкажіть назву процедури реакції на цю подію: NewEdit. Двічі клацніть мишею на введеній назві і заповніть заготівку цієї процедури таким чином:
procedure TPagesDlg.NewEdit(Sender: Tobject);
var i : integer;
begin
i := ComboBox1.Itemlndex + 1; {i - номер рядка даних в таблиці}
if i > 0 then
begin {Для значущих позицій комбінованого списку}
Edit1.Text := StringGrid1.Cells[0, i]; { копіюємо дані i-го запису з}
Edit2.Text := StringGrid1.Cells[1, i]; { першої сторінки форми в}
Edit3.Text := StringGridl.Cells[2, i]; {відповідні поля на другій сторінці}
Edit4.Text := StringGridl.Cells[3, i];
end
end;
Напишіть процедуру заповнення комбінованого списку NewComboBox.
Спочатку до опису типу класу (об'єкту) TPagesDlg (багатосторінкової форми) в розділі interface додайте декларацію:
type
{ Цей запис вже є в заготівці модуля}
TPagesDlg = class(TForm)
....
{ Необхідно вставити}
procedure NewComboBox;
...
У розділ implementation додайте опис цієї процедури:
procedure TPagesDlg.NewComboBox;
var i, j : integer;
begin
j := ComboBox1.ItemIndex; { Запам'ятовуємо активну позицію комбінованого списку}
ComboBox1.Clear; { Очищаємо комбінований список}
for i := 1 to N do {Для всіх N записів...}
{ У оновлений комбінований список додаємо всі прізвища з першого стовпця таблиці}
ComboBox1.Items.Add(StringGrid1.Cells[0, I]);
ComboBox1.ItemIndex:= j; { Переходємо на позицію j}
end;
Збережіть роботу, запустіть програму, заповніть таблицю даними і переконаєтеся в тому, що програма правильно записує на диск і прочитує з диска файли телефонних довідників. Файл довідника зберегти в папці проекту.
Запрограмуйте команду головного меню «Зберегти зміни в списку записів».
procedure TPagesDlg.N6Click(Sender: Tobject); {Тут N6 номер команди. «Записати у файл», у {Вас може бути іншій}
var i : integer;
begin
i := ComboBox1.ItemIndex + 1; {Визначуємо номер активного запису}
if PageControl1.ActivePage=TabSheet2 then
begin {Якщо активна друга сторінка}
StringGrid1.Cells[0, i ] := Edit1.Text; {то вносимо зміни до першої }
StringGrid1.Cells[1, i] := Edit2.Text;
StringGrid1.Cells[2, i] := Edit3.Text;
StringGridl.Cells[3, i] := Edit4.Text;
end
else NewEdit(ComboBox1); { Інакше — вносимо зміни до другої сторінки}
NewComboBox; { У обох випадках оновлюємо комбінований список}
end;