Компоненти і обробники подій компонентів

Серцем системи CBuilder є Visual Component Library (бібліотека візуальних компонентів), або VCL, яка є як би набором будівельних блоків, що включає в себе такі компоненти, як форми (TForm), поля введення (TEdit), списки (TListBox), керуючі елементи ActiveX, стандартні діалоги відкриття і збереження файлів У попередніх розділах ми торкнулися деякі компоненти VCL і їх використання Ця глава – запаморочливу подорож по VCL і огляд того, як VCL допомагає вирішити щоденні проблеми у програміста на CBuilder

Ця глава не є керівництвом по VCL, так як компанія Borland надає цілком пристойне керівництво в документації до CBuilder Замість цього дана глава – поетапний аналіз того, як за допомогою VCL вирішувати стандартні програмістські проблеми Ось неповний список того, про що ми будемо говорити в цій главі:

·&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp створення компонентів під час роботи додатку (runtime)

·&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp перетягування чого-небудь між компонентами

·&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp перевірка правильності даних у полі введення

·&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp робота з індикаторами прогресу завдання

·&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp користувацька промальовування компонентів

Більшість книг по CBuilder надає вам найтонші приклади використання VCL, але мало застосовують VCL до реальних проблем програмування У цьому розділі ми почнемо досліджувати неймовірно потужну модель програмування в CBuilder, а також що це дає вам, як професійному програмісту CBuilder відрізняється маленькими штрихами, тими родзинками, яких користувач має право очікувати від високоякісних програм Тепер, коли вам належить працювати з CBuilder, немає ніяких виправдань в невикористанні цих додаткових можливостей у ваших програмах для максимального спрощення роботи з ними кінцевого користувача

З вашої точки зору як програміста, VCL не є ієрархією Це набір незалежних будівельних блоків, які ви перетягуєте на форму, встановлюєте їх властивості і використовуєте там, де, як вам здається, вони підходять З компонентами VCL можна звертатися індивідуально, майже або зовсім не піклуючись про те, як вони вписуються в загальну схему Тільки розробники нових компонентів дійсно зобовязані задавати собі питання як і чому відносно VCL Решті з нас можна сидіти спокійно і насолоджуватися блиском легко зроблених додатків, які використовують у собі будівельні блоки VCL

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

Перший і найважливіший клас в ієрархії VCL – це TObject TObject – предок всіх класів

VCL, він містить деякі найважливіші для всіх класів методи Проте, TObject НЕ

містить ніяких власних властивостей Подивившись на список методів класу TObject, ви знайдете метод ClassName, який повертає справжнє імя класу обєкта Якщо у вас є вказівник на обєкт базового класу, який насправді є обєктом породженого (що посяде) класу, то ви можете використовувати метод TObject :: ClassName, щоб зясувати, до якого класу він належить насправді Точно так само, метод ClassParent поверне вам безпосереднього батька даного класу Використовуючи метод ClassParent, ви можете прогулятися по дереву класів назад до рівня TObject, починаючи з будь-якого обєкта VCL в системі З точки зору того, як що працює, на рівні TObject найважливішим є метод Dispatch Метод Dispatch відповідає за передачу повідомлень в обробники подій, визначені для обєкта Використовуючи Dispatch, ви можете передати обєкту будь-яке повідомлення і бути впевненим, що якщо обєкт підтримує обробку даного повідомлення, то воно буде доставлено до відповідного обробнику

Наступним за важливістю після TObject є клас TControl, який є базою для всіх керуючих елементів (controls) у системі VCL, наприклад форм, полів введення, вікон діалогу TControl відноситься тільки до видимих ​​компонентів в системі Видимим (візуальним) компонентом є той, який користувач може побачити і яким він може керувати під час роботи програми Це означає, що компоненти TTimer (таймер) і TDatabase (компонент – база даних) не є спадкоємцями класу TControl, а ось TOpenDialog (стандартний діалог відкриття файлів), хоча він і не видно під час дизайну програми, є його спадкоємцем Так як TControl підтримує візуальні компоненти, то в класі TControl ви знайдете основні візуальні властивості керуючих елементів Ви знайдете тут такі властивості, як Height (Висота), Width (ширина), ClientHeight (висота клієнтської області), ClientWidth (ширина клієнтської області), Hint (підказка), Cursor (тип курсора) та інші Методами класу є Hide (прибрати), Show (Показати), Update (оновити) і Perform (виконувати) З точки зору «як що працює» в класі TControl є метод WndProc, який обробляє специфічні повідомлення Якщо вам потрібно змінити стандартну обробку повідомлень для керуючого елемента, дивіться метод WndProc

Нарешті, ще одним важливим класом є TComponent, який представляє всі компоненти в системі Клас TComponent надає кошти для додавання компонента в палітру компонентів в інтегрованій середовищі, можливості компонента містити інші компоненти і керувати ними, а також можливості роботи з потоками (streams) <$ FНе плутати з потоками - паралельними процесами (threads). - Прямуючи перев> І файлами TComponent включає в себе всі компоненти, видимі чи ні під час роботи програми Важливими властивостями класу TComponent є ComponentCount (яке показує кількість компонентів, які містить даний компонент), Components (містить покажчики на всі компоненти, що містяться в даному) і ComponentState (описує поточний стан компонента) Властивість ComponentState важливо через прапора csDesigning, який вказує, що компонент знаходиться в стадії дизайну

Така, в двох словах, основа системи VCL Замість того, щоб довго і нудно говорити про те, як використовувати бібліотеку VCL і що ви можете зробити з її допомогою, давайте відразу стрибнемо у вир і візьмемося писати приклади деяких додатків для того, щоб показати потужність VCL в дії У нашому першому прикладі ми займаємося проблемою динамічного створення компонентів VCL «на ходу», тобто під час роботи додатки

Джерело: Теллес М – Borland C + + Builder Бібліотека програміста – 1998

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*