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

Лабораторна робота № 17 Створення проекту «Довідник по країнах»

Завдання. Створити програму, яка даватиме змогу користувачу переключатися між закладками з назвою країни і виводити в таблицю інформацію про столицю, валюту, територію та населення даної краї­ни (рис.30).

Аналіз проекту. Проект можна виконати, використовуючи компонент середовища Delphi—односторінковий блокнот TabControl (вкладка палітри компонентів Win32). Цей компонент являє собою прямокутну область з набором вкладок, перемикання між якими відбувається автоматично при виборі однієї з них. Односторінковий блокнот названо так через те, що він має одну спільну сторінку для всіх вкладок і всі дії щодо зміни інформації мають відбуватися програмно. Для цього створюють процедуру обробки події OnChage.

У проекті використаємо такі властивості компонента TabControl:

• MultiLine —якщо ця властивість набуває значення True, то вкладки можуть відображатися у декількох рядках;

• Tablndex — вказує номер вибраної закладки в масиві рядків. Алгоритм розробки проекту

  1. Створити папку D:\Delphi\Pract_17.

  2. Завантажити середовище візуального програмування Delphi.

  3. Розмістити на формі візуальні компоненти TabControl1 та StringGrid1.

Cамостійно розробити проект «Довідник по країнах».

4. Зберегти проект у папці D:\Delphi\Pract_17.

Підказка. Скористайтесь описом властивостей компонента StringGrid, який наведено в попередньому проекті. У процедурі опрацювання події OnChage для компонента TabControll розмістіть команди із внесення не­обхідних даних про країну у другий стовпчик таблиці StringGrid1 залежно від обраної вкладки. Відомості про країни вносять у розділі опису констант (const) у вигляді масиву.

Лістинг програми: unit Unit1; interface uses

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

Dialogs, Grids, ComCtrls, jpeg, ExtCtrls; type

Private, public, end;

var Form1: TForml;

implementation {$R *.dfm}

const

strana:array[1..6,1..6] of PChar= (

('Україна' ,'Київ' /Гривня' ,'603.7' ,'50.1' ,'ukr.jpg'), ('США','Вашингтон','Долар','9363.2','237.8',' usa.jpg'),

('Англія' ,'Лондон','Фунт стерлінгів' , '244.1', '56.2',' angl.jpg‘),

('Франція',’Париж' ,’Франк' ,’551.6' ,'55.1' ,' fr.jpg ') ,

('Росія' ,’Москва' ,’Рубль' ,’17075.4' ,’163.7' ,’moskva.jpg') ,

('Китай' ,’Пекін' ,’Юань' ,’9597' ,’1488.5' ,’ kut.jpg у)) ;

procedure TForml.FormCreate(Sender: TObject);

begin

StringGridl.Cells[0,0]:='Столиця';

StringGridl.Cells[0,1]:='Валюта';

StringGridl .Cells [0 , 2] : = 'Територія (тис.кв.km)';

StringGridl.Cells[0,3]:='Населення (млн)';

TabControllChange(Sender);

end;

procedure TForml.TabControllChange (Sender: TObject) ;

begin

StringGridl.Cells[1,0]:=strana[TabControll. TabIndex+1,2] ;

StringGridl.Cells[1,1]:=strana[TabControll. TabIndex+1,3] ;

StringGridl.Cells[l,2]:=strana[TabControll. TabIndex+1,4] ;

StringGridl.Cells[1,3]:=strana[TabControll. TabIndex+1,5] ;

Image1.Picture.loadfromfile(strana[TabControll. TabIndex+1,6]) ;

end;

end.

Лабораторна робота № 18 Створення проекту «Телефонна книга»

Завдання. Створити програму, за допомогою якої користувач зміг би вести електронну телефонну книгу. Передбачити внесення нових за­писів та вилучення існуючих записів, редагування полів бази даних, по­шук абонента, поновлення вмісту таблиці.

Аналіз проекту. В проекті знадобляться вміння створювати та супроводжувати спеціальний тип набору даних - базу даних. База даних (БД) - це електронне сховище даних. Створення, заповнення, поновлення та вилучення БД забезпечується за допомогою системи управління базами даних (СУБД). Доступ до БД з Delphi виконується через процесор баз даних BDE (Borland Database Engine). BDE - це набір драйверів, які забезпечують доступ до даних та управління ними.

Нині широко використовуються реляційні БД, які являють собою набори взаємопов'язаних таблиць. Окрім основного файла, який містить дані, для БД створюються файли індексів, ключів тощо. Імена всіх файлів, що належать до однієї БД, будуть однаковими та відрізня­тимуться тільки розширенням. Таблиця БД складається з рядків та стовпчиків. Рядки називаються записами, а стовпчики - полями. Кож­не поле повинне мати унікальне ім'я в межах таблиці, якій воно належить. У полі можуть зберігатися дані тільки одного типу, який задаєть­ся при створенні таблиці.

Для кожної таблиці можуть бути задані ключі та індекси. Ключем називається комбінація полів набору даних, які визначають кожен запис у таблиці. Поля, що утворюють ключ називаються ключовими. Отже, в таблиці не може міститися другого такого запису, для якого б значення ключових полів повністю збігалися зі значеннями ключових полів другого запису. Індекс використовується для впорядкування таблиці. Він будується на основі полів таблиці.

Delphi підтримує роботу з таблицями деяких СУБД, зокрема і СУБД Paradox. Для роботи з БД в Delphi існують спеціальні інструментальні засоби, серед яких є програма DatabaseDesktop. Ця програма дає змогу створювати та редагувати таблиці БД.

Розглянемо послідовність створення БД «Телефонний довідник» з використанням DatabaseDesktop.

Алгоритм розробки проекту

  1. Створити папку D:\Delphi\Pract_18.

  2. Створити папку D:\Delphi\Pract_18\DB - для збереження файлів БД.

  3. Створити для БД псевдонім, який буде посилатися на папку, де зберігається БД. Для цього в середовищі програмування Delphi запустити програму SQL Explorer (Головне меню/ База данних/ Explorer) (рис. 31).

У вікні програми SQL Explorer вибрати режим меню Object→New. У вікні, яке з'явилось, залишити без змін тип БД (STANDARD) та натиснути кнопку ОК. У лівій частині вікна адміністратора БД з'явиться рядок з написом STANDARD1. Його необхідно змінити на бажане ім'я, наприклад, Book. У правому полі вікна SQL Explorer треба змінити параметр PATH, присвоївши йому значення шляху, який визначає місце розташування БД: D:\Delphi\Pract_17\DB.

4. Щоб запам'ятати ім'я псевдоніма необхідно клікпути на ньому правою кнопкою мишки і в меню, що відкрилось, вибрати Apply та підтвердити кнопкою ОК збереження нового псевдоніма. Закрити вікно програми SQL Explorer.

5. Після призначення псевдоніма завантажити програму DatabaseDesktop (Головне меню/ Сервіс/DatabaseDesktop). У вікні програми DatabaseDesktop вибрати в Головному меню: File/New/ Table. У вікні, що відкриється, залишити тип таблиці Paradox 7 та натиснути ОК. У результаті на екрані з'явиться вікно визначення струкіури таблиці (рис. 32).

Кожен рядок таблиці відповідає полю таблиці. Стовпчики мають такі значення:

Fields Name - ім'я поля;

Туре - тип поля (А - рядок довжиною не більше ніж 255 символів, N — число з плаваючою крапкою тощо);

Size - розмір поля;

Key - ознака ключового поля (значення *).

6. Створити таблицю з полями Fam, Name, Adress, Telefon, Addish (рис. 33).

7. Після занесення всіх необхідних полів до запису таблиці виконати збереження таблиці у файл D:\Delphi\Pract_18\DB\telefon.db.

8. Для доступу до таблиці з програми Delphi виконати такі дії:

  • на формі Form1 розмістити компонент Table1 (вкладка BDE) —таблиця БД, за допомогою якої зчитуються дані безпосередньо з фізичної таблиці БД та передаються їх компонентам на формі; встановити для цього компонента властивості DatabaseName значення Book, властивості TableName значення telefon.db;

  • на формі Forml розмістити компонент DataSource1 (вкладка DataAccess) — джерело даних, що слугує для зв'язку між компонентами-наборами даних і компонентами, що їх відображають; надати властивості DataSet значення Table1;

  • на формі Form1 розмістити компонент DBGrid1 (вкладка DataControls) —відображає дані з БД у вигляді таблиці, надати властивості DataSource значення DataSource1;

  • для активізації даних, які зберігаються в таблиці БД telefon.db, змінити властивість Active компонента Table1 на True.

9. Зберегти проект у папці D:\Delphi\Pract_18.

10. Запустити проект та перевірити можливість роботи з БД: переміщення між записами за допомогою клавіш керування курсором, редагування та додавання записів (клавіша F2 або подвійний клік мишкою на заченні, яке треба змінити) (рис. 33).

Завдання для самостійного виконання

1. Змінити проект так, щоб була можливість працювати із записами БД за допомогою навігаційної панелі (рис. 34).

Підказка. Розмістити на формі Form1 компонент DBNavigator1 (вкладка Палітри компонентів DataControls), який являє собою набір кнопок для керування записами БД та забезпечує можливість переходу від запису до запису в таблиці БД, додавання, редагування, вилучення записів. Властивості DataSource цього компонента надати значення DataSourcel; для виведення «спливаючих» підказок до кнопок властивості ShowHint надати значення True; за бажанням можна змінити зміст «спливаючих» підказок— властивість Hints.

3. Змінити проект так, щоб була можливість виконувати пошук абонента за вказаним прізвищем.

Підказка. Розмістити на формі компонент Queryl (вкладка BDE), який передає сформовані на основі запиту дані з фізичної таблиці на компо­ненти, що їх відображають. Встановити для цього компонента властивості DatabaseName значення Book. Розмістити на формі компонент BitBtn1 із значенням властивості Caption=’Пошук абонента' та створити для нього процедуру опрацювання події OnCIick (див. лістинг програми).

4. Змінити проект так, щоб після перегляду результатів запиту в таблиці знову відображалась вся БД.

Підказка. Розмістити на формі компонент BitBtn2 із значенням властивості Caption= ' Відобразити всю ТелКн' та створити для нього процедуру опрацювання події OnCIick з тілом: DataSource1.DataSet:=Table1;

Лістинг програми:

unit Unitl;

interface

uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DB, DBTables, Grids, DBGrids, StdCtrls, Buttons, ExtCtrls, DBCtrls;

Type

Private, public, end;

Var Form1: TForm1; implementation

procedure TForm1.BitBtn1Click(Sender: TObject);

var

fam: string[30];

begin

fam:=InputBox('Пошук інформації в БД' ,'Вкажіть прізвище та натисніть ОК',' ‘);

if fam <>’ ' then // якщо прізвище введено

begin

with forml.Query1 do

begin

Close; {закрити файл-результат виконання поперед­нього запиту}

SQL.Clear; // вилучити текст попереднього запиту

SQL.Add(‘SELECT Fam, Name, Telefon'); // створення нового запиту SQL

SQL.Add('FROM ":Book:telefon.db"');

SQL.Add('WHERE');

SQL.AddC (Fam = "'+ fam + '")');

Open; // активізація виконання запиту

end;

if Query1.RecordCount <> 0 then

begin

DataSource1.DataSet:=Queryl {відобразити рез-т виконання запиту}

else

begin

ShowMessage('В БД немає записів, які задовольняють критеріям запиту');

DataSource1.DataSet:=Table1;

end; end; end;

procedure TForm1.BitBtn2Click(Sender: TObject);

begin

DataSource1.DataSet:=Table1;

end; end.