Форма для визначення нових методів – додаток перегляду класів у CBuilder

Перша форма, яку нам буде потрібно додати в проект, – це форма для визначення і додавання нових методів в компонент Ця форма дозволить пользовате лю визначити назву методу, тип повертається значення, а також типи і назви аргументів Вся ця інформація буде скомбінована в стандартне для C + + опис методу і додана в список методів, які будуть додані в клас при його генерації Це дозволить нам використовувати один і той же код у всіх місцях, де ми маємо справу з методами На рис 178 показана форма, яку ми будемо використовувати для опису нових методів

Рис 178 Форма для визначення нових методів

Весь код, який нам треба додати в цю форму, буде ставитися до моменту її створення Нам треба встановити заголовки колонок сітки і зробити самі колонки правильної ширини Додайте обробник для події Create форми в цей обробник додайте наступні рядки:

void __fastcall TForm2::FormCreate(TObject *Sender)

{

StringGrid1-&gtCells[1][0] = &quotField Type" StringGrid1-&gtCells[2][0] = &quotArgument Name" StringGrid1-&gtColWidths[0] = 10

StringGrid1-&gtColWidths[1] = 100

StringGrid1-&gtColWidths[2] =  StringGrid1-&gtWidth-140

}

Як бачите, нічого складного Ми просто задаємо значення для заголовків і ширини колонок, щоб при запуску ця форма виглядала пристойно Единствен ве, мабуть, неочевидне дію, яке треба виконати над цією формою, – це змінити властивості Options обєкта StringGrid так, щоб прапори goEditing і goTabs були встановлені в значення true Прапор goEditing дозволяє користувачеві редагувати дані прямо в осередках сітки (ми це робимо для того, щоб користувач взагалі зміг ввести значення типів і назв), а установка прапора goTabs дозволяє використовувати клавішу Tab для переміщення між осередками сітки

Тепер, коли форма створена і визначена, залишилося тільки вивести її на екран при натисканні користувачем на кнопку Нові на сторінці методів нашого діалогу Ми зробимо це як завжди у новому обробнику, але для початку додамо посилання на цю форму за допомогою команди меню File

д Include Unit Hdr Нижче приведений код для обробника натискання на кнопку Нові сторінки методів:

void __fastcall TPagesDlg::Button5Click(TObject *Sender)

{

if ( Form2-&gtShowModal() )

{

/ / Будуємо рядок методу

AnsiString s = Form2-&gtMethodReturn-&gtText s += &quot "

s += Form2-&gtMethodName-&gtText

s += &quot( "

/ / Аргументи

boolean bFlag = false

for ( int i=1 i&ltForm2-&gtStringGrid1-&gtRowCount ++i )

{

AnsiString strArg = &quot"

/ / У колонці типів повинен бути зазначений тип

if ( Form2-&gtStringGrid1-&gtCells[1][i]Length() )

{

if ( bFlag ) s += &quot, "

strArg += Form2-&gtStringGrid1-&gtCells[1][i]

strArg += &quot "

strArg += Form2-&gtStringGrid1-&gtCells[2][i] s += strArg

bFlag = true

}

}

s += &quot)"

/ / Додаємо в список

ListBox2-&gtItems-&gtAdd( s )

}

}

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

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

Рис 179 Форма для визначення нових властивостей

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

void __fastcall TPagesDlg::Button8Click(TObject *Sender)

{

if ( Form1-&gtShowModal() )

{

AnsiString s = Form1-&gtPropertyType-&gtText s += &quot "

s += Form1-&gtPropertyName-&gtText

ListBox4-&gtItems-&gtAdd( s )

}

}

Форма відображається як модальне вікно, в неї заноситься інформація про новий властивості, при натисканні кнопки OK генерується рядок властивості, що має вигляд:

<Тип-властивості> <Назва властивості>

Таким чином, кожне нове властивість, яке додається нами в компонент, матиме на початку назва типу Властивості ж, підсаджені в компонент, як правило, зазначаються тільки за назвами Ця відмінність дозволить нам коректно згенерувати властивості та асоційовані з ними змінні класу для нашого компонента

Ми вже обробили переміщення елементів зі списку в список, так що зі сторінкою властивостей ми на цьому прощаємося Прийшов час зайнятися серйозною справою: згенерувати власне опис компонента

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

*

*