Тому що TGdiObject є базовим класом для багатьох використаних у програмі класів, йому приділяється більший пріоритет при виконанні його функцій компілятором. TGdiObject відповідає за користувальницький інтерфейс програми. У даному додатку використання похідних класів від TGdiObject можна просліджується в багатьох місцях програми:
TPen pen1 (TColor:: Black, 1);
TBrush brush(color[jj]);
font_text = new TFont(&options.f_text);
Вони використовуються для установок логічного пера (TPen), логічної кисті (TBrush), а також керування шрифтами (TFont)
TscrollBar. Одним з найбільш цікавих класів у написанні додатка можна виділити клас TScrollBar. Об'єкти TScrollBar представляють автономний вертикальний і горизонтальний засіб керування смугою прокручування. Більшість функцій членів класу TScrollBar керують блоком ковзання смуги прокручування (бігунком), його позицією і діапазон дії.
Одна спеціальна особливість типу – TScrollBar є базисним набором функцій-членів заснованих на повідомленні, що автоматично коректують позицію бігунка смуги прокручування у відповідь на повідомлення смуги прокручування Windows.
Ніколи не потрібно підключати об'єкти TScrollBar у вікна, що чи мають WS_HSCROLL чи WS_VSCROLL стилі в їхніх атрибутах. TScrollBar - є поточним класом.
Прикладом використання цього класу може стати такий елемент програми, як підключення скролінгів до вікон додатка:
{
r1 = new TScrollBar(this, IDC_HSCROLL1 );
g1 = new TScrollBar(this, IDC_HSCROLL2 );
b1 = new TScrollBar(this, IDC_HSCROLL3 );
r2 = new TScrollBar(this, IDC_HSCROLL4 );
g2 = new TScrollBar(this, IDC_HSCROLL5 );
b2 = new TScrollBar(this, IDC_HSCROLL6 );
r3 = new TScrollBar(this, IDC_HSCROLL7 );
g3 = new TScrollBar(this, IDC_HSCROLL8 );
b3 = new TScrollBar(this, IDC_HSCROLL9 );
r4 = new TScrollBar(this, IDC_HSCROLL10 );
g4 = new TScrollBar(this, IDC_HSCROLL11 );
b4 = new TScrollBar(this, IDC_HSCROLL12 );
}
TDialog. Дуже важливим класом, хоч і не базовим є TDialog, тому що об'єкти TDialog представляють, і модальні і немодальні елементи інтерфейсу діалогового вікна. (Модальне діалогове вікно відключає операції в його батьківському вікні, у те час як воно відкрито). Об'єкт TDialog має відповідне визначення ресурсу, що описує розміщення і вид його засобу керування.
Ідентифікатор цього визначення ресурсу постачений конструктором об'єкта TDialog. Об'єкт TDialog зв'язаний з модальним чи немодальним елементом інтерфейсу, викликуваним для того, щоб чи виконаються створювати функція-член, відповідно. TDialog - поточний клас.
Використання класу TDialog ілюструється в такому фрагменті програми:
void TdbWindow::CmHelpAbout()
{
(new TDialog(this, ID_DIALOG_ABO))->Execute();
}
У ньому показаний висновок діалогового вікна «Повідомлення» при використанні таблиці відгуків.
До параметрів діалогу має відношення і клас TChooseFontDialog. Він представляє модальні елементи інтерфейсу діалогового вікна, що створюють визначене системою діалогове вікно, від якого користувач може вибирати шрифт, накреслення шрифту (типу напівжирного чи курсивного), розмір крапки, ефект (типу закресленого чи підкресленого), і колір. TChooseFontDialog може бути зроблений, щоб здаватися немодальним, створюючи «батька» діалогу як невидиме спливаюче вікно і роблячи спливаюче вікно дочірнім від головного вікна додатка.
Зацікавлений клас керування колірною палітрою це клас TColor. Цей клас є класом підтримки, використовуваним разом із класами TPalette, TPaletteEntry, TRgbQuad, і TRgbTriple, щоб спростити всі операції кольору Windows. TColor має десять статичних членів даних, що представляють стандартні значення RGB COLORREF, від Чорного до Білого. Конструктори забезпечуються, створення об'єкта TColor від значень COLORREF І RGB, індексів палітри, входів палітри, і значень RGBQUAD І RGBTRIPLE.
Яскравим прикладом використання цього класу може служити фрагмент програми, у якому встановлюється колірна палітра об'єктів:
TColor color[10]={0xFF0000L, 0xFF00L, 0xFFL, 0xFFFF00L, 0xFFFFL,
0xFF00FFL, 0x880000L, 0x88L, 0x888800L, 0x880088L};
3.3 Базова частина програми (ресурси, елементи керування)
У програмі використовуються різні елементи керування і ресурси створені за допомогою ResourseWorkshop у Borland C++. У їхньому числі різного роду меню з ID_MENU MENU (POPUP), складові частини і підміню (MENUITEM). Тут виконана графічна частина діалогових вікон, з підключенням усіх необхідних елементів (кнопок керування, скролінгів, комбобоксів і т.д.).
Також у ресурсах визначається графічна частина виконуваних додатком операцій: висновок бази , побудова діаграм, розрахунків. Описано діалоги настроювання шрифтів і квітів, для малювання таблиці (Додаток 3. Лістинг файлу ресурсів auto.rс).
Файл ресурсів спеціально створюється окремо, щоб мати полегшений доступ до редагування елементів і діалогів. Цей файл можна редагувати двома способами:
· За допомогою ResourseWorkshop, у якому у виді діалогового вікна настроювання і графічного інтерфейсу виробляється створення елементів і форм діалогових вікон. Цей спосіб дуже зручний для наочного представлення вироблених змін для придбання навичок графічного створення ресурсів.
· Другий спосіб небагато складніше, тому що припускає редагування ресурсів у текстовому виді. Але він дає набагато більше представлення про саму суть створення елементів діалогових вікон.
3.4 Створення файлу ініціалізації.
У програмі для запам'ятовування параметрів додатка створюється спеціальний файл ini.ini, за допомогою якого можна записати на диск дані про поточне стані інтерфейсу програми.
Він ініціалізується в тексті програми.
char baza[10] = "auto.ini"
Якщо немає цього файлу, то значення приймаються за замовчуванням. Тобто викликаються ті значення, що записані в тексті самої програми. З TdbWindow використовується функція CmSave(). Видається MessageBox з текстом "У програмі змінені установки. Зберігати їх на диску ?","Увага !!!". Якщо натиснути «Ні» (IDNO), те програма просто закривається. Якщо натиснути «Так» (if(otv == IDYES)), то записуються дані на диск . Якщо ж відбулася помилка запису на диск, то видається MessageBox "Збій на чи диску ні місця. Дані не записуються"," Увагу !!! ". И програма закривається (fclose(f)).
Цей момент можна проілюструвати в такому уривку:
TdbWindow::CmSave()
{
BOOL okay;
int otv ;
otv = MessageBox ("У програмі змінені установки. \nсохранять їх на диску ?",
"Увага !!!",MB_YESNO );
if(otv == IDYES)
{
FILE *f = fopen(baza, "wb");
if (!f)
okay = FALSE;
else
okay = (fwrite(&options, sizeof(options), 1, f) == 1);
if (!okay) MessageBox
("Збій на чи диску ні місця.Дані не записуються",
" Увага !!! ", MB_OK | MB_ICONSTOP);