Таблиця властивостей – додаток перегляду класів у CBuilder

У нашій третій таблиці будуть зберігатися властивості Може здатися, що зберігати властивості складніше, ніж методи Адже, як можна припустити, в таблиці властивостей повинні зберігатися імя властивості, його тип, функції читання і запису для властивості і т п На щастя, все не настільки складно, як здається з першого погляду, і практично нічого з вищезгаданого нам зберігати не треба

У табл 173 показані всі поля, які нам знадобляться в таблиці властивостей (Properties) Ви здивовані

Таблиця 173 Таблиця Properties

ClassId               Character String            10

PropertyName      Character String          80

Як можна укласти опис цілого властивості в одне-єдине поле бази даних Де ж типи Де ж функції читання і запису Як це все буде працювати при такому описі Розслабтеся, все це дуже просто

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

__property int AProperty = {read = FAProperty, write = SetAProperty, default = 32}

Дійсно, практично вся інформація з цього опису потрібна для опису нового властивості у вашому компоненті В якості абсолютного мінімуму для опису вам буде потрібно імя властивості, його тип і змінна-член класу для зберігання значення властивості (без функцій читання і запису) Це справедливо для опису всіх нових властивостей, що додаються в компонент

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

«Підсаджених» (hoisted) властивостей достатньо, щоб ви вказали назву властивості, яке ви представляєте з базового класу в секції __ published Припустимо, що у нас є наступний опис властивості в базовому класі:

protected:

__property System::AnsiString Text ={read = Text write = SetText}

Якщо ви захочете використовувати властивість Text в класі компонента, успадковує від цього базового класу, вам не потрібно вся інформація, що зберігається в цій властивості Вам буде потрібно лише «підсадити» це властивість в наследующий клас компонента Це робиться написанням одного рядка на зразок наступної:

__published:

__property Text

Памятайте, що компілятор вже знає тип властивості з базового класу Вам не можна змінювати тип властивості, оскільки це абсолютно зібє користувача з пантелику – у вас в Object Inspector зявляться два різних властивості з різними типами Яке з них якого типу Залежать вони один від одного І якщо можна використовувати обидва, то як їх розрізнити в коді

Зняти всі ці питання можна, тільки заборонивши використання властивостей з однаковим імям Коли ви використовуєте («підсаджуєте») властивість з родітельс кого класу, то отримуєте більшу частину, якщо не всю, інформації про властивість Хоча зміна функцій читання і запису властивості в спадщині класі, так само як і значення за замовчуванням, допускається, ми не будемо обробляти ці дещо незвичні варіанти в нашому Майстрі генерації компонентів Якщо ви захочете довести справу до кінця – дерзайте, спробуйте самостійно додати ці можливості

Отже, у нас є три таблиці для зберігання інформації Тепер треба вирішити питання з занесенням даних в ці таблиці Для того щоб записувати в них інформацію, нам доведеться дещо додати в код нашого додатки перегляду класів В принципі, цілком можливо впоратися з цим за допомогою керуючих елементів, сприйнятливим до даних (data-aware), але набагато простіше просто використовувати обєкт TTable для запису потрібних нам даних зі списків в базу даних Давайте цим і займемося

Джерело: Теллес М – 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>

*

*