- •Лабораторна робота № 1 Тема: "Створення шаблонів форм і їх використання в нових проектах"
- •Лабораторна робота № 2 Тема: "Прийоми обробки однотипних компонентів "
- •Лабораторна робота № 3 Тема: Створення незалежних модулів для зберігання незалежних процедур
- •Лабораторна робота № 4 Тема: "Створення шаблонів компонентів"
- •Лабораторна робота № 5 Тема: "Створення динамічної бібліотеки процедур"
- •Лабораторна робота № 6 Тема: "Створення програм із зовнішніми компонентами"
- •Лабораторна робота № 7 Тема: "Створення інформаційної системи за технологією файлового сервера"
- •Лабораторна робота № 8 Тема: "Створення інформаційної системи за технологією клієнт/сервер"
- •Лабораторна робота № 9 Тема: "Робота з базами даних серверної субд"
- •Лабораторна робота № 10 Тема: "Обробка таблиці клієнт/серверної субд за допомогою запитів"
- •Лабораторна робота № 11 Тема: «Робота з com сервером Microsoft Word»
- •Лабораторна робота № 12 Тема: «Робота з com сервером Microsoft Excel»
- •Лабораторна робота № 13 Тема роботи: Створення довідкової системи та її інтеграція в програму
Лабораторна робота № 2 Тема: "Прийоми обробки однотипних компонентів "
Ціль роботи: отримати практичні навички по обробці однотипних компонентів за допомогою універсальних оброблювачів-підпрограм
Хід роботи
Завдання 1 (універсальний оброблювач для групи компонентів)
1. Створити програму, яка емулює вікно набору телефонного номера. Програма містить форму виду:
Усі кнопки слугують для введення в текстове поле номерів телефону, кнопка Flash служить для очищення поля.
Вказівки: Для форми задайте властивості: Borderstyle=bsdialog, Caption=Універсальний код. На форму нанесіть потрібну кількість кнопок Button (Standard).
Для кожної з кнопок задайте властивості: Caption=цифра або символи "*", "#".
Для розміщення зображення нанесіть на форму компонент Image (Additional) і задайте властивості: Stretch=true, Picture=файл зображення, Transparent=true. Зображення телефону знайдіть на сайті http://www.findicons.com у формат bmp.
2. Для реакції кнопок на натискання потрібно створити універсальну процедуру, яка залежно від натиснутої кнопки буде вводити відповідний символ. Кнопки можна розрізнити за властивостю Captrion, яку ми задали раніше.
Вказівки: Для першої кнопки у події OnClick введіть код:
procedure Tform1.Button1Click(Sender: Tobject);
begin
edit1.Text:=edit1.Text+tbutton(activecontrol).caption;
end;
Усі кнопки повинні при натисканні виконувати такий самий код. Для цього втримуючи Shift виділіть всі кнопки на формі, у вікні завдання властивостей перейдіть на закладку Events і у події Onclick оберіть у списку рядок Button1Click.
Таким чином для всіх кнопок у події OnClick буде виконуватися код із події першої кнопки.
Завдання 2. Робота з масивами однотипних компонентів
1. Створіть програму для обробки масиву текстових полів. Програма має форму виду:
Форма дозволяє ввести дані в довільні поля за бажанням користувача й за допомогою перемикачів і кнопки розрахувати потрібне значення.
Вказівки: для форми задайте властивості: Borderstyle=bsdialog, Caption=Масиви компонентів. На форму нанесіть потрібну кількість полів Edit (Standard) для вихідних даних, ще одне поле для результату. Для кожного поля очистіть властивість Text. Поле результату потрібно відділити від масиву полів. Для цього в його властивості Tag введіть 1.
Для створення групи перемикачів нанесіть на форму Radiogroup (Standard) і задайте властивості: Items = перелік назв перемикачів, Itemindex=0 (номер обраного перемикача за замовчуванням).
Нанесіть дві кнопки Button (Standard) і у властивості Caption укажіть їхні написи.
2. Для кнопки Розрахувати напишемо код, який залежно від обраного перемикача в полі для результату відображає відповідь.
Вказівки: для кнопки Button1 у події Onclick уведіть код:
procedure Tform1.Button1Click(Sender: Tobject);
var rez:real; i,kol:integer;
begin
//визначаємо, який перемикач обраний в radiogroup
case radiogroup1.Itemindex of
//якщо обрано перший перемикач, то знаходимо максимальне значення
0:
begin
` //спочатку максимум нескінченно малий
rez:=-100000;
//у циклі проходимо по всіх компонентах форми
for i:=0 to controlcount-1 do
//якщо i-й компонент поле (classname='TEdit')
//і якщо i-й компонент не поле відповіді (це поле має tag=1)
if (controls[i].classname='TEdit') and (controls[i].tag<>1) then
//якщо i-й компонент-поле не порожній
if tedit(controls[i]).text<>'' then
//якщо максимум менше значення i-го компонента
if rez<strtofloat(tedit(controls[i]).text) then
//запам'ятовуємо це поле як максимальне
rez:=strtofloat(tedit(controls[i]).text);
//якщо результат не нескінченно малий (були введені дані)
if rez<>-100000 then
//у полі відображаємо результат
edit31.Text:=floattostr(rez)
//інакше, якщо результат нескінченно малий (немає введених даних)
else
//поле залишається пустим
edit31.text:='';
end;
//якщо обрано другий перемикач, то знаходимо мінімальне значення
1:
begin
` //спочатку мінімум нескінченно великий
rez:=100000;
//у циклі проходимо по всіх компонентах форми
for i:=0 to controlcount-1 do
//якщо i-й компонент поле (classname='TEdit')
//і якщо i-й компонент не поле відповіді (це поле має tag=1)
if (controls[i].classname='TEdit') and (controls[i].tag<>1) then
//якщо i-й компонент-поле не порожній
if tedit(controls[i]).text<>'' then
//якщо мінімум більше значення i-го компонента
if rez<strtofloat(tedit(controls[i]).text) then
//запам'ятовуємо це поле як мінімальне
rez:=strtofloat(tedit(controls[i]).text);
//якщо результат не нескінченно великий (були введені дані)
if rez<>100000 then
//у полі відображаємо результат
edit31.Text:=floattostr(rez)
//інакше, якщо результат нескінченно великий (немає введених даних)
else
//поле залишається пустим
edit31.text:='';
end;
//якщо обрано третій перемикач, то в знаходимо суму елементів
2:
begin
//спочатку сума обнулюється
rez:=0;
//у циклі проходимо по всіх компонентах форми
for i:=0 to controlcount-1 do
//якщо i-й компонент поле (classname='TEdit')
//і якщо i-й компонент не поле відповіді (це поле має tag=1)
if (controls[i].classname='TEdit') and (controls[i].tag<>1) then
//якщо i-й компонент-поле не порожній
if tedit(controls[i]).text<>'' then
// до суми додаємо значення цього поля
rez:=rez+strtofloat(tedit(controls[i]).text);
//у полі відображаємо результат
edit31.Text:=floattostr(rez)
end;
//якщо обрано четвертий перемикач, то знаходимо середнє
3:
begin
//обнулюємо суму й кількість
rez:=0;
kol:=0;
//у циклі проходимо по всіх компонентах форми
for i:=0 to controlcount-1 do
//якщо i-й компонент поле (classname='TEdit')
//і якщо i-й компонент не поле відповіді (це поле має tag=1)
if (controls[i].classname='TEdit') and (controls[i].tag<>1) then
//якщо i-й компонент-поле не порожній
if tedit(controls[i]).text<>'' then
begin
// до суми додаємо значення цього поля
rez:=rez+strtofloat(tedit(controls[i]).text);
//збільшуємо кількість елементів на 1
kol:=kol+1;
end;
//якщо кількість>0 (є непусті елементи)
if kol>0 then
//у полі відображаємо результат
edit31.Text:=floattostr(rez)
//інакше, якщо кількість 0 (немає введених даних)
else
//поле залишається пустим
edit31.text:='';
end;
end;
end;
3. Кнопка "Очистити" очищає всі текстові поля на формі.
Вказівки: Для кнопки "Очистити" у події OnClick введіть код:
procedure Tform1.Button2Click(Sender: Tobject);
var i:integer;
begin
//у циклі проходимо по всіх компонентах форми
for i:=0 to controlcount-1 do
//якщо i-й компонент - поле (classname='TEdit')
if controls[i].classname='TEdit' then
//очищаємо цей компонент
tedit(controls[i]).text:='';
end;
Завдання 3. Сортування даних
1. Створіть програму для сортування даних у текстових полях. Програма містить форму виду:
Користувач уводить дані в поля, вибирає напрямок сортування й за допомогою кнопки може впорядкувати дані в заданому напрямку.
Вказівки: Для форми задайте властивості: Borderstyle=bsdialog, Caption=Сортування даних. На форму нанесіть потрібну кількість полів Edit (Standard) для вихідних даних. Для кожного поля очистіть властивість Text.
Для створення групи перемикачів нанесіть на форму Radiogroup (Standard) і задайте властивості: Items = перелік назв перемикачів, Itemindex=0 (номер обраного перемикача за замовчуванням), Columns=2 (число стовпчиків перемикачів).
Нанесіть кнопку Button (Standard) і у властивості Caption укажіть її напис.
Для кнопки введіть код:
procedure TForm1.Button1Click(Sender: TObject);
var
//лічильники
i,k,n:integer;
//буферна змінна для обміну даними
b:real;
//масив для сортування
mas:array[1..100] of real;
begin
//спочатку елементів в масиві немає
n:=0;
//переписуємо у масив значення полів
for i:= 0 to controlcount-1 do
if controls[i].classname='TEdit' then
begin
n:=n+1;
mas[n]:=strtofloat(tedit(controls[i]).text);
end;
//сортуємо массив
case radiogroup1.ItemIndex of
//якщо обрано перший перемикач
0:
//сортуємо масив за зростанням
for k:= n-1 downto 1 do
for i:= 1 to k do
if mas[i]>mas[i+1] then
begin
b:= mas[i];
mas[i]:= mas[i+1];
mas[i+1]:= b;
end;
//якщо обрано другий перемикач
1:
//сортуємо масив за убуванням
for k:= n-1 downto 1 do
for i:= 1 to k do
if mas[i]<mas[i+1] then
begin
b:= mas[i];
mas[i]:= mas[i+1];
mas[i+1]:= b;
end;
end;
//виводимо масив в поля на формі
//спочатку жодного елементу масиву не виведено
n:=0;
//цикл для виведення масиву
for i:= 0 to controlcount-1 do
if controls[i].classname='TEdit' then
begin
n:=n+1;
tedit(controls[i]).text:=floattostr(mas[n]);
end;
end;
