Довідник по Хмельницькому

Зміст

	

	Зміст

	Вступ

	1. Аналітичний розділ

		2. Побудова інформаційно-математичної моделі задачі

		3. Алгоритм задачі

		4. Визначення структури даних

		5. Розробка інтерфейсу програми з користувачем

		6. Складання код програми 

		7. Реалізація проекту у візуальному середовищі

		8. Аналіз програми

		9. Тестування програми

		10. Інструкція з експлуатації програми

		11. Аналіз отриманих результатів

		Висновок

		Список літератури

		Додаток A

	

	
Вступ 

	

	З того часу як люди почали подорожувати на досить далекі відстані їм ставало все більш необхідно знати де вони знаходяться і як знайти дорогу додому. Першими мандрівниками були купці, які в пошуках нових дорогих товарів відкривали невідомі землі. Вони розпочали описувати природу нових країн, життя і побуту місцевих жителів, продукцію що ті виготовляли. За купцями вирушали досліджувати нові країни вчені, які не тільки описували, а й вивчали особливості природи і діяльності населення. Потім за цими записами та «замальовками» створювали щось подібне до географічних карт. Так почали з’явилися перші карти. На той час щоб купити таке задоволення потрібно було викласти чимало грошей, бо географічні карти малювались вручну і це займало досить багато часу.

У наш час існує чимало різноманітних видів географічних карт та атласів. По них можна знайти всю потрібну інформацію яка цікавить по тому чи іншого питанні. Також створено чимало електронних карт, які допомагають пришвидшити пошук потрібної інформації. За допомогою них можна знайти, вибрати та відсортувати дані. Вони дозволяють легко показати ту частину карти яка потрібна. Лише варто ввести данні і програма виконає всі вказані дії.

Рідним містом хмельничан є місто Хмельницький. Кожний місцевий житель, який прожив кілька років в місті приблизно знає де що знаходиться, але що робити тим людям які приїхали в місто у своїх справах, тільки перший раз. Їм потрібна карта у якій поданий майже повний план розташування будинків, вулиць, бібліотек та багато іншого для того щоб швидко зорієнтувалися. За допомогою карти можна знайти точну адресу будинку та вулицю де він розташовується, але все виконується “вручну”. Що досить незручно.

Найбільшим недоліком усіх карт являється їх неточність та застарілість. Якою новою карта не була вона вважається вже застарілою, тому що на момент виходу вже щось змінилось, бо час не стоїть на місці.




1 Аналітичний розділ



В якості теми для курсового проекту було обрано: “Довідник по Хмельницькому”. Аналізуючи вже існуючі електронні карти можна визначити основні і додаткові завдання курсового проекту:

До основних завдань можна віднести:

- пошук по введенню вулиці;

- пошук по вибору вулиці;

- пошук по району;

- показ частини карти вибраного району;

До додаткових завдань, можна віднести:

- виведення вулиці на екран у вигляді лінії яка мерехтить;

- замальовування її у нестандартний колір та ширину;

- додаткова інформація про місто;

- умовні позначення на карті;

В даному курсовому проекті буде представлено довідник міста Хмельницького, в якому можливо виконувати пошук або вибір по конкретній вулиці, та відсортувати вулиці по вибраному районі, а також переглядати вибраний район при виборі конкретно дії. Усе це можливо буде розробити у середовищі – Delphi. Середовище програмування Delphi дозволяє швидко і легко створювати програму у якій буде зручний та зрозумілий користувачу інтерфейс, а також легке та доступне управління програмою. Орієнтована мова програмування Delphi має свій набір компонентів які допоможуть у реалізації та оформлені програми. Delphi має свій текстовий редактор та власний набір конкретних команд які відрізняють його від інших мов програмування. В програмі обов’язково буде головне меню. В якому будуть представленні команди для роботи з програмою, за допомогою яких можна виконувати конкретні дії. Також буде довідка, для того щоб користувач міг детальніше розібратися з програмою, яка буде представлена перед ним, або просто звернутись до неї по допомогу, коли виникнуть проблеми, які не можна вирішити самостійно. Вагомим недоліком Delphi являється порівняно низька швидкість роботи, а також нераціональне використання ресурсів. 



2 Побудова інформаційно-математичної моделі задачі



Побудова інформаційної моделі задачі полягає у визначенні вхідних даних, способів їх зібрання та обробки, а також визначення вихідних даних. Для розв’язання будь-якої задачі необхідно скласти її математичну модель, тобто послідовність дій, які необхідно виконати, щоб отримати розв’язок задачі.

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

При введені назви вулиці вона порівнюватиметься зі списком вулиць які знаходитиметься в масиві, і якщо назва вулиці яка була введена співпадає з назвою вулиці, яка розмішується в масиві, то на екран виводитиметься вулиця замальована в червоний колір, вона буде мерехтіти для того щоб користувач швидше звернув на неї увагу. Якщо назва вулиці не співпаде, то на екран програма виводитиме повідомлення. Саме ж переміщення на вказану вулицю здійснюватиметься за допомогою горизонтальної та вертикальної ліній прокрутки. Щоб знайти вулицю горизонтальну і вертикальну лінії прокрутки присвоюється значення першої точки по вісі координат Х та У. Потім від першої точки знайденої вулиці відніматиметься певне відхилення, для зручного виведення на екран вулиці. Коли ж вулиця знайдена вона замальовується у червоний колір. Пропадає та з’являється за рахунок “вічного циклу”, тобто таймера. В ньому йде проста перевірка. Якщо вибравши певну вулицю лінія загорілась тоді її гасимо і знову засвічуємо. За допомогою цього методу ми зациклюємо показ лінії на екрані. Для того що вивести наступну вулицю на монітор необхідно спочатку очистити попередню. В підтверджені вибору наступної вулиці існує команда яка очищує попередню вулицю.



3 Алгоритм задачі



Алгоритм – це чітка послідовність дій, які необхідно виконати для виконання задачі та отримання результату.

Блок-схема алгоритму – це графічне зображення його структури в якому кожний етап процесу оброблення даних подається у вигляді певної геометричної фігури.








Вхід



 1



 2

Очищуємо всі вулиці на екрані







R=I;

Znaydeno=True;  Ani=1;

Завантажуємо заново карту

Введена назва рівна назві і-тої вулиці

I=1..313, 1

Змінній “znaydeno” прирівнюємо значення хибності



 3





 4







Ні

 5





Так



 6







 7



Встановлення карти на позицію даної вулиці















Ні

 8

Змінній “znaydeno” надаємо істеність



Виведення повідомлення про помилку і обнуління назви вулиці





Так



 9







 10



Вихід





	

	Рисунок 1 – Блок-схема алгоритм пошуку вулиці.



	


	

Вхід



 1





Ani=1 чи An=1



Ні

 2





Так



Малювання введеної вулиці

 3







Аn=0



Ні



 4





Так



An=1



An=0



 6

 5





	

	

 7



Вихід







Рисунок 2 – Блок-схема алгоритм свічення та погашення вулиці.








Ні



Ні



 12

Вибрано район



Вибрано район

“Дубове”

 1

Вхід



 2



Так

 13



Заповнення дерева вулицями району

“Дубове”

Так

 3

Дерево стає доступним









Ні



Вибрано район

“Ружична”

Заповнення дерева вулицями району

“Ружична”



 14

Вибрано район

“Виставка”



Ні



 4



Так

 15



Так



 5

Заповнення дерева вулицями району

“Виставка”





Вибрано район

“Катіон”

Заповнення дерева вулицями району

“Катіон”



Ні



 16



Вибрано район

“Гречани”

Заповнення дерева вулицями району

“Гречани”



Так

Ні



 17

 6





Так

 7



– 



Ні



21

 19

 20

 18

Вибрано район

“Книжківці”

Заповнення дерева вулицями району

“Книжківці”







Так

Ні



+

Вибрано район

“Ракове”

Заповнення дерева вулицями району

“Ракове”



 8





Так

 9



Ні



Вибрано район

“Центр”

Заповнення дерева вулицями району

“Центр”







Так

+

	

Ні



 10

Вибрано район

“Лезневе”

Заповнення дерева вулицями району

“Лезневе”

	

	

Так

 22

	

Вихід



 11

	

	

	

	

	

Рисунок 3 – Блок-схема алгоритм вибору.


4 Визначення структури даних



При написанні коду програми необхідно було використовувати безліч змінних різних типів даних: масиви, файлові змінні, записи, а також звичайні змінні.

Таблиця 1 – глобальні змінні Unit1

	Ідентифікатор

Тип змінних

Призначення

An, Аni

	Цілий

Зациклення вулиці при виводі на екран (мерехтіння)

K

Цілий

Потрібна для вибору вулиці з циклу.



Таблиця 2 – локальні змінні Unit1

	Ідентифікатор

	Тип змінних

	Призначення

	I

	Цілий

	Використовується для пошуку

	вулиці в циклі

	Znaydeno

	Логічний

	Виведення повідомлення на екран вразі того якщо вулиця введена не вірно



Таблиця 3 – записи Unit1

	Назва запису

	Поля запису

	Тип полів

	Призначення

	

	

	Vul

	Name

	Рядок

	Назва вулиці

	

	X..X13, Y0..Y13

	Цілий

	Координати вулиць

	

	Array[1..313] of Vul

	Масив

	Масив для розміщення назви вулиць

	

	F:file of Vul

	Запис

	Використовується для читання з файлу даних



5 Розробка інтерфейсу програми з користувачем

	

	Розробка даної програми буде відбуватись у середовищі програмування Delphi 6. Дана оболонка програмування 32-розрядна і використовується для створення користувальницьких програм для Windows. Програма після її створення буде повністю відповідати даній операційній системі.

Інтерфейс даної програми складається з загальної форми на якій знаходяться такі компонентів:

	Image1 – Зображення. Потрібне для завантаження малюнка карти Хмельницького.

	AcroPDF1 – Спилка на програму Acrobat Х.0. Відкриває файли з форматом PDF. Х.0 – це версія програми.

	Timer1 – Лічильник (нескінченний цикл). Використовується для зациклення виводу вулиці на екран. 

	Panel1 – Використовується для розміщення на ньому інших компонентів.

	MainMenu1 – Містить головне меню програми.

	Button1 – Кнопка. Використовується для пошуку вулиці по її назві.

	Button2 – Кнопка. Потрібний для підтвердження вибору вулиці зі списку.

	Button3 – Кнопка. Підтвердження вибору вибраного району зі списку.

	ComboBox1 – Список. Належний візуальний компонент використовується для показу вулиці.

	ComboBox2 – Список. Необхідний для підтвердження та вибору району зі списку.

	ComboBox3 – Список. Використовується для введення вулиці.

	TreeView1 – Дерево. Компонент використовується для відсортованих вулиць по району та пошуку їх на карті. 

	RadioButton – Для вибору однієї з наведених ділянок опрацювання даних.

	PageControl1 – Багато сторінкове вікно. Використовується для заощадження місця на робочо вікні.

	CheckBox1- Флаг. Вибір для завантаження району.

	Label1- Надпис. Підписує певний елемент для кращого розуміння.

	ScrollBox1 – вікно з прокруткою. Використовується для створення зон відображення з прокруткою. Прокручує на знайдену вулицю.

	

	

Label1

Label2

Panel1

Button 2

ComboBox1

Button3

PageControl1

ComboBox3

TreeView1

Button1

Timer1

MainMenu1

PageControl1

Image1

	Рисунок 4 Вікно головної програми.

	

	

Button1

Memo1

Panel1

TreeView1

	Рисунок 5 Вікно допомоги користувачу.

	

	




RadioButton1



Panel1

Image1

Button1

Label3

Label2

Label1Рисунок 6 вікно виведення інформації про автора.

	

	

Panel1

Image1

ScrollBox1

Button1

	Рисунок 7 Умовні позначення.

	


Memo1

	

Button1

Panel1Рисунок 8 Відомості про місто Хмельницький. 

	

	Головне вікно програми має такий вигляд:

	

	

	Рисунок 9 Вікно готової програми (закладка “Пошук вулиць”).

	

	

	Рисунок 10 Вікно готової програми (закладка “Детальний перегляд”).

	

	6 Складання коду програми



Код програми – алгоритм дій, написаний на конкретній мові програмування. Цей проект написано з використанням Delphi 6.0, отже мова програмування Object Pascal. 

В Delphi 6.0 вся програма складається з окремих модулів.

Нижче будуть перелічені процедури кожного модуля (повний текст програми наведено в Додатку 1).



Unit 1 - Головне вікно програми.

procedure FormCreate – виконання певних дій при завантажені. 

	procedure Button1Click – підтвердження та пошук введеної вулиці.

	procedure N5Click – переміщення на поле введення вулиці.

	procedure N7Click – вихід з програми.

	procedure Timer1Timer – створення мерехтіння вулиці.

	procedure Button2Click - підтвердження та пошук вибраної вулиці.

	procedure N3Click – показує довідку програми. 

	procedure N10Click – встановлює карту в початковий режим завантаження.

	procedure N6Click – показує закладку “Пошук вулиць”.

	procedure N16Click - показує закладку "Детальний перегляд"

	procedure N13Click – переміщає курсор на вибір по вулиці.

	procedure N4Click – показує коротку інформацію про автора.

	procedure TreeView1Click – тут розміщуються відсортовані вулиці по районах.

	procedure ComboBox1Change – перевірка на пустий текст в списку.

	procedure Button3Click – підтвердження та пошук району.

	procedure N17Click – показує форму з умовними позначеннями.

	

	procedure ComboBox2Change – перевірка вибору пустого тексту в списку.

	procedure ComboBox1KeyPress – можливість натискання клавіші “Enter”.

	procedure ComboBox2KeyPress – можливість натискання клавіші “Enter”.

	procedure N15Click - переміщає курсор на вибір по району та відкриває список.

	procedure ComboBox3Change – перевірка вибору пустого тексту в списку.

	procedure ComboBox3KeyPress – можливість натискання клавіші “Enter”.

	procedure RadioButtonClick – недоступність певних елементів на панелі.

	procedure N9Click – історія міста Хмельницького.



Unit 2 - Довідка.

procedure Button1Click – закрити вікно довідки.

procedure TreeView1Click – завантажує в текстове поле дані про певний розділ. 



Unit 3 – Інформація про автора.

procedure OKButtonClick – закриває вікно.



Unit 4 – Інформація про автора.

procedure Button1Click – закриває вікно умовних позначень.

procedure FormCreate – завантажує картинку в Іmage1.



Unit 5 – Історія міста. 

procedure Button1Click – закриває вікно.

procedure FormCreate – завантажує дані в Memo1.



7 Реалізація проекту у візуальному середовищі



В проекті використовується нестандартний компонент, під назвою – AcroPDF. Для його використання необхідно спочатку встановити на комп’ютер Acrobat х.0. Після цього необхідно проінсталювати типову бібліотеку для Acrobat (Project -> Import Type Library). З меню Delphi виберіть "Acrobat Control for ActiveX (version x)". Де x - поточна версія бібліотеки. Також виберіть закладку куди буде поміщений новий компонент. Натиснути кнопку інсталяції. Після інсталяції в Delphi буде створено новий компонент з назвою – AcroPDF. 

	Реалізація проекту у візуальному середовищі складається з таких етапів:

Запустити систему візуального об’єктно-орієнтовного програмування Delphi 6.

Створюємо 5 форм. Називаємо їх: 1-ша – Forma1, 2-га – Forma2, 3-тя – AboutBox, 4-та – Forma4, 5-та – Forma5.

Коли з’явиться 1-ша форма налаштувати згідно рисунка 4.

За допомогою панелі інструментів перетягуємо на форму Forma1 у закладку TabSheet1 наступні компоненти: PopupMenu1, Timer1, Button1, Button2, Button3, Label1, ComboBox1, ComboBox2, ComboBox3, RadioButton1, RadioButton2, RadioButton3, ScrollBox1, Рanel1, PageControl1 та TreeView1. На наступну закладку(TabSheet2) вставляємо AcroPDF1. Налаштовуємо ці компоненти для нормальної роботи програми.

На форму Forma2 перетягуємо такі компоненти: TreeView1, Memo1 та Button1.

На форму AboutBox наносимо наступні компоненти: Image1, три компоненти 

Label, Рanel1, Button1.

На 4-ту форму наносим такі компоненти: Image1, ScrollBox1, Рanel1, Button1 і це все розміщуємо так само як на рисунку 7.

На 5-ту форму накладаємо такі компоненти як: Memo1, Рanel1 іButton1.

Розмістити усі компоненти як показано на рисунках 4 – 8.

Після подвійного натискання вводимо текст який надруковано у додатку А.

Після виконання усіх дій зберігаємо програму у новій папці компілюємо та закриваємо Delрhi.



8 Аналіз програми



Аналізуючи програму можна помітити її недоліки та переваги. Головними недоліками програми, являється те, що програма надто велика за своїми розмірами. Вона займає чимало місця на жорсткому диску. Через це програма довго грузиться. Також використовується багато місця в оперативній пам’яті, через що операційна система Windows починає повільно працювати з іншими програмами. Тому щоб скористатись програмою потрібно мати швидкодіючий процесор та достатньо оперативної пам’яті на комп’ютері, а також до 260 мегабайт вільного місця на носію інформації. Ще одним видимим недоліком являється повільний пошук вулиць та введення назви вулиці з великої літери. Це відбувається тому що при кожному новому пошуку вулиця має очиститись та знову по новому завантажити зображення. Використовується для того щоб на екрані монітора не залишались старі вулиці. Також в програмі не передбачено команди, яка мала б відповідати за зміну стандартної назви вулиці, що відноситься до недоліків програми. Одним з недоліків є те що користувачу не надано можливості для зміни оформлення програми під свій погляд. Він лише користуватись стандартним виглядом форми, що не всіх влаштовує. До переваг програми можна віднести те, що всі дії виконуються правильно. В програмі розроблений зручний інтерфейс. Усе дуже легко зрозуміти, навіть без використання довідки. Виведення на екран здійснюється у вигляді замальовування вулиці червоною лінією яка з’являється та гасне. Це розроблено для того, щоб користувач швидше звернув увагу на знайдену вулицю. Можливо в програмі не тільки вводити назву вулиці для пошуку, а й вибирати її зі списку, а також можливо відсортувати її по районах, що можна вважати значною перевагою програми. Нею можуть користуватись усі бажаючі, кому потрібно знайти швидко необхідну вулицю на карті. Також програма володіє довідковою інформацією, до якої користувач може звернутись в будь-який необхідний момент. Кожний об’єкт який знаходиться на формі підписаний підказками, це зроблено з тою метою щоб користувач зміг швидше з орієнтуватися у програмі. 



9 Тестування програми



Тестування програми – це один із способів перевірити програму на її правильну роботу. Воно допомагає виявити помилки та виправити їх. Також тестування допомагає виявити які необхідні мінімальні запити до комп’ютера.

Перш за все перевірялось чи не виникає проблем при запуску та закритті програми. Потім маємо перевірити програму безпосередньо на готовому працюючому коді. Для цього введемо будь-яку з відомих нам вулиць і натиснемо пошук. Цей експеримент пройшов успішно, вулицю знайдено. Але вже при наступному виборі на екрані монітора застигла минула вулиця. Це можна віднести до збою в програмі. Перевіривши по новому код програми і переправивши деякі команди програма запрацювала нормально, бо при наступному запуску, та перевірці вже було все гаразд. Вулиця чітко виводилась на екран монітора, та зникала при виборі наступної. Також тестувалася програма на вибір вулиці та відсортування вулиць по їх розміщенню в різних районах міста. При виборі вулиці на екран з’явилась шукана вулиця.

Дана програма також тестувалась на різних комп’ютерах з різними операційними системами класу Windows. Зокрема програма показала свою швидкодії та коректну роботу на операційній системі Windows XP Professional. Також на даних комп’ютерах було встановлено різне апаратне забезпечення, яке показувало конкретні недоліки та не доопрацювання в програмі. В результаті цього тесту, було перевірено, як програма поводить себе на різних комп’ютерах. Вона довго завантажувалась на старих машина, не коректно працювала. Або відкривалась за декілька секунд, на операційних системах, де швидкодія процесора, та оперативної пам’яті вистачало. Програма тестувалась близько ста разів. За цей час сталось багато змін в коді програми. Програма під час тестування показала певний ряд різноманітних помилок як орфографічних та логічних помилок, які були виправлені по ходу опрацювання тестування. Тестування пройшло успішно, тому можна сказати що програма повністю готова до експлуатування.



10 Інструкція з експлуатації програми



Для роботи програми комп’ютер повинен відповідати таким умовам:

Windows 9x/2000/ME/XP

Pentium III 1000MGz

256 Mb Ram

64 Mb video card

CD-ROM

260 МВ вільного місця 

Наявність мишки та клавіатури

Для того щоб встановити програму, необхідно вставити диск з програмою, потім скопіювати повністю папку на комп’ютер. Та запустити програму.

Щоб запустити програму достатньо два рази клацнути на неї, програма знаходиться в папці.

Після запуску програми користувачу потрібно спочатку вибрати одну з трьох дій: Ввести назву, вибрати із вказаних або вибрати район. Після того як користувач ввів правильну назву вулиці йому потрібно натиснути кнопку пошуку. За допомогою неї здійснюється пошук вказаної вулиці. Після чого вулицю буде показано на екран. Якщо вулиця буде введена не вірно то користувач буде повідомлений. Щоб скористатися командою перегляду району необхідно спочатку при виборі району поставити галочку для підтвердження цієї дії. Тоді в списку вибрати потрібний район і він буде завантажений. Щоб відмінити цю команду і перейти до простого сортування необхідно зняти галочку. Також за допомогою команди “нормальний розмір” яка розміщується в головному меню можна переглянути карту повністю. Якщо на карті потрібно знайти пені визначні місця наприклад такі як: театр, кінотеатр, музей та навіть просто бензозаправну, спочатку потрібно знати як воно все позначається. Тут і допоможуть умовні позначення які розміщуються в головному меню. Потрібно вибрати: головне меню “Вид” потім підпункт “Умовні позначення”. Тоді з’являться всі позначення які використовуються на карті.



11 Аналіз отриманих результатів



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

В програмі можна вибрати, ввести та відсортувати по районі вулиці.

Після введення чи вибору вулиці вона автоматично буде показана на екрані монітора, і ми можемо пересвідчитись в достовірності роботи програми. 






Рисунок 10. Вікно програми перед початком роботи.



Для вибору вулиці натиснемо:







Виберемо вулицю зі списку:





Рисунок 10 Вибір зі списку вулиці. 




Рис 11 Знайдена вулиця.



Після того як ми виберемо чи введемо вулицю вона з’явиться на екрані при умові що ви натиснете кнопку підтвердження. 

	


Висновок



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

Поставлена задача у створенні довідника по місту Хмельницькому, була виконана у повному обсязі та з додатковими завданнями, які були поставлені для кращої реалізації проекту. При перевірці працездатності програми на різних комп’ютерах не виникало ніяких проблем, вулиці завжди виводились в тому місці де було потрібно, програма працювала чітко та без помилок. При розробці даного проекту, було використано велику кількість літератури, з метою покращення своїх знань та навичок. Література використовувалась, також з метою докладнішого вивчення властивостей різних елементів. Значно покращились навики, щодо розробки програм на мові програмування Delphi.

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




Список використаної літератури:



		В. Фаронов – Система программирования Delphi;

		Глинський Я.М – Turbo Pascal\Delphi 6 – видання;

		Кэнту – Delphi для профисионалов;

		Краснов – Графика в проектах Delphi;

		Марков Є.П. – Програмированье в Delphi 7;

		Мозговой М. -Занимательное программирование.

		Григас Г. – Начала програмируванье. – М.,1987

		Грогоно П. – Програмируванье на языке паскаль.

		Спірідонов В.І. – Обчислювальна техніка і програмування.

		Глинський Я.М. – Основи інформатики та обчислювальної техніки.

		Абрамов С.А – Начала програмируванья на языке Паскаль.

		Фаронов В.В. – Delphi 5 учебный курс.

		Черняхівський В.В – Сучасна технологія візуального програмування.

		Немнюгин – Turbo Pascal.

		Климов – Pascal 7.0

		Юрий Гурский – Трюки и эффекты в Delphi 7.

		Род Стивенс – Delphi. Готовые алгоритмы.

		Виктор Пестриков, Артур Маслобоев – Delphi на примерах. 

		Михаил Фленов – Программирование в Delphi глазами хакера.




Додаток А



unit Unit1;



interface



uses

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

Dialogs, StdCtrls, ExtCtrls, ComCtrls, Grids, Menus, ToolWin, ActnMan,

ActnCtrls, ActnMenus, CheckLst, OleCtrls, AcroPDFLib_TLB, Buttons;



type

TForm1 = class(TForm)

PageControl1: TPageControl;

TabSheet1: TTabSheet;

TabSheet2: TTabSheet;

Panel1: TPanel;

ScrollBox1: TScrollBox;

Image1: TImage;

MainMenu1: TMainMenu;

N1: TMenuItem;

N5: TMenuItem;

N8: TMenuItem;

N7: TMenuItem;

N10: TMenuItem;

N14: TMenuItem;

N6: TMenuItem;

N16: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

Timer1: TTimer;

Button1: TButton;

ComboBox1: TComboBox;

Button2: TButton;

ComboBox2: TComboBox;

TreeView1: TTreeView;

N15: TMenuItem;

N17: TMenuItem;

Button3: TButton;

Label1: TLabel;

ComboBox3: TComboBox;

AcroPDF1: TAcroPDF;

RadioButton1: TRadioButton;

RadioButton2: TRadioButton;

RadioButton3: TRadioButton;

CheckBox1: TCheckBox;

Label2: TLabel;

Label3: TLabel;

N9: TMenuItem;

procedure FormCreate(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure N5Click(Sender: TObject);

procedure N7Click(Sender: TObject);

procedure Timer1Timer(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure N3Click(Sender: TObject);

procedure N10Click(Sender: TObject);

procedure N6Click(Sender: TObject);

procedure N16Click(Sender: TObject);

procedure N13Click(Sender: TObject);

procedure N4Click(Sender: TObject);

procedure TreeView1Click(Sender: TObject);

procedure ComboBox1Change(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure N17Click(Sender: TObject);

procedure ComboBox2Change(Sender: TObject);

procedure ComboBox1KeyPress(Sender: TObject; var Key: Char);

procedure ComboBox2KeyPress(Sender: TObject; var Key: Char);

procedure N15Click(Sender: TObject);

procedure ComboBox3Change(Sender: TObject);

procedure ComboBox3KeyPress(Sender: TObject; var Key: Char);

procedure Panel1Click(Sender: TObject);

procedure RadioButton1Click(Sender: TObject);

procedure RadioButton2Click(Sender: TObject);

procedure RadioButton3Click(Sender: TObject);

procedure N9Click(Sender: TObject);

procedure CheckBox1Click(Sender: TObject);



private

{ Private declarations }

public

{ Public declarations }

end;

Type Vul=Record

Name:string[35];

X,Y,X1,Y1,X2,Y2,X3,Y3:Integer;

X4,Y4,X5,Y5,X6,Y6,X7,Y7:Integer;

X8,Y8,X9,Y9,X10,Y10,X11,Y11,X12,Y12,X13,Y13:Integer; 

end;

var

Form1: TForm1;

A:array[1..313] of vul;

F:file of Vul;

an, ani: byte;

k: integer;



implementation

uses Unit2, Unit3, Unit4, Unit5;



{$R *.dfm}



procedure TForm1.FormCreate(Sender: TObject);

var i:integer;

begin

AcroPDF1.LoadFile ('Дані\Карта\Khmelnitskiy Map.pdf');

ComboBox2.Items.Add('Виставка');

ComboBox2.Items.Add('Гречани');

ComboBox2.Items.Add('Ракове');

ComboBox2.Items.Add('Лезневе');

ComboBox2.Items.Add('Дубове');

ComboBox2.Items.Add('Ружична');

ComboBox2.Items.Add('Катіон');

ComboBox2.Items.Add('Книжківці');

ComboBox2.Items.Add('Центр');

ComboBox2.Items.Add('Озерна');

Button1.Enabled:=false;

Button2.Enabled:=false;

Button3.Enabled:=false;

TreeView1.Enabled:=false;

RadioButton1.Checked:=true;

AssignFile(F, 'Дані/Вулиці/Координати вулиць.DKH');

Reset(F);

for i:=1 to 313 do begin



Read(F,A[i]);

ComboBox1.Items.Add(A[i].Name);

ComboBox3.Items.Add(A[i].Name);

end;

CloseFile(f);

Image1.Picture.LoadFromFile('Дані/Карта/Карта Хмельницького2.bmp');

Image1.AutoSize:=false;

end;



procedure TForm1.Button1Click(Sender: TObject);

var i:integer;

znaydeno: boolean;

begin

PatBlt(Image1.Canvas.Handle, 0, 0, Image1.ClientWidth, Image1.ClientHeight, WHITENESS);

znaydeno:=false;

for I:=1 to 313 do

if ComboBox3.Text=A[i].Name Then begin K:=I;

Image1.Align:=alNone;

znaydeno:=true;

ani:=1;

Image1.Picture.LoadFromFile('Дані/Карта/Карта Хмельницького2.bmp');

Image1.AutoSize:=true;

Image1.Canvas.Pen.Mode:=Pmxor;

Image1.Canvas.Pen.Color :=$af;

Image1.Canvas.Pen.Width := 6;

ScrollBox1.HorzScrollBar.Position:=a[k].X-160;

ScrollBox1.VertScrollBar.Position:=a[k].Y-380;

if znaydeno=false then begin

ShowMessage('Ведіть правильну назву вулиці!');

ComboBox3.Clear;

ComboBox3.SetFocus;

ComboBox3.SelectAll;

end;

end; 

end;



procedure TForm1.N5Click(Sender: TObject);

begin

RadioButton1.Checked:= true;

ComboBox3.SetFocus;

end;



procedure TForm1.N7Click(Sender: TObject);

begin

Halt;

end;



procedure TForm1.Timer1Timer(Sender: TObject);

begin

Image1.Canvas.Pen.Mode:=Pmxor;

if(ani=1)or(an=1) then begin

Image1.Canvas.MoveTo(a[k].x,a[k].y);

Image1.Canvas.LineTo(a[k].x1,a[k].y1);

Image1.Canvas.MoveTo(a[k].X1,a[k].y1);

Image1.Canvas.LineTo(a[k].X2,a[k].Y2);

Image1.Canvas.MoveTo(a[k].X2,a[k].y2);



Image1.Canvas.LineTo(a[k].X3,a[k].Y3);

Image1.Canvas.MoveTo(a[k].X3,a[k].y3);

Image1.Canvas.LineTo(a[k].X4,a[k].Y4);

Image1.Canvas.MoveTo(a[k].X4,a[k].y4);

Image1.Canvas.LineTo(a[k].X5,a[k].Y5);

Image1.Canvas.MoveTo(a[k].X5,a[k].y5);



Image1.Canvas.LineTo(a[k].X6,a[k].Y6);

Image1.Canvas.MoveTo(a[k].X6,a[k].y6);

Image1.Canvas.LineTo(a[k].X7,a[k].Y7);

Image1.Canvas.MoveTo(a[k].X7,a[k].y7);

Image1.Canvas.LineTo(a[k].X8,a[k].Y8);

Image1.Canvas.MoveTo(a[k].X8,a[k].y8);

Image1.Canvas.LineTo(a[k].X9,a[k].Y9);

Image1.Canvas.MoveTo(a[k].X9,a[k].y9);

Image1.Canvas.LineTo(a[k].X10,a[k].Y10);

Image1.Canvas.MoveTo(a[k].X10,a[k].y10);

Image1.Canvas.LineTo(a[k].X11,a[k].Y11);

Image1.Canvas.MoveTo(a[k].X11,a[k].y11);

Image1.Canvas.LineTo(a[k].X12,a[k].Y12);

Image1.Canvas.MoveTo(a[k].X12,a[k].y12);

Image1.Canvas.LineTo(a[k].X13,a[k].Y13);

end;

if an=0 then an:=1 else an:=0;

end;



procedure TForm1.Button2Click(Sender: TObject);

var i:integer;

begin

PatBlt(Image1.Canvas.Handle, 0, 0, Image1.ClientWidth, Image1.ClientHeight, WHITENESS);

for I:=1 to 313 do

if ComboBox1.Text=A[i].Name Then begin K:=I;

Image1.Align:=alNone;

ani:=1;

Image1.Picture.LoadFromFile('Дані/Карта/Карта Хмельницького2.bmp');

Image1.AutoSize:=true;

Image1.Canvas.Pen.Mode:=Pmxor;

Image1.Canvas.Pen.Color :=$af;

Image1.Canvas.Pen.Width := 6;

ScrollBox1.HorzScrollBar.Position:=a[k].X-160;

ScrollBox1.VertScrollBar.Position:=a[k].Y-380;

end;

end;



procedure TForm1.N3Click(Sender: TObject);

begin

Form2.ShowModal;

end;



procedure TForm1.N10Click(Sender: TObject);

begin

Image1.AutoSize:=false;

Image1.Align:=alClient;

end;



procedure TForm1.N6Click(Sender: TObject);

begin

TabSheet1.Show;

end;



procedure TForm1.N16Click(Sender: TObject);

begin

TabSheet2.Show;

end;



procedure TForm1.N13Click(Sender: TObject);

begin

RadioButton2.Checked:= true;

ComboBox1.SetFocus;

ComboBox1.DroppedDown := True

end;



procedure TForm1.N4Click(Sender: TObject);

begin

AboutBox.ShowModal;

end;



procedure TForm1.TreeView1Click(Sender: TObject);

var i:integer;

begin

PatBlt(Image1.Canvas.Handle, 0, 0, Image1.ClientWidth, Image1.ClientHeight, WHITENESS);

for I:=1 to 313 do

if TreeView1.Selected.Text=A[i].Name Then begin K:=I;

Image1.Align:=alNone;

ani:=1;

Image1.Picture.LoadFromFile('Дані/Карта/Карта Хмельницького2.bmp');

Image1.AutoSize:=true;

Image1.Canvas.Pen.Mode:=Pmxor;

Image1.Canvas.Pen.Color :=$af;

Image1.Canvas.Pen.Width := 6;

ScrollBox1.HorzScrollBar.Position:=a[k].X-160;

ScrollBox1.VertScrollBar.Position:=a[k].Y-380;

end;

end;



procedure TForm1.ComboBox1Change(Sender: TObject);

begin

if ComboBox1.Text<>'' then Button2.Enabled:=true;

end;



procedure TForm1.Button3Click(Sender: TObject);

begin

if ComboBox2.Text<>'' then

TreeView1.Enabled:=true;

if ComboBox2.Text='Виставка' then begin

TreeView1.Items.Clear;

TreeView1.Items.Add(nil,a[2].name);

TreeView1.Items.Add(nil,a[3].name);

TreeView1.Items.Add(nil,a[4].name);

TreeView1.Items.Add(nil,a[5].name);

TreeView1.Items.Add(nil,a[6].name);

TreeView1.Items.Add(nil,a[7].name);

TreeView1.Items.Add(nil,a[8].name);

TreeView1.Items.Add(nil,a[9].name);

TreeView1.Items.Add(nil,a[10].name);

TreeView1.Items.Add(nil,a[11].name);

TreeView1.Items.Add(nil,a[12].name);

TreeView1.Items.Add(nil,a[13].name);

TreeView1.Items.Add(nil,a[26].name);

TreeView1.Items.Add(nil,a[27].name);



End;

if ComboBox2.Text='Озерна' then begin

TreeView1.Items.Clear;

TreeView1.Items.Add(nil,a[14].name);

TreeView1.Items.Add(nil,a[15].name);

TreeView1.Items.Add(nil,a[16].name);

TreeView1.Items.Add(nil,a[17].name);

TreeView1.Items.Add(nil,a[18].name);

TreeView1.Items.Add(nil,a[19].name);

TreeView1.Items.Add(nil,a[20].name);

TreeView1.Items.Add(nil,a[21].name);

TreeView1.Items.Add(nil,a[22].name);

TreeView1.Items.Add(nil,a[23].name);

TreeView1.Items.Add(nil,a[24].name);

TreeView1.Items.Add(nil,a[25].name);

TreeView1.Items.Add(nil,a[28].name);

End;

if ComboBox2.Text='Лезневе' then begin

TreeView1.Items.Clear;

TreeView1.Items.Add(nil,a[29].name);

TreeView1.Items.Add(nil,a[30].name);

TreeView1.Items.Add(nil,a[31].name);

TreeView1.Items.Add(nil,a[32].name);

TreeView1.Items.Add(nil,a[33].name);

TreeView1.Items.Add(nil,a[34].name);

TreeView1.Items.Add(nil,a[35].name);

TreeView1.Items.Add(nil,a[36].name);

TreeView1.Items.Add(nil,a[37].name);

TreeView1.Items.Add(nil,a[38].name);

TreeView1.Items.Add(nil,a[39].name);

TreeView1.Items.Add(nil,a[40].name);

TreeView1.Items.Add(nil,a[41].name);

TreeView1.Items.Add(nil,a[42].name);

TreeView1.Items.Add(nil,a[43].name);

TreeView1.Items.Add(nil,a[44].name);

TreeView1.Items.Add(nil,a[45].name);

TreeView1.Items.Add(nil,a[46].name);

TreeView1.Items.Add(nil,a[47].name);

TreeView1.Items.Add(nil,a[48].name);

TreeView1.Items.Add(nil,a[49].name);

TreeView1.Items.Add(nil,a[50].name);

TreeView1.Items.Add(nil,a[51].name);

TreeView1.Items.Add(nil,a[52].name);

TreeView1.Items.Add(nil,a[53].name);

TreeView1.Items.Add(nil,a[54].name);

TreeView1.Items.Add(nil,a[55].name);

TreeView1.Items.Add(nil,a[56].name);

TreeView1.Items.Add(nil,a[57].name);

TreeView1.Items.Add(nil,a[58].name);

TreeView1.Items.Add(nil,a[59].name);

TreeView1.Items.Add(nil,a[60].name);

TreeView1.Items.Add(nil,a[61].name);

TreeView1.Items.Add(nil,a[62].name);

TreeView1.Items.Add(nil,a[63].name);

TreeView1.Items.Add(nil,a[64].name);

TreeView1.Items.Add(nil,a[65].name);

TreeView1.Items.Add(nil,a[66].name);

End;

if ComboBox2.Text='Центр' then begin

TreeView1.Items.Clear;

TreeView1.Items.Add(nil,a[67].name);



TreeView1.Items.Add(nil,a[68].name);

TreeView1.Items.Add(nil,a[69].name);

TreeView1.Items.Add(nil,a[70].name);

TreeView1.Items.Add(nil,a[71].name);

TreeView1.Items.Add(nil,a[72].name);

TreeView1.Items.Add(nil,a[73].name);

TreeView1.Items.Add(nil,a[74].name);

TreeView1.Items.Add(nil,a[75].name);

TreeView1.Items.Add(nil,a[76].name);

TreeView1.Items.Add(nil,a[77].name);

TreeView1.Items.Add(nil,a[78].name);

TreeView1.Items.Add(nil,a[79].name);

TreeView1.Items.Add(nil,a[80].name);

TreeView1.Items.Add(nil,a[81].name);

TreeView1.Items.Add(nil,a[82].name);

TreeView1.Items.Add(nil,a[83].name);

TreeView1.Items.Add(nil,a[84].name);

TreeView1.Items.Add(nil,a[85].name);

TreeView1.Items.Add(nil,a[86].name);

TreeView1.Items.Add(nil,a[98].name);

TreeView1.Items.Add(nil,a[99].name);

TreeView1.Items.Add(nil,a[100].name);

TreeView1.Items.Add(nil,a[101].name);

TreeView1.Items.Add(nil,a[102].name);

End;

if ComboBox2.Text='Ракове' then begin

TreeView1.Items.Clear;

TreeView1.Items.Add(nil,a[87].name);

TreeView1.Items.Add(nil,a[88].name);

TreeView1.Items.Add(nil,a[89].name);

TreeView1.Items.Add(nil,a[90].name);

TreeView1.Items.Add(nil,a[91].name);

TreeView1.Items.Add(nil,a[92].name);

TreeView1.Items.Add(nil,a[93].name);

TreeView1.Items.Add(nil,a[94].name);

TreeView1.Items.Add(nil,a[95].name);

TreeView1.Items.Add(nil,a[96].name);

TreeView1.Items.Add(nil,a[97].name);

TreeView1.Items.Add(nil,a[112].name);

TreeView1.Items.Add(nil,a[113].name);

TreeView1.Items.Add(nil,a[114].name);

TreeView1.Items.Add(nil,a[115].name);

TreeView1.Items.Add(nil,a[116].name);

TreeView1.Items.Add(nil,a[116].name);

TreeView1.Items.Add(nil,a[117].name);

TreeView1.Items.Add(nil,a[118].name);

TreeView1.Items.Add(nil,a[119].name);

TreeView1.Items.Add(nil,a[313].name);

TreeView1.Items.Add(nil,a[120].name);

TreeView1.Items.Add(nil,a[121].name);

TreeView1.Items.Add(nil,a[122].name);

TreeView1.Items.Add(nil,a[123].name);

TreeView1.Items.Add(nil,a[124].name);

TreeView1.Items.Add(nil,a[125].name);

TreeView1.Items.Add(nil,a[126].name);

TreeView1.Items.Add(nil,a[127].name);

TreeView1.Items.Add(nil,a[128].name);

TreeView1.Items.Add(nil,a[129].name);

TreeView1.Items.Add(nil,a[130].name);

TreeView1.Items.Add(nil,a[131].name);

TreeView1.Items.Add(nil,a[132].name);



TreeView1.Items.Add(nil,a[133].name);

TreeView1.Items.Add(nil,a[134].name);

TreeView1.Items.Add(nil,a[135].name);

TreeView1.Items.Add(nil,a[136].name);

TreeView1.Items.Add(nil,a[137].name);

TreeView1.Items.Add(nil,a[138].name);

TreeView1.Items.Add(nil,a[154].name);

TreeView1.Items.Add(nil,a[155].name);

TreeView1.Items.Add(nil,a[156].name);

TreeView1.Items.Add(nil,a[157].name);

TreeView1.Items.Add(nil,a[158].name);

TreeView1.Items.Add(nil,a[159].name);

TreeView1.Items.Add(nil,a[160].name);

TreeView1.Items.Add(nil,a[161].name);

TreeView1.Items.Add(nil,a[162].name);

TreeView1.Items.Add(nil,a[163].name);

TreeView1.Items.Add(nil,a[164].name);

TreeView1.Items.Add(nil,a[213].name);

TreeView1.Items.Add(nil,a[214].name);

TreeView1.Items.Add(nil,a[215].name);

TreeView1.Items.Add(nil,a[216].name);

TreeView1.Items.Add(nil,a[217].name);

TreeView1.Items.Add(nil,a[218].name);

TreeView1.Items.Add(nil,a[219].name);

End;

if ComboBox2.Text='Ружична' then begin

TreeView1.Items.Clear;

TreeView1.Items.Add(nil,a[165].name);

TreeView1.Items.Add(nil,a[166].name);

TreeView1.Items.Add(nil,a[167].name);

TreeView1.Items.Add(nil,a[168].name);

TreeView1.Items.Add(nil,a[169].name);

TreeView1.Items.Add(nil,a[170].name);

TreeView1.Items.Add(nil,a[171].name);

TreeView1.Items.Add(nil,a[172].name);

TreeView1.Items.Add(nil,a[173].name);

TreeView1.Items.Add(nil,a[174].name);

TreeView1.Items.Add(nil,a[175].name);

TreeView1.Items.Add(nil,a[176].name);

TreeView1.Items.Add(nil,a[177].name);

TreeView1.Items.Add(nil,a[178].name);

TreeView1.Items.Add(nil,a[179].name);

TreeView1.Items.Add(nil,a[180].name);

TreeView1.Items.Add(nil,a[181].name);

TreeView1.Items.Add(nil,a[182].name);

TreeView1.Items.Add(nil,a[183].name);

TreeView1.Items.Add(nil,a[184].name);

TreeView1.Items.Add(nil,a[185].name);

TreeView1.Items.Add(nil,a[186].name);

TreeView1.Items.Add(nil,a[187].name);

TreeView1.Items.Add(nil,a[188].name);

TreeView1.Items.Add(nil,a[189].name);

TreeView1.Items.Add(nil,a[223].name);

TreeView1.Items.Add(nil,a[224].name);

TreeView1.Items.Add(nil,a[225].name);

TreeView1.Items.Add(nil,a[226].name);

TreeView1.Items.Add(nil,a[227].name);

TreeView1.Items.Add(nil,a[228].name);

TreeView1.Items.Add(nil,a[229].name);

TreeView1.Items.Add(nil,a[230].name);

TreeView1.Items.Add(nil,a[231].name);



TreeView1.Items.Add(nil,a[232].name);

TreeView1.Items.Add(nil,a[233].name);

TreeView1.Items.Add(nil,a[234].name);

TreeView1.Items.Add(nil,a[235].name);

TreeView1.Items.Add(nil,a[236].name);

TreeView1.Items.Add(nil,a[237].name);

TreeView1.Items.Add(nil,a[238].name);

TreeView1.Items.Add(nil,a[239].name);

TreeView1.Items.Add(nil,a[240].name);

TreeView1.Items.Add(nil,a[241].name);

TreeView1.Items.Add(nil,a[242].name);

TreeView1.Items.Add(nil,a[243].name);

TreeView1.Items.Add(nil,a[244].name);

TreeView1.Items.Add(nil,a[245].name);

TreeView1.Items.Add(nil,a[246].name);

TreeView1.Items.Add(nil,a[247].name);

TreeView1.Items.Add(nil,a[248].name);

TreeView1.Items.Add(nil,a[249].name);

TreeView1.Items.Add(nil,a[250].name);

TreeView1.Items.Add(nil,a[251].name);

End;

if ComboBox2.Text='Книжківці' then begin

TreeView1.Items.Clear;

TreeView1.Items.Add(nil,a[136].name);

TreeView1.Items.Add(nil,a[139].name);

TreeView1.Items.Add(nil,a[140].name);

TreeView1.Items.Add(nil,a[141].name);

TreeView1.Items.Add(nil,a[142].name);

TreeView1.Items.Add(nil,a[143].name);

TreeView1.Items.Add(nil,a[144].name);

TreeView1.Items.Add(nil,a[145].name);

TreeView1.Items.Add(nil,a[146].name);

TreeView1.Items.Add(nil,a[147].name);

TreeView1.Items.Add(nil,a[148].name);

TreeView1.Items.Add(nil,a[149].name);

TreeView1.Items.Add(nil,a[150].name);

TreeView1.Items.Add(nil,a[151].name);

TreeView1.Items.Add(nil,a[152].name);

TreeView1.Items.Add(nil,a[153].name);

End;

if ComboBox2.Text='Дубове' then begin

TreeView1.Items.Clear;

TreeView1.Items.Add(nil,a[91].name);

TreeView1.Items.Add(nil,a[103].name);

TreeView1.Items.Add(nil,a[104].name);

TreeView1.Items.Add(nil,a[105].name);

TreeView1.Items.Add(nil,a[106].name);

TreeView1.Items.Add(nil,a[107].name);

TreeView1.Items.Add(nil,a[108].name);

TreeView1.Items.Add(nil,a[109].name);

TreeView1.Items.Add(nil,a[110].name);

TreeView1.Items.Add(nil,a[111].name);

TreeView1.Items.Add(nil,a[189].name);

TreeView1.Items.Add(nil,a[190].name);

TreeView1.Items.Add(nil,a[191].name);

TreeView1.Items.Add(nil,a[192].name);

TreeView1.Items.Add(nil,a[193].name);

TreeView1.Items.Add(nil,a[194].name);

TreeView1.Items.Add(nil,a[195].name);

TreeView1.Items.Add(nil,a[196].name);

TreeView1.Items.Add(nil,a[197].name);



TreeView1.Items.Add(nil,a[198].name);

TreeView1.Items.Add(nil,a[199].name);

TreeView1.Items.Add(nil,a[200].name);

TreeView1.Items.Add(nil,a[201].name);

TreeView1.Items.Add(nil,a[202].name);

TreeView1.Items.Add(nil,a[203].name);

TreeView1.Items.Add(nil,a[204].name);

TreeView1.Items.Add(nil,a[205].name);

TreeView1.Items.Add(nil,a[206].name);

TreeView1.Items.Add(nil,a[207].name);

TreeView1.Items.Add(nil,a[208].name);

TreeView1.Items.Add(nil,a[209].name);

TreeView1.Items.Add(nil,a[210].name);

TreeView1.Items.Add(nil,a[211].name);

TreeView1.Items.Add(nil,a[212].name);

TreeView1.Items.Add(nil,a[220].name);

TreeView1.Items.Add(nil,a[221].name);

TreeView1.Items.Add(nil,a[222].name);

End;

if ComboBox2.Text='Катіон' then begin

TreeView1.Items.Clear;

TreeView1.Items.Add(nil,a[252].name);

TreeView1.Items.Add(nil,a[253].name);

TreeView1.Items.Add(nil,a[254].name);

TreeView1.Items.Add(nil,a[255].name);

TreeView1.Items.Add(nil,a[256].name);

TreeView1.Items.Add(nil,a[257].name);

TreeView1.Items.Add(nil,a[258].name);

TreeView1.Items.Add(nil,a[259].name);

TreeView1.Items.Add(nil,a[260].name);

TreeView1.Items.Add(nil,a[261].name);

TreeView1.Items.Add(nil,a[262].name);

TreeView1.Items.Add(nil,a[263].name);

TreeView1.Items.Add(nil,a[264].name);

TreeView1.Items.Add(nil,a[265].name);

TreeView1.Items.Add(nil,a[266].name);

TreeView1.Items.Add(nil,a[267].name);

TreeView1.Items.Add(nil,a[268].name);

TreeView1.Items.Add(nil,a[269].name);

TreeView1.Items.Add(nil,a[270].name);

TreeView1.Items.Add(nil,a[271].name);

TreeView1.Items.Add(nil,a[272].name);

TreeView1.Items.Add(nil,a[273].name);

TreeView1.Items.Add(nil,a[274].name);

End;

if ComboBox2.Text='Гречани' then begin

TreeView1.Items.Clear;

TreeView1.Items.Add(nil,a[275].name);

TreeView1.Items.Add(nil,a[276].name);

TreeView1.Items.Add(nil,a[277].name);

TreeView1.Items.Add(nil,a[278].name);

TreeView1.Items.Add(nil,a[279].name);

TreeView1.Items.Add(nil,a[280].name);

TreeView1.Items.Add(nil,a[281].name);

TreeView1.Items.Add(nil,a[282].name);

TreeView1.Items.Add(nil,a[283].name);

TreeView1.Items.Add(nil,a[284].name);

TreeView1.Items.Add(nil,a[285].name);

TreeView1.Items.Add(nil,a[286].name);

TreeView1.Items.Add(nil,a[287].name);

TreeView1.Items.Add(nil,a[288].name);



TreeView1.Items.Add(nil,a[289].name);

TreeView1.Items.Add(nil,a[290].name);

TreeView1.Items.Add(nil,a[291].name);

TreeView1.Items.Add(nil,a[292].name);

TreeView1.Items.Add(nil,a[293].name);

TreeView1.Items.Add(nil,a[294].name);

TreeView1.Items.Add(nil,a[295].name);

TreeView1.Items.Add(nil,a[296].name);

TreeView1.Items.Add(nil,a[297].name);

TreeView1.Items.Add(nil,a[298].name);

TreeView1.Items.Add(nil,a[299].name);

TreeView1.Items.Add(nil,a[300].name);

TreeView1.Items.Add(nil,a[301].name);

TreeView1.Items.Add(nil,a[302].name);

TreeView1.Items.Add(nil,a[303].name);

TreeView1.Items.Add(nil,a[304].name);

TreeView1.Items.Add(nil,a[305].name);

TreeView1.Items.Add(nil,a[306].name);

TreeView1.Items.Add(nil,a[307].name);

TreeView1.Items.Add(nil,a[308].name);

TreeView1.Items.Add(nil,a[309].name);

TreeView1.Items.Add(nil,a[310].name);

TreeView1.Items.Add(nil,a[311].name);

TreeView1.Items.Add(nil,a[312].name);

end;

end;



procedure TForm1.N17Click(Sender: TObject);

begin

Form4.ShowModal;

end;



procedure TForm1.ComboBox2Change(Sender: TObject);

begin

if ComboBox2.Text<>'' then

Button3.Enabled:=true;

if CheckBox1.Checked=true then begin

Image1.AutoSize:=true;

Image1.Align:=alNone;

Image1.Picture.LoadFromFile('Дані\Райони\'+ComboBox2.Text+'.bmp');

ScrollBox1.HorzScrollBar.Position:=800;

ScrollBox1.VertScrollBar.Position:=1200;

end;

end;

procedure TForm1.ComboBox1KeyPress(Sender: TObject; var Key: Char);

begin

if key=#13 then Button2.Click;

end;



procedure TForm1.ComboBox2KeyPress(Sender: TObject; var Key: Char);

begin

if key=#13 then Button3.Click;

end;



procedure TForm1.N15Click(Sender: TObject);

begin

RadioButton3.Checked:= true;

ComboBox2.SetFocus;

ComboBox2.DroppedDown := True

end;





procedure TForm1.ComboBox3Change(Sender: TObject);

begin

if ComboBox3.Text<>'' then Button1.Enabled:=true;

end;

procedure TForm1.ComboBox3KeyPress(Sender: TObject; var Key: Char);

begin

if key=#13 then Button1.Click;

end;

procedure TForm1.Panel1Click(Sender: TObject);

begin

Image1.Canvas.Pen.Mode:=Pmxor;

end;

procedure TForm1.RadioButton1Click(Sender: TObject);

begin

if RadioButton1.Checked = true then begin

ComboBox3.Enabled :=true;

ComboBox1.Enabled :=false;

Button2.Enabled :=false;

ComboBox2.Enabled :=false;

Button3.Enabled :=false;

CheckBox1.Enabled :=false;

Label3.Enabled :=false;

end;

end;

procedure TForm1.RadioButton2Click(Sender: TObject);

begin

if RadioButton2.Checked = true then begin

ComboBox1.Enabled :=true;

ComboBox3.Enabled :=false;

Button1.Enabled :=false;

ComboBox2.Enabled :=false;

Button3.Enabled :=false;

CheckBox1.Enabled :=false;

Label3.Enabled :=false;

end;

end;

procedure TForm1.RadioButton3Click(Sender: TObject);

begin

if RadioButton3.Checked = true then begin

ComboBox1.Enabled :=false;

ComboBox3.Enabled :=false;

Button1.Enabled :=false;

Button2.Enabled :=false;

ComboBox2.Enabled :=true;

CheckBox1.Enabled :=true;

Label3.Enabled :=true;

end;

end;

procedure TForm1.N9Click(Sender: TObject);

begin

Form5.ShowModal;

end;

procedure TForm1.CheckBox1Click(Sender: TObject);

begin

if CheckBox1.Checked=true then

Button3.Enabled:=false else

Button3.Enabled:=true;

end;



end.







unit Unit2;



interface



uses

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

Dialogs, StdCtrls, ComCtrls;



type

TForm2 = class(TForm)

TreeView1: TTreeView;

Memo1: TMemo;

Button1: TButton;

procedure Button1Click(Sender: TObject);

procedure TreeView1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;



var

Form2: TForm2;



implementation



{$R *.dfm}



procedure TForm2.Button1Click(Sender: TObject);

begin

close;

end;



procedure TForm2.TreeView1Click(Sender: TObject);

begin

Memo1.Lines.LoadFromFile('Дані\Справка\'+TreeView1.Selected.Text+'.FSH');

end;

end.

unit Unit3;



interface



uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,

Buttons, ExtCtrls;



type

TAboutBox = class(TForm)

Panel1: TPanel;

ProgramIcon: TImage;

ProductName: TLabel;

Version: TLabel;

Copyright: TLabel;

OKButton: TButton;

procedure OKButtonClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }





end;



var

AboutBox: TAboutBox;



implementation



{$R *.dfm}

procedure TAboutBox.OKButtonClick(Sender: TObject);

begin

close;

end;



end.









unit Unit4;



interface



uses

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

Dialogs, StdCtrls, ExtCtrls, jpeg;



type

TForm4 = class(TForm)

Panel1: TPanel;

Button1: TButton;

ScrollBox1: TScrollBox;

Image1: TImage;

procedure Button1Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;



var

Form4: TForm4;



implementation



{$R *.dfm}



procedure TForm4.Button1Click(Sender: TObject);

begin

Close;

end;



procedure TForm4.FormCreate(Sender: TObject);

begin

Image1.Picture.LoadFromFile('Дані\Умовні позначення\Умовні позначення.jpg');

end;



end.



unit Unit5;



interface



uses

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

Dialogs, StdCtrls, ExtCtrls;



type

TForm5 = class(TForm)

Memo1: TMemo;

Panel1: TPanel;

Button1: TButton;

procedure Button1Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;



var

Form5: TForm5;



implementation



{$R *.dfm}



procedure TForm5.Button1Click(Sender: TObject);

begin

close;

end;



procedure TForm5.FormCreate(Sender: TObject);

begin

Memo1.Lines.LoadFromFile('Дані\Справка\History.FSH');

end;

end.



1