Доступ до цього редактора виходить у такий спосіб. У каталозі з базою даних я створив спеціальний файл auto.prg, що позначає перехід до програмного режиму. У цьому файлі пишеться текст програми, у якому за допомогою операторів над базою даних відбуваються необхідні дії і перетворення. Доступ до редагування цього файлу можна одержати просто за допомогою стандартного редактора Windows (Notepad, у файловому менеджері FAR), чи оператором мови FoxBase MODIFY COMMAND. Відредагувавши цей файл, користувач зберігає його і запускає в СУБД, у якій він йде вже у виправленому виді.
Запуск редактора. Виробляється безпосередньо в програмній оболонці СУБД «КАРАТ». Після відкриття файлу бази даних (USE, BROWSE) для одержання доступу до програмного режиму необхідно ввести наступне:
DO AUTO
Після цього буде зроблений аналіз написаної програми і запуск редактора з програмного режиму в робітник. В робочій області знаходиться меню, що містить наступні пункти:
1. Робота з базою – перегляд записів у базі даних і редагування бази.
2. Розрахунок – обчислення доходу автосалонів.
3. Вихід – припинення роботи редактора і вихід у СУБД.
Для кожної дії вводиться спеціальна перемінна, котра полегшує програмі зрозуміти виконувану функцію: робота з базою (doc), розрахунок (ras), для виходу використовується оператор EXIT.
Потім ці перемінні підставляються в програму для виконання необхідних функцій. Для цього використовуються процедури (PROCEDURE).
· Робота з базою (PROCEDURE DOC) робить висновок усіх записів (PROCEDURE EKRAN) бази з відповідною шапкою(PROCEDURE HEAD); додавання нового запису, використовуючи APPEND BLANK; редагування кожної з існуючих записів; видалення запису(їй).
· Розрахунок (PROCEDURE RAS) – робить розрахунок загального доходу усіх автосалонів разом.
3. Розробка програмного забезпечення поставленої задачі мовою C++ в у середовищі Borland C++ 4.x
3.1 Елементи програми (діалоги опцій)
У програмі, для керування інтерфейсом і самим додатком використовуються спеціальні діалоги. Основа всіх діалогів додатка закладена у файлі конструктора вікон auto_dial.cpp. У ньому описуються і підключаються всі елементи діалогових вікон. Використовується клас TVivDialog1,3,4 який у свою чергу походить від «батьківського» класу TWindow, а так само від класу TDialog:
TVivDialog::TVivDialog1(TWindow* parent)
: TDialog(parent, ID_DIALOG)
Діалог TVivDialog використовує TDialog для виклику SetupWindow():
void
TVivDialog::SetupWindow()
{
TDialog::SetupWindow();
Він же використовує TPaintDC для визначення EvPaint():
void
TVivDialog::EvPaint()
{
TPaintDC dc(*this);
Цей клас використовує і функцію EvVScroll для підключення скролінгів.
void
TVivDialog1::EvVScroll(UINT scrollCode, UINT thumbPos, HWND hWndCtl)
{
TDialog::EvVScroll(scrollCode, thumbPos, hWndCtl);
Це усе підключено в діалоговому вікні: «Вибір кольору показників, малюнка й екрана».
3.2 Опис деяких використаних класів, інкапсульованих у бібліотеці ObjectWindows
TWindow. Одним із самих головних класів у моєму додатку можна назвати клас TWindow. TWindow, виходить з TEventHandler і TStreamableBase, забезпечує визначене поводження вікна і формує багато хто з API функцій Windows. Функції TWindow визначають створення вікна, включаючи реєстрацію й атрибути.
TWindow - універсальне вікно, що може зміняться і переміщатися. Ви можете створювати приклади TWindow, хоча частіше Ви будете використовувати TWindow як основу для спеціалізованих класів вікна. Загалом, щоб зіставити об'єкт TWindow з елементом вікна, Ви повинні випливати таким крокам:
1. Створити приклад TWindow.
2. Зробити запит на Створити чи Виконати, що створюють елементи інтерфейсу, потім викликають SetupWindow, що підключає базу SetupWindow до нормальної обробки, що у свою чергу включає створення HWindow і будь-якого дочірнього HWindows. Запит у TransferData до установки передачі даних між батьківським і дочірнім вікнами.
3. Для того щоб знищувати елемент інтерфейсу, виберіть одну з наступних дій, у залежності від вашого додатка:
· Виклик Знищення, щоб цілком знищити елемент інтерфейс.
· Виклик CloseWindow, що викликає CanClose, щоб перевірити, чи було виконане все необхідне, для підтвердження знищення елемента інтерфейсу.
4. Є два способи знищити об'єкт інтерфейсу:
· Якщо об'єкт був обновлений, то робиться посилання в запит на Видалення.
· Якщо об'єкт не був обновлений, то транслятор автоматично знищує об'єкт.
TWindow - базовий клас для багатьох класів, включаючи TFrameWindow, TControl, TDialog, і TMDIChild.
Клас TWindow використовується в програмі для створення усіх вікон. Він з'являється в рядку:
DEFINE_RESPONSE_TABLE1(TdbWindow, TWindow)
Потім його використання можна простежити у всіх місцях створення вікон додатка, а також використання його похідних класів:
TdbWindow::TdbWindow(TWindow *parent,char * title)
: TFrameWindow(parent, title),
TWindow(parent, title),
filenameData(OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST,
"DBF Files(*.dbf)|autodal.dbf|", 0, "", "*")
Далі видне використання TWindow і похідної функції EvSize:
void TdbWindow::EvSize(UINT sizeType, TSize& size)
{
TWindow::EvSize(sizeType, size);
Scrolling();
}
Також використання TWindow для створення діалогових вікон додатка можна бачити в основному конструкторі програми у файлі dial.cpp:
TVivDialog::TVivDialog(TWindow* parent)
: TDialog(parent, ID_DIALOG),
TGdiObject.Тут же я вважаю за необхідне згадати основний клас TGdiObject. Хоча він і не вказується в тексті програми, усе-таки він є базовим класом для цілої низки похідних класів використаних у додатку. Його опису варто приділити більше уваги.
TGdiObject кореневий, псевдоабстрактний базовий клас для ГРАФІЧНОГО ІНТЕРФЕЙСУ ПРИСТРОЇВ ObjectWindows (GDI). Посилання на WIN API, що беруть керуючий аргумент параметрів дескриптора GDI, звичайно заміняються простим членом ObjectWindows функціональні виклики, у яких керування (і можливо інші аргументи) "ставляться" викликом об'єкта. Класи, що базуються на TGdiObject - дозволяють працювати з ГРАФІЧНИМ ІНТЕРФЕЙСОМ ПРИСТРОЇВ, обробляти і створити об'єкт C++ із псевдонімованим дескриптором.
Деякі об'єкти GDI також ґрунтуються на TGdiObject для керування дескриптором. Узагалі, TGdiObject на основі ієрархії класу обробляє всі об'єкти GDI з об'єктів DC (Device context - Контекст Пристрою) СИСТЕМИ ЦИФРОВОГО КЕРУВАННЯ, оброблених деревом, Що TDC-базується. П'ять виборчих класів DC (TPen, TBrush, TFont, TPalette, і TBitmap), а також TIcon, TCursor, TDib, і TRegion класи, усі отримані безпосередньо від TGdiObject.
TGdiObject підтримує дескриптор ГРАФІЧНОГО ІНТЕРФЕЙСУ ПРИСТРОЇВ і прапорець ShouldDelete, що визначає, коли дескриптор і об'єкт повинні бути вилучені. Захищені конструктори передбачаються для використання похідними класами: один для запозичених дескрипторів, і один для нормального використання.