Облік зареєстрованих автомобілів в ДАІ

Введення



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

Досвід застосування ЕОМ для побудови прикладних систем обробки даних показує, що найефективнішим інструментом тут є не універсальні алгоритмічні мови високого рівня, а спеціалізовані мови для створення систем управління даними.

Метою курсової роботи є розробка програми Обліку .

Завданнями курсової роботи є:

• Знання середовища програмування Builder C;

• Знання основних принципів об'єктно-орієнтованого програмування;

• Знання мови програмування C;

• Знання класів Builder C;

• Знання компонентів Builder C;

• Уміння застосовувати основні концепції об'єктно-орієнтованого програмування;

• Вміння писати програми з застосуванням компонентів для роботи з текстом;

• Уміння створювати програми, передбачаючи можливі виняткові ситуації;

• Вміння писати програми з застосуванням компонентів для роботи зі списками, кнопками, перемикачами.


Середовище розробки C + + Builder



Середовище розробки C++ Builder

C++ Builder - програмний продукт, інструмент швидкої розробки додатків (RAD), інтегроване середовище програмування (IDE), система, використовувана програмістами для розробки програмного забезпечення на мові C++.



Історія

C++ Builder спочатку створювалася тільки для платформи Microsoft Windows. Пізні версії, Кроссплатформенную, що містять, компонентну бібліотеку Borland, підтримують і Windows і Linux.

У 2003 Borland випустила C++ BuilderX (CBX), написаний за допомогою тієї ж інфраструктури, що і JBuilder, який при цьому був мало схожий на C++ Builder або Delphi. Цей продукт призначався для розробки великих програм для великих підприємств, але комерційного успіху не досяг. У кінці 2004 року Borland оголосила, що продовжить розвиток класичного C++ Builder і об'єднає його з середовищем розробки Delphi, припинивши, таким чином, розробку C++ BuilderX.

Опісля приблизно рік після цього оголошення, Borland випустила Borland Developer Studio 2006, який включав Borland C++ Builder 2006, що пропонував поліпшене управління конфігурацією і відладкою. Borland Developer Studio 2006 - єдиний повноцінний комплект, Delphi, що містить, C++Builder і C#Builder.

У 2007 CodeGear випустила C++ Builder 2007, в якому реалізувала повну підтримку API Microsoft Windows Vista, збільшила повноту відповідності стандарту ANSI C++, збільшила швидкість компіляції і зборки до 500 %, включила підтримку MSBuild, архітектури баз даних DBX4 і "VCL для Web", поддеживающий AJAX. Підтримка API Microsoft Windows Vista включила додатки, спочатку оформлені в стилі Vista, і природну підтримку VCL для Aero і Vista Desktop. CodeGear RAD Studio 2007 містить C++ Builder 2007 і Delphi. Також в 2007 CodeGear "воскресила" марку "Turbo" і випустила дві "Turbo" версії C++ Builder : Turbo C++ Professional і Turbo C++ Explorer (безкоштовний), заснованих на Borland C++ Builder 2006.

У кінці 2008 року компанія CodeGear випустила новий

Раніше повідомлялося, що наступна версія, CodeGear C++Builder (кодове ім'я "Commodore"), матиме підтримку x86 - 64 і можливістю створювати машинний x86 - 64 код. Проте в 2010 році до складу RAD Studio XE включена версія C++ Builder XE без цієї функціональності.



Інтерфейс





Рис.1.1 Середовище розробки C + + Builder


Цей інтерфейс називається середовищем швидкої розробки додатків RAD, скорочення від англійських слів Rapid Application Development. Таку назву цей інтерфейс дістав за те, що створення програми в нім зводиться в основному до простого конструювання вікна майбутньої програми з готових кубиків, а велику частину стандартних і рутинних операцій за людину виконує комп'ютер. Наприклад, комп'ютер створює автоматично заготівлю тексту програми для функцій обробки подій.

C++ Builder є SDI -приложение, головне вікно якого містить інструментальну панель (ліворуч), що настроюється, і палітру компонентів (справа). Окрім цього, за умовчанням при запуску C++ Builder з'являються вікно інспектора об'єктів (ліворуч) і форма нового застосування (справа). Під вікном форми додатка знаходиться вікно редактора коду. 

Форми є основою додатків C++ Builder. Створення призначеного для користувача інтерфейсу додатка полягає в додаванні у вікно форми елементів об'єктів C++ Builder, званих компонентами. Компоненти C++ Builder розташовуються на палітрі компонентів, виконаній у вигляді багатосторінкового блокнота. Важлива особливість C++ Builder полягає в тому, що він дозволяє створювати власні компоненти і настроювати палітру компонентів, а також створювати різні версії палітри компонентів для різних проектів. 



Компоненти C Builder

Компоненти розділяються на видимі (візуальні) і невидимі (невізуальні). Візуальні компоненти з'являються під час виконання точно так, як і під час проектування. Прикладами є кнопки і редаговані поля. Невізуальні компоненти з'являються під час проектування як піктограми на формі. Вони ніколи не видно під час виконання, але мають певну функціональність (наприклад, забезпечують доступ до даних, викликають стандартні діалоги Windows та ін.) 

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

Кожен компонент C++ Builder має три різновиди характеристик : властивості, події і методи. 

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

Усі візуальні компоненти, з яких будується будь-яке застосування, розміщуються на палітрі компонентів, що складається із закладок. Закладки об'єднують компоненти по групах. Перелік закладок з описом складу компонентів, які вони включають, приведений нижче.

Standard	 Стандартна. Містить найбільш часто використовувані компоненти

 Additional	 Додаткова. Містить доповнення компонентів до стандартної закладки

 Win32	 Містить 32-бітові компоненти в стилі Windows

 System	 Системна. Містить такі компоненти, як таймер, вікно для малювання, програвач та ін.

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

 Data Controls	 Управління даними. Компоненти відображення і редагування даних dbExpress	 Зв'язок з даними з використанням мови баз даних SQL

 DataSnap	 Компоненти для зв'язку з сервером додатків при побудові багатопотокових застосувань, що працюють з даними

 BDE	 Доступ до даних через Borland Database Engine (BDE)

 ADO	 Зв'язок з базами даних через Active Data Objects (ADO) - безліч компонентів ActiveX, що використовують для доступу до інформації баз даних Microsoft OLE DB

 InterBase	 Прямий зв'язок з Interbase, минувши Borland Database Engine і Active Data Objects

 WebServices	 Компоненти клієнтських Internet застосувань, що використовують доступ до служб Web за допомогою SOAP

 InternetExpress	 Побудова додатків Internet Express - одночасно додатків Web сервера і клієнта баз даних з паралельними потоками

 Internet	 Компоненти для створення Web серверів

 WebSnap	 Компоненти для створення Web серверів, що містять складні сторінки, керовані даними

 FastNet	 Різні протоколи доступу до Internet

 Decision Cube	 Компоненти для багатовимірного аналізу даних

 QReport	 Компоненти для підготовки звітів (діаграм, графіків і тому подібне)

 Dialogs	 Діалоги. Містить системні діалоги типу "Відкрити файл", "Закрити файл" і тому подібне

 Win 3.1	 Windows 3.1. Містить компоненти в стилі Windows 3.1

 Samples	 Зразки. Містить компоненти побудови графіка, календаря, вибору кольору та ін.

 ActiveX	 Містить деякі компоненти ActiveX

 COM+	 Містить компонент, що дає доступ до каталогу СОМ+. що містить дані по конфігурації З

Тепер розглянемо призначення найбільш часто використовуваних компонентів. З деякими з них ми вже познайомилися раніше. Почнемо знайомство із закладки Standard





Компоненти Standard 

На цій закладці розташовуються компоненти (Рис. 1), за допомогою яких відбувається підключення до програми стандартних інтерфейсних елементів, наявних в усіх версіях операційної системи Windows. Розглянемо ці компоненти але порядку зліва направо.

Компонент Frames (кадр) призначений для створення контейнера (вікна) для розміщення інших компонентів. Цей компонент дуже схожий на форму Form. Для розміщення цього компонента на формі необхідно перший раз створити його за допомогою команд File ->New ->Frame. Компонент Frame перший раз має бути створений через головне меню, оскільки являється слюжным. Після його створення або створення декількох різних компонентів можна користуватися стандартним способом розміщення їх на формі шляхом вибору наявних фреймів в списку, що розкривається. Для практики створіть компонент Frame2 за допомогою команди File ->New ->Frame, a потім перейдіть на форму і клацніть двічі але компоненту Frames на закладці Standard панелі візуальних компонентів. Перед вами повинне відкритися вікно (Рис. 3), з якого можна вибрати компонент Frame2.

Компонент MainMenu (головне меню) призначений для створення головного меню програми.

Короткі описи деяких компонентів. 

PopupMenu (спливаюче меню) призначений для створення спливаючого меню деяких компонентів. Зазвичай за допомогою цього компонента створюється контекстне меню.

Label (етикетка) створює на формі текстову мітку або напис.

Edit (редагування) створює на формі поле для редагування текстового рядка.

Memo відображує на формі поле для редагування безлічі текстових рядків. Зазвичай служить для створення редакторів і полів, для виведення блоків даних.

Button (кнопка) є найпоширенішим компонентом. Служить для створення в додатку різних прямокутних кнопок з текстовим написом в одній строчці.

Checkbox (осередок стану) дозволяє створювати на формі додатка осередок з двома станами (без галочки і з галочкою) і рядком назви. Клацання лівою кнопкою мыш

RadioGroup (група радиокноиок) дозволяє створювати на формі контейнер у вигляді прямокутної рамки для об'єднання групи взаємовиключних радіокнопок.

Panel (панель) створює порожню область, на якій можна розмістити інші компоненти. Як правило використовується для створення панелі інструментів в програмі.

Action List (список дій) здійснює управління взаємодією між інтерфейсними елементами і логікою програми. На Рис. 4 приведено вікно форми, на якій розташовані усі перераховані вище компоненти в порядку їх опису зліва направо і зверху вниз, починаючи з MainMenu.





Компоненти Addition

Компоненти, розташовані на закладці Addition, призначені для включення в програму додаткових інтерфейсних елементів, за допомогою яких можна створити зручніший і дружній інтерфейс програми.







Розглянемо компоненти, розташовані на цій закладці.

BitBtn (графічна кнопка) служить для створення на формі додатка кнопки із зображенням і написом.

SpeedButton (швидка кнопка) дозволяє створити на формі кнопку із зображенням без напису. Знаком нам з панелі швидких кнопок.

MaskEdit (форматоване введення) призначений для створення прямокутного поля введення даних в спеціально заданому форматі. Дозволяє перевірити коректність даних, що вводяться, за допомогою маски.

StringGrid (строкова таблиця) служить для створення таблиці (сітки), що складається з текстових рядків.

DrawGrid (графічна таблиця) створює на формі двовимірну таблицю для відображення графічних даних.

Image (образ) призначений для створення на формі невидимого контейнера, в який можна помістити один графічний файл з бітовим чином, піктограмою або метафайл.

Shape (фігура) дозволяє малювати на формі прості геометричні фігури, такі як коло, квадрат, еліпс або прямокутник при зміні властивості Shape. Допускає зміна кольору фігур і їх штрихування при зміні властивостей Color 

(колір) і Style (стиль) групи Brush (кисть).

Bevel (скіс) створює об'ємні рамки для різних груп об'єктів. Служить тільки для обрамлення і не дозволяє виконувати програмну функцію.

ScrollBox (контейнер прокрутки) дозволяє створювати контейнер для об'єктів. Автоматично забезпечується лінійками прокрутки, якщо поміщений в нього об'єкт перевищує розміри самого контейнера на екрані.

ChecklistBox (список з осередками) відображує список елементів, у кожного з яких є власний осередок стану.

Splitter (роздільник) розділяє робочу область програми на дві частини змінюваної ширини і дозволяє міняти їх розміри під час роботи програми.

StaticText (статичний текст) створює на формі текстовий рядок з деякими можливостями її оформлення.

Chart (діаграма) призначений для створення і виводу на друк багатоколірних графіків і діаграм.



Компоненты Win32





Компоненти, розташовані на закладці Win32, забезпечують підключення до програми інтерфейсних елементів, використовуваних в 32-розрядних версіях операційної системи Windows.

Використання цих компонентів дозволяє надати програмі сучасному і професійному вигляду. Розглянемо основні компоненти цієї закладки.

TabControl (управління табуляцією) служить для створення закладок, що перекривають один одного, і інтерфейсів в стилі палітри компонентів.

PageControl (управління сторінками) створює на формі контейнер для розміщення дочірніх сторінок програми. Дозволяє під час роботи програми змінювати її інтерфейс, перегортаючи дочірні сторінки на головній формі.

Image List (список образів) створює на формі невидимий контейнер для набору графічних зображень однакового розміру. Дозволяє вибирати зображення із списку.

RichEdit (збагачений редактор) дозволяє створювати редактор з готовим набором функцій, властивих більшості редакторів.

TrackBar (доріжка із смужками) створює на формі шкалу з мітками і регулювальником поточного положення. Застосовується в програмі як регулювальник гучності звуку, 

регулювальник розміру зображення і тому подібне

Progress Bar {індикатор прогресу) створює на формі прямокутний індикатор для відображення процесу виконання довгих процедур в програмі (копіювання, пошуку і тому подібне).

UpDown (вгору-вниз) служить для створення інтерфейсних елементів з можливістю збільшення або зменшення якого-небудь значення за допомогою кнопок цього компонента "вгору" і "вниз".

HotKey (гаряча клавіша) забезпечує можливість створення користувачем "гарячих" клавіш, що визначають швидкий доступ до розділів меню.

Animate (аніматор) створює на формі невидимий контейнер для відтворення відеозаписів у форматі avi.

DataTimePicker (збирач дати і часу) створює в програмі інтерфейс для введення дати і часу.

MonthCalendar (місячний календар) розміщує на формі календар з відображенням усіх днів місяця і можливістю перегортання місяців і коригування дати тек

Компоненти System







Компоненти закладки System забезпечують підключення до програми спеціальних елементів управління і елементи міжпрограмного інтерфейсу.

Розглянемо розташовані на цій закладці компоненти.

- Timer (таймер) призначений для створення невидимого на формі елементу, за допомогою якого можна відстежувати інтервали часу в програмі. Цим компонентом ми вже користувалися в програмі timedate.

- PaintBox (рамка малювання) створює на формі елемент, на якому можна малювати.

- MediaPlayer (багатофункціональний програвач) створює на формі панель для програвання файлів з різними форматами і управління пристроями мультимедіа. За допомогою його можна управляти програвачем компакт-дисків, звуковим адаптером і т. д.

- OleContainer (контейнер OLE) реалізує в програмі механізм впровадження і зв'язування об'єктів OLE (Object Linking and Embedding - зв'язування і вбудовування об'єктів)} за допомогою якого можна передавати дані між різними програмами в середовищі Windows.

- DdeClientConv (клієнт DDE) реалізує в програмі механізм динамічного обміну даними DDE (Dynamical Data Exchange), що є розширенням операційної системи Windows. Цей механізм призначений для передачі даних від однієї програми (сервера), до іншої - приймачу (клієнтові).

- DdeClientltem (елемент клієнта даних DDE) визначає елемент динамічного обміну і реалізує в програмі механізм динамічного обміну даними між клієнтами.

- DdeServerConv (сервер DDE) встановлює режим динамічного обміну між програмами сервера DDE.

- DdeServerltem (елемент даних сервера DDE) визначає режим динамічного обміну даними сервера DDE.



Компоненти Dialog





Компоненти закладки Dialog дозволяють створювати діалоги з користувачем програми.

Діалоги надають програмі гнучкість і дозволяють користувачеві маніпулювати об'єктами програми під час її роботи. Закладка містить десять компонентів стандартних діалогів.

- OpenDialog (діалог відкриття) дозволяє створити в програмі діалог відкривання файлів. Цей діалог має можливість установки фільтрів на ім'я і розширення файлів, що відкриваються.

- SaveDialog (діалог збереження) створює в програмі діалог з можливістю вибору в програмі імені файлу для збереження. Цей діалог зазвичай використовується в зв'язці з компонентом OpenDialog.

- OpenPictureDialog (діалог відкриття малюнка) призначений для створення діалогів відкриття файлів з графічним зображенням. Він відрізняється від компонента OpenDialog можливістю попереднього перегляду файлу зображення безпосередньо у вікні діалогу.

- SavePict are Dialog (діалог збереження малюнка) створює діалог збереження файлу із зображенням. Так само, як і OpenPictureDialog, має можливістю попередньою перегляду файлу зображення безпосередньо у вікні діалогу.

- FontDialog (діалог вибору шрифту) надає можливість створення діалогу для вибору шрифту тексту в програмі.

- ColorDialog (діалог вибору кольору) призначений для створення діалогу для вибору кольору з палітри кольорів Windows. Отриманий числовий параметр кольори після цього можна передати будь-якому компоненту, що має властивість Color.

- PrintDialog (діалог вибору принтера) дозволяє організувати в програмі діалог вибору друкуючого пристрою з числа встановлених на комп'ютері. Крім того, цей діалог дозволить задати число копій, вибрати або задати діапазон друкованих сторінок і тому подібне

- PrinterSetupDialog (діалог установки принтера) створює в програмі діалог налаштування параметрів друкуючого пристрою, до яких належать вибір типу паперу і її орієнтація, параметри відображення графіки і т. д.

- FindDialog (діалог пошуку) відкриває в програмі діалог пошуку тек



Компоненти Samples







Компоненти закладки Samples є прикладами компонентів для управління програмою.

Користувач має можливість створювати власні компоненти, які будуть збожеволіти на цій закладці. Оскільки це усього лише приклади, вони забезпечені в Borland C++ Builder 6 скороченою документацією. Розглянемо деякі компоненти цієї закладки.

- Tray Icon (ікона піддону) дозволяє згортати програму в праве підвальне вікно, що має системну назву tray (піддон).

- Performance Graph (графік виконання) служить для наочного відображення використовуваних ресурсів комп'ютера.

- CSpinButton (кнопка обертання) використовується для створення кнопок-лічильників.

- CSpinEdit (редактор обертання) застосовується для створення вікна редагування в комбінації з кнопкою-лічильником.

- CColorGrid (кольорова сітка) служить для створення таблиці кольорів, в якій користувач може вибирати необхідний колір.

- CGauge (вимірник) призначений для відображення зміни якої-небудь змінної в програмі.

- CDirectory Outline (схема каталогу) використовується для відображення структури каталогів вибраного диска.

- CCalendar (календар) застосовується для відображення календаря На вказаний місяць в стандартному форматі.

- Pie (сектор) використовується для створення індикатора ходу процесу у вигляді секторної діаграми. Має вбудований редактор Edit Angles для зміни кутів сектора, який викликається через контекстне меню компонента.



Компоненти Office2k







Компоненти закладки Office2k дозволяють інтегрувати додатки з програмами з пакету Microsoft Office.

Розглянемо призначення компонентів цієї закладки.

Перші п'ять компонентів дозволяють працювати з документами, створеними у форматі Microsoft Word. Вони управляють шрифтами і форматуванням документу, а також визначають режим динамічного обміну даними (DDE) сервера.

Наступні три компоненти дозволяють впровадити в додаток можливість створення презентацій Microsoft Power Point.

За ними йде група компонентів, що дозволяє впроваджувати в додаток сервісні функції поштових програм.

Потім слідує група компонентів, призначена для роботи з електронними таблицями Microsoft Excel. Крім того, компонент ExcelChart цієї групи дозволяє створювати в програмі спеціальні діаграми.

Далі на закладці слідують компоненти, за допомогою яких виконується робота з базами даних Microsoft Access. Компоненти цієї групи розділені за призначенням. Частина з них відповідає безпосередньо за роботу з даними, а інша частина за створення інструментів операції даними.


Компоненти Data Access







Компоненти закладки Data Access служать для створення в додатку елементів управління доступом до баз даних.

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



Компоненти Data Control







Компоненти закладки Data Control створюють спеціальні елементи управління базами даних, доступних користувачеві з додатка.

Компоненти цієї закладки дозволяють створювати в додатку інтерфейси баз даних. Це можуть бути поля для редагування бази даних тексту, списків, малюнків і тому подібне



Компоненти Internet Express







Компоненти закладки Internet Express дозволяють здійснити побудову додатків з архітектурою клієнт-сервер, які діють по протоколах TCP/IP і HTTP.

Крім того, вони дозволяють створити розподілене мережеве застосування, WEB -сервер, який виступатиме в ролі клієнтського додатка MIDAS (Multi - tier Distributed Application Services - багаторівневий сервіс розподілених застосувань). Це технологія" розроблена компанією Inprise/Borland для створення і експлуатації надійних високопродуктивних розподілених систем на основі багатоланкової архітектури.

Компонент XML Broker (XML брокер) представляє пакети даних від постачальника сервісного застосування з кодуванням HML.

Компонент IneiXPage Producer (виробник Інтернет-сторінок) дозволяє згенерувати сторінку HTML з інформацією, отриманою від сервісного додатка MIDAS.



Компоненти Internet







Компоненти закладки Internet забезпечують підключення до програми спеціальних елементів для створення клієнтських і серверних застосувань з протоколами TCP/IP і HTTP.

Компонент ClientSockets (клієнт підключень) дозволяє створювати додатка для клієнтів мережевого підключення по протоколу TCP/IP.

Компонент ServerSockets (сервер підключень) перетворює додаток на сервер TCP/IP. Цей сервер дозволяє контролювати певний порт на предмет розпізнавання запитів і встановлення з'єднань.

Як видно з опису компонентів, середовище розробки Borland C++ Builder 6 дозволяє створювати програми найрізноманітнішого призначення в багатьох сферах комп'ютерних технологій.


Події

Сторінка подій (Events) інспектора об'єктів показує список подій, розпізнаваних компонентом (програмування для операційних систем з графічним призначеним для користувача інтерфейсом, зокрема, для Windows 95 або Windows NT пре вважає опис реакції додатка на ті або інші події, а сама операційна система займається постійним опитуванням комп'ютера з метою виявлення настання якої-небудь події). Кожен компонент має свій власний набір обробників подій. У C++ Builder слід писати функції, звані обробниками подій, і зв'язувати події з цими функціями. Створюючи обробник тієї або іншої події, ви доручаєте програмі виконати написану функцію, якщо ця подія станеться. 

Для того, щоб додати обробник подій, треба вибрати на формі за допомогою миші компонент, якому потрібний обробник подій, потім відкрити сторінку подій інспектора об'єктів і двічі клацнути лівою клавішею миші на колонці значень поряд з подією, щоб змусити C++ Builder згенерувати прототип обробника подій і показати його в редакторові коду. При цьому автоматично генерується текст порожньої функції, і редактор відкривається в тому місці, де слід вводити код. Курсор позиціонується усередині операторних дужок { .. }. Далі треба ввести код, який повинен виконувати

Методи

Метод є функцією, яка пов'язана з компонентом, і яка оголошується як частина об'єкту. Створюючи обробники подій, можна викликати методи, використовуючи наступну нотацію: ->, наприклад: 

Edit1 ->Show();

Відмітимо, що при створенні форми пов'язані з нею модуль і заголовний файл з розширенням *.h генеруються обов'язково, тоді як при створенні нового модуля він не зобов'язаний бути пов'язаний з формою (наприклад, якщо в нім знаходяться процедури розрахунків). Імена форми і модуля можна змінити, причому бажано зробити це відразу після створення, поки на них не з'явилося багато посилань в інших формах і модулях.

Менеджер проектів

Файли, що утворюють додаток - форми і модулі - зібрані в проект. Менеджер проектів показує списки файлів і модулів програми і дозволяє здійснювати навігацію між ними. Можна викликати менеджер проектів, вибравши пункт меню View / Project Manager. За замовчуванням знову створений проект отримує ім'я Project1.cpp. 





Рис.1.5 Менеджер проектів



За умовчанням проект спочатку містить файли для однієї форми і вихідного коду одного модуля. Однак більшість проектів містять кілька форм і модулів. Щоб додати модуль або форму до проекту, потрібно клацнути правою кнопкою миші і вибрати пункт New Form з контекстного меню. Можна також додавати існуючі форми і модулі до проекту, використовуючи кнопку Add контекстного меню менеджера проектів і обираючи модуль або форму, яку потрібно додати. Форми і модулі можна видалити в будь-який момент протягом розробки проекту. Однак, через те, що форма пов'язана завжди з модулем, не можна видалити одне без видалення іншого, за винятком випадку, коли модуль не має зв'язку з формою. Видалити модуль з проекту можна, використовуючи кнопку Remove менеджера проектів.

Якщо вибрати кнопку Options у менеджері проектів, відкриється діалогова панель опцій проекту, в якій можна вибрати головну форму додатку, визначити, які форми будуть створюватися динамічно, які параметри компіляції модулів (в тому числі створених в Delphi 2.0, так як C Builder може включати їх в проекти) та компонування. 





Рис.1.6 Установка опцій проекту



Важливим елементом середовища розробки C Builder є контекстне меню, що з'являється при натисканні на праву клавішу миші і пропонує швидкий доступ до найбільш часто використовуваних команд.

Зрозуміло, C Builder володіє вбудованою системою контекстно-залежної допомоги, доступної для будь-якого елемента інтерфейсу і є великим джерелом довідкової інформації про C Builder. 



Графічні компоненти

Операційна система Windows надає розробникам додатку могутні засоби Інтерфейсу Графічних Пристроїв GDI (Graphics Device Interface) для побудови графічних зображень незалежно від типу використовуваного пристрою виводу. На жаль, GDI обтяжує програмістів безліччю додаткових дій (зокрема, з управління системними ресурсами), які відволікають розробника від його основного завдання - створення графіки.

C Builder бере на себе всю допоміжну роботу GDI, звільняючи розробників від непродуктивного програмування з пошуком загублених дескрипторів зображень і не звільнених ресурсів пам'яті. Це зовсім не означає, що пряме звернення додатків до окремих функцій Windows GDI забороняється - ви завжди зможете при необхідності викликати їх. Однак, інкапсуляція графічних функцій Windows візуальними компонентами є більш перспективну методику створення графіки у вашому додатку.

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



Підтримка графіки в C Builder

C Builder інкапсулює функції Windows GDI на різних рівнях. Найбільш важливим тут є спосіб, за допомогою якого графічні компоненти представляють свої зображення на екрані монітора. При прямому виклику функції GDI необхідно передавати їм дескриптор контексту пристрою (device context handle), який задає вибрані вами знаряддя малювання - пір'я, кисті ц шрифти. Після завершення роботи з графічними зображеннями, ви зобов'язані відновити контекст пристрою в початковий стан і тільки потім звільнитися від нього.

Замість того, щоб змушувати вас працювати з графікою на такому рівні деталізації, C Builder надає вам простий і завершений інтерфейс за допомогою властивості Canvas (Канва) графічних компонент. Це властивість про-ініціалізує правильний контекст пристрою і звільнить його в потрібний час, коли ви припините малювання. За аналогією з функціями Windows GDI канва має вкладені властивості, що представляють характеристики пера, кисті та шрифту.

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

Одна з переваг, які проявляє C Builder при роботі з графікою,-це використання кешованої пам'яті для графічних ресурсів системи. Якщо ваша програма повторно створює, використовує і звільняє, скажімо, перо деякого конкретного виду, вам доводиться повторювати ці кроки кожен раз, коли ви використовуєте таке перо. Оскільки C Builder використовує кеш-пам'ять для зберігання графічних ресурсів, збільшується ймовірність, що часто вживане знаряддя малювання буде повторно вибиратися з кеш-пам'яті, а не відтворюватись кожен раз заново. Очевидно, що внаслідок цього помітно зросте ефективність повторюваних операцій вашого графічного додатку.



Робота з базами даних у Borland C Builder.

Використовуючи Borland C Builder, можна створити програми, що працюють як з однокористувацький базами даних (БД), так і з серверними СУБД, такими як Oracle, Sybase, Informix, Interbase, MS SQL Server, DB2, а також з ODBC-джерелами. Можливості C Builder, пов'язані зі створенням додатків, що використовують бази даних, досить великі для того, щоб описати їх в одній статті. Тому сьогодні ми розглянемо лише найпростіші можливості роботи з таблицями баз даних.

Набір даних у C Builder - це об'єкт, який складається з набору записів, кожна з яких, у свою чергу, складається з полів, і покажчика поточного запису. Набір даних може мати повну відповідність з реально існуючої таблицею або бути результатом запиту, він може бути частиною таблиці або об'єднувати між собою декілька таблиць. Набір даних у C Builder є нащадком абстрактного класу TDataSet (абстрактний клас - це клас, від якого можна породжувати інші класи, але не можна створити екземпляр об'єкта даного класу). Наприклад, класи TQuery, TTable і TStoredProc, що містяться на сторінці палітри компонентів Data Access, - спадкоємці TDBDataSet, який, у свою чергу, є спадкоємцем TDataSet. TDataSet містить абстракції, необхідні для безпосереднього управління таблицями або запитами, забезпечуючи засоби для того, щоб відкрити таблицю або виконати запит і переміщатися по рядках.


2. Склад і опис компонентів введення і відображення числової інформації, дат і часу



Введення і відображення дат і часу — компоненти DateTimePicker. З цих компонентів найбільш зручним є DateTimePicker. Компонент дуже ефектний за рахунок появи календаря, що дає (іноді навіть дуже ефектний для строго| оформленого додатку і забезпечує безпомилкове з погляду синтаксису введення дат і вре-мени|. Його властивість Kind| визначає режим роботи компоненту: dtkDate| — введення дати, dtkTime| — введення часу. 

При введенні дат можна задати властивість DateMode| рівним dmComboBox| — наявність випадного календаря, або рівним dmUpDown| — наявність кнопок збільшення і зменшення, що нагадують ті, які використовуються в описаних раніше компонентах UpDown| і CSpinEdit|. Але|та| в даному випадку за допомогою кнопок користувач може незалежно встановлювати число, місяць і рік. Формат представлення дат визначається свойст-| вом| DateFormat, яке може набувати значень dfShort| — короткий формат (наприклад, «08.03.02»), або dfLong| — повний|цілковитий| формат (наприклад, «8 Березня 2002г|.»). 

Огляд компонентів бібліотеки C++Builder| 173 

Значення дати за умовчанням можна задати в Інспекторові Об'єктів через властивість Date|. Ця ж властивість читається для визначення заданої користувачем дати. При читанні Date| треба враховувати тип цієї властивості — TDateTime|, що є числом з плаваючою комою, ціла частина| якого містить число днів, відлічене від деякого початку календаря, а дробова частина дорівнює частині 24-годинного дня, тобто характеризує час і не відноситься до дати. Початком календаря вважає дата 12/30/1899 00 годин. 

Для перетворення значення властивості Date| в рядок можна скористатися функцією DateToStr. Наприклад, оператор 

Memol->Lines->Add|("Дата: " + DateToStr|(DateTimePickerl->Date|)); 

додасть у вікно Memol рядок вигляду "Дата: 08.03.00". 

При введенні дат можна задати значення властивостей MaxDate| і MinDate, визначаючих відповідно максимальну і мінімальну дату, яку може задати користувач. 

У режимі введення часу введене користувачем значення можна знайти у властивості Time, тип якої — той же розглянутий вище TDateTime. 

Перетворити час в рядок можна функцією TimeToStr. 

Компонент MonthCalendar схожий на компонент DateTimePicker|, що працює у режимі введення дат. Правда, в компоненті MonthCalendar| передбачені деякі додаткові можливості: можна допустити множинний вибір дат в деякому діапазоні (властивість MultiSelect|), можна указувати в календарі номера тижнів з початку року (властивість WeekNumbers), перебудовувати календар, задаючи перший день кожного тижня (властивість FirstDayOfWeek) і тому подібне Для деяких офісних застосувань все це досить зручно. Компонент є менш барвистим і більш буденно оформлений календар на один місяць. Замість властивості Date в нім передбачені окремі властивості Year| — рік, Month| — місяць, Day — день. Все це цілі числа, з|із| якими іноді зручніше мати справу, чим з типом TDateTime|. Перед відображенням на екрані або в процесі проектування треба задати значення Month| і Year, щоб компонент відобразив| календар на вказаний місяць вказаного року. В тім, якщо вам треба мати календар на поточний місяць, треба встановити 

у true| значення властивості UseCurrentDate| (встановлено за умовчанням). В цьому випадку за умовчанням буде показаний календар на поточний місяць з| виділеним в нім поточним днем. Властивість StartOfWeek| задає день, з якого починається тиждень. За умовчанням задане 0 — воскресіння, як це прийнято в західних календарях. 


3.Технічне завдання



Програма обліку зареєстрованих автомобілів в ДАІ.

Введення.

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

Програма з обліку зареєстрованих автомобілів в ДАІ, представляє собою, перехід від паперових носіїв інформації до електронних.

Система обліку зареєстрованих автомобілів значно допоможе працівникам ДАІ з обліку, аналізу та обробці даних о зареєстораних автомобілях.



3.1 Підстави для розробки



Програма розробляється на основі завдання до курсової роботи четвертого курсу з дисципліни «Системне програмування», за навчальною програмою і пройденого матеріалу.



3.2 Призначення



Програма призначена для спрощення обліку зареєстрованих автомобілів в ДАІ. Програма не вимагає особливих навичок з володіння персональним комп'ютером.


3.3 Вимоги до програми або програмного виробу



3.3.1.Вимоги до функціональних характеристик

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

Введення текстових і числових даних і зберігання їх в системі;

Видалення елементів з бази;

Перегляд вже внесеної інформації;

Можливість збереження інформації у файлі

Можливість завантаження інформації з файлів



Вихідні дані:

Поля для введення текстової та числової інформації

Кнопки для здійснення необхідних операцій

Вимоги до складу і параметрів технічних засобів

Система повинна працювати на IBM сумісних персональних комп'ютерах.

Мінімальна конфігурація:

Процесор: AMD K6 і вище

Intel Pentium 2 і вище

Обсяг ОЗУ ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 64 МБ і більше

Обсяг відеопам'яті ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. 32 МБ і більше



3.3.3 Вимоги до інформаційної та програмної сумісності

Система повинна працювати під управлінням операційних систем сімейства Win 32/64 (Windows 95, Windows 98, Windows 2000, Windows XP, Windows Vista, Windows Seven.).


3.4 Вимоги до програмної документації



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


Опис програми



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



4.1 Інтерфейс програми





Рис. 4.1.1 Інтерфейс програми.



4.2 Додавання даних



Додавання даних відбувається при виборі в головному меню пункту «Открыть» і відкриття вікна «Открыть файл» (Рис.4.2.1) і з допомогоюі кнопки «Добавить» (Рис.4.2.2).



Рис. 4.2.1 Вікно «Открыть файл».





Рис.4.2.2 Додавання даних.


Пошук даних



Для пошуку даних необхідно внести шукану інформацію в по шукачі (Рис. 4.3.1).



	Рис. 4.3.1 Пошук даних



4.4 Збереження даних



Зберегти дані можна за допомогою кнопки «Сохранить» (Рис. 4.4.1).



Рис. 4.4.1 Збереження даних




Висновок



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

	При створенні цього програмного забезпечення була виконана наступна мета: створити додаток, що дозволяє істотно спростити введення обліку зареєстрованих автомобілів в ДАІ. 

	Розроблена програма зберігає дані у файл. Крім цього, у програмі організований пошук.

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

	 Створений додаток дозволяє автоматизувати роботу співробітників ДАІ.


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



Архангельський А.С. Borland C builder.

Джаррод Холінгворт, Боб Сворт, Марк Кешмен, Поль Густавсон Borland C + + Builder 6. Керівництво розробника = Borland C + + Builder 6 Developer's Guide. - М.: «Вільямс», 2004. - С. 976. - ISBN 0-672-32480-6

Джерод Холлінгворс, Ден Баттерфілд, Боб свот C + + Builder 5. Керівництво розробника = C + + Builder 5 Developer's Guide. - М.: «Діалектика», 2001. - С. 884. - ISBN 0-672-31972-1

 Краснов М. Графіка в проектах Borland C builder. - Санкт-Петербург: БХВ, 1998. - 356 с.

 Проценко С. С., Чаленко П. Й., Ставровській А. Б. Техніка програмування на мові Сі. - До: Лебідь, 1993 - 224 с.

 Шелест С. Д. Програмування: материал технічної інформації. Санкт-Петербург: БХВ, 2002. - 592 с.

http://www.compdoc.ru/prog/builder/builder/3.shtml

http://citforum.ru/programming/application/cb2.shtml

http://cbuilder.ru/


Додаток



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

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "Unit1.h"

#include "Unit3.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

float p=1,b=1,l,g,m,x,a,c,d,e,buff,Find,z=1,w=0.3,k;

int i;

AnsiString aFileName;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

 : TForm(Owner)

{

aFileName = "";

}

//---------------------------------------------------------------------------

// Кнопка закрыть

void __fastcall TForm1::BitBtn1Click(TObject *Sender)

{

Form1->Close();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::StringGrid1Click(TObject *Sender)

{

StringGrid1->Options = StringGrid1->Options >> goEditing;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn2Click(TObject *Sender)

{

if (p>=1)

{

StringGrid1->RowCount = StringGrid1->RowCount+1;

StringGrid1->Cells[0][b]=p;

p=p+1;

}

if ( Edit1->Text =="")

{

ShowMessage("Введите Номер телефона");

}

else

{

StringGrid1->Cells[1][b]=Edit1->Text;

}

if ( Edit4->Text =="")

{

ShowMessage("Введите Ф.И.О. аб.");

}

else

{

StringGrid1->Cells[2][b]=Edit4->Text;

}

if ( ComboBox1->Text=="" )

{

ShowMessage("Выберите Вашего Оператор");

}

else

{

StringGrid1->Cells[3][b]= ComboBox1->Text;

}

if ( ComboBox2->Text=="" )

{

ShowMessage("Выберите Оператора вызываемого абонента");

}

else

{

StringGrid1->Cells[4][b]= ComboBox2->Text;

}

if ( Edit2->Text=="" )

{

ShowMessage("Введите продолжительность звонка");

}

else

{

StringGrid1->Cells[5][b]=Edit2->Text;

}



//Для МТСа

if (ComboBox1->Text =="МТС" && ComboBox2->Text == "МТС" )

{

StringGrid1->Cells[6][b]= w;

}

if (ComboBox1->Text =="МТС" && ComboBox2->Text == "Киевстар" )

{

StringGrid1->Cells[6][b]= z;

}

if (ComboBox1->Text =="МТС" && ComboBox2->Text == "Life :)" )

{

StringGrid1->Cells[6][b]= z;

}

if (ComboBox1->Text =="МТС" && ComboBox2->Text == "Билайн" )

{

StringGrid1->Cells[6][b]= z;

}

if (ComboBox1->Text =="МТС" && ComboBox2->Text == "Городской телефон" )

{

StringGrid1->Cells[6][b]= z;

}



//Для Киевстара

if (ComboBox1->Text =="Киевстар" && ComboBox2->Text == "Киевстар" )

{

StringGrid1->Cells[6][b]= w;

}

if (ComboBox1->Text =="Киевстар" && ComboBox2->Text == "МТС" )

{

StringGrid1->Cells[6][b]= z;

}

if (ComboBox1->Text =="Киевстар" && ComboBox2->Text == "Life :)" )

{

StringGrid1->Cells[6][b]= z;

}

if (ComboBox1->Text =="Киевстар" && ComboBox2->Text == "Билайн" )

{

StringGrid1->Cells[6][b]= z;

}

if (ComboBox1->Text =="Киевстар" && ComboBox2->Text == "Городской телефон" )

{

StringGrid1->Cells[6][b]= z;

}



//Для Life :)

if (ComboBox1->Text =="Life :)" && ComboBox2->Text == "Life :)" )

{

StringGrid1->Cells[6][b]= w;

}

if (ComboBox1->Text =="Life :)" && ComboBox2->Text == "МТС" )

{

StringGrid1->Cells[6][b]= z;

}

if (ComboBox1->Text =="Life :)" && ComboBox2->Text == "Киевстар" )

{

StringGrid1->Cells[6][b]= z;

}

if (ComboBox1->Text =="Life :)" && ComboBox2->Text == "Билайн" )

{

StringGrid1->Cells[6][b]= z;

}

if (ComboBox1->Text =="Life :)" && ComboBox2->Text == "Городской телефон" )

{

StringGrid1->Cells[6][b]= z;

}

//Для Билайна

if (ComboBox1->Text =="Билайн" && ComboBox2->Text == "Билайн" )

{

StringGrid1->Cells[6][b]= w;

}

if (ComboBox1->Text =="Билайн" && ComboBox2->Text == "МТС" )

{

StringGrid1->Cells[6][b]= z;

}

if (ComboBox1->Text =="Билайн" && ComboBox2->Text == "Киевстар" )

{

StringGrid1->Cells[6][b]= z;

}

if (ComboBox1->Text =="Билайн" && ComboBox2->Text == "Life :)" )

{

StringGrid1->Cells[6][b]= z;

}

if (ComboBox1->Text =="Билайн" && ComboBox2->Text == "Городской телефон" )

{

StringGrid1->Cells[6][b]= z;

}



//Для Городского телефона

if (ComboBox1->Text =="Городской телефон" && ComboBox2->Text == "Городской телефон" )

{

StringGrid1->Cells[6][b]= w;

}

if (ComboBox1->Text =="Городской телефон" && ComboBox2->Text == "МТС" )

{

StringGrid1->Cells[6][b]= z;

}

if (ComboBox1->Text =="Городской телефон" && ComboBox2->Text == "Киевстар" )

{

StringGrid1->Cells[6][b]= z;

}

if (ComboBox1->Text =="Городской телефон" && ComboBox2->Text == "Life :)" )

{

StringGrid1->Cells[6][b]= z;

}

if (ComboBox1->Text =="Городской телефон" && ComboBox2->Text == "Билайн" )

{

StringGrid1->Cells[6][b]= z;

}

else

{

x= StrToFloat(StringGrid1->Cells[5][b]);

l= StrToFloat(StringGrid1->Cells[6][b]);

m= StrToFloat(x*l);

StringGrid1->Cells[7][b] = m;

}

b=b+1;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::FormCreate(TObject *Sender)

{

StringGrid1->Options << goEditing << goTabs;

StringGrid1->FixedCols = 0;

StringGrid1->Cells[0][0]="№";

StringGrid1->Cells[1][0]="Номер телефона";

StringGrid1->Cells[2][0]="Ф.И.О выз. аб.";

StringGrid1->Cells[3][0]="Оператор выз. аб."; 

StringGrid1->Cells[4][0]="Оператор наб. аб.";

StringGrid1->Cells[5][0]="Продолж звонка";

StringGrid1->Cells[6][0]="Стоимость 1 минуты (в грн.)";

StringGrid1->Cells[7][0]="Сумма к оплате";

StringGrid1->RowCount = 2;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn3Click(TObject *Sender)

{

int DeleteIndex = i;

if(StringGrid1->RowCount > 2)

{

for ( int q = DeleteIndex,MaxRowIndex=StringGrid1->RowCount-1;q<MaxRowIndex;q++)

StringGrid1->Rows[q]->Assign(StringGrid1->Rows[q+1]);

StringGrid1->RowCount = StringGrid1->RowCount-1;

b=b-1;

int q=1;

for(int x=1;x<=b;x++)

{

StringGrid1->Cells[0][x]=q;

q=q+1;

}

p=p-1;

}

else

{

StringGrid1->Cells[1][1] = "";

StringGrid1->Cells[2][1] = "";

StringGrid1->Cells[3][1] = "";

StringGrid1->Cells[4][1] = "";

StringGrid1->Cells[5][1] = "";

StringGrid1->Cells[6][1] = "";

StringGrid1->Cells[7][1] = "";

}

}

//---------------------------------------------------------------------------

bool draw_it;

void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol,

 int ARow, TRect &Rect, TGridDrawState State)

{

i=ARow;



if (Find && Edit3->Text == StringGrid1->Cells[ACol][ARow])

{

StringGrid1->Canvas->Brush->Color = clRed; //цвет

StringGrid1->Canvas->FillRect(Rect);

StringGrid1->Canvas->Font->Color = clWhite;

StringGrid1->Canvas->TextOut(Rect.Left, Rect.Top, StringGrid1->Cells[ACol][ARow]);

//Find = false; - раз комментировать если надо найти только первый экземпляр

}

}

//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn4Click(TObject *Sender)

{

if(OpenDialog1->Execute())

 {

 TStringList *pStrings = new TStringList;

 pStrings->LoadFromFile(OpenDialog1->FileName);

 StringGrid1->RowCount = pStrings->Count+1;

 for(int i=0; i < pStrings->Count; i++)

 {

 StringGrid1->Rows[i+1]->Delimiter = wchar_t(" ");

 StringGrid1->Rows[i+1]->DelimitedText = pStrings->Strings[i];

  }

 delete pStrings;

 }

}

//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn5Click(TObject *Sender)

{

if(SaveDialog1->Execute()){TStringList *pStrings = new TStringList;  

 for(int i=1; i <= StringGrid1->RowCount; i++)

 {

 pStrings->Add(StringGrid1->Cells[0][i] + " " + StringGrid1->Cells[1][i] + " " + StringGrid1->Cells[2][i]+ " " + StringGrid1->Cells[3][i]+ " " + StringGrid1->Cells[4][i]+ " " + StringGrid1->Cells[5][i]+ " " + StringGrid1->Cells[6][i]+ " " + StringGrid1->Cells[7][i]+ " " + StringGrid1->Cells[8][i]+ " " + StringGrid1->Cells[9][i]+ " " + StringGrid1->Cells[10][i]+ " " + StringGrid1->Cells[11][i]);

 }

 pStrings->SaveToFile(SaveDialog1->FileName);

 delete pStrings;

 } 

}

//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn6Click(TObject *Sender)

{

Find = true;

StringGrid1->Repaint();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn7Click(TObject *Sender)

{

AboutBox->Show();

}

//---------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop



#include "Unit3.h"

//--------------------------------------------------------------------- 

#pragma resource "*.dfm"

TAboutBox *AboutBox;

//--------------------------------------------------------------------- 

__fastcall TAboutBox::TAboutBox(TComponent* AOwner)

	: TForm(AOwner)

{

}

//---------------------------------------------------------------------

void __fastcall TAboutBox::OKButtonClick(TObject *Sender)

{

AboutBox->Close();

}

//---------------------------------------------------------------------------

1