Використання форм Delphi в CBuilder

Коли був випущений Visual C + + 40, фірма Microsoft голосно рекламувала можливість прямого імпорту форм Visual Basic Через кілька місяців вона перестала її рекламувати, а ще через деякий час взагалі перестала згадувати про неї Це сталося не тому, що імпорт не працював, він працював і досить непогано І не тому, що існували обмеження на імпорт (не цілком адекватно сприймався код Visual Basic, якщо сприймався взагалі) Чи не працювало саме перетворення Мова Visual C + + використовував архітектуру перегляду документів, засновану на використанні MDI або SDI форм з меню і панелями стану, а в Visual Basic, так само як і в Delphi, як і в CBuilder, застосовується заснована на формах архітектура з незалежними вікнами форм Програмісти на Visual C + + (і я в їх числі) просто не могли змусити дві настільки різні концепції працювати разом

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

На рис 111 показана форма, яку я створив в Delphi 30 для перевірки сумісності двох систем Нічого такого глобального в ній немає Справа в тому, що переносити можна будь-яку форму – як просту, так і складну Всі форми створюються однаково

Рис 111 Форма Delphi

Ця простенька форма містить напис, поле редагування і кнопку із заголовком «Закрити» Ми використовуємо ці елементи для створення закінченої форми, яку зможемо потім використовувати в системі CBuilder Мета даного прикладу не створити чудесний форму Delphi, а навчитися використовувати комбінацію з систем Delphi і CBuilder

Для створення форми запустіть Delphi (версії 20 або 30 – це не має ніякого значення) і додайте вказані компоненти на форму Важливим моментом всієї цієї програми буде те, що вам обовязково треба буде зберегти форму під унікальним імям, оскільки CBuilder (так само, як і Delphi) не дозволяє використовувати в одному проекті дві форми з однаковими іменами Це зовсім не безпідставне обмеження, особливо якщо згадати, що ви не можете мати дві функції з однаковими іменами і аргументами в C + +, а також не можете визначити два класи з однаковими іменами в одній зоні видимості Оскільки і Delphi і CBuilder використовують за замовчуванням одні й ті ж імена для форм (Form1, Form2), велика ймовірність того, що якщо ви не збережете форму Delphi під унікальним імям, вона, швидше за все, перетнеться по імені з однієї з вже існуючих у вашому проекті форм Отже, давайте назвемо форму, яку будемо імпортувати в додаток на CBuilder, DelphiForm

Більше для очищення совісті, щоб вже бути зовсім упевненими в тому, що все дійсно працює, давайте додамо у форму обробник для кнопки Закрити Не будемо вдаватися в деталі коду на Pascal – наприкінці решт, ця книга про C + +, і, відповідно, не будемо обтяжувати себе написанням великого коду на Pascal Таким чином, код, який ми додамо в обробник для кнопки Закрити, буде виглядати так:

procedure TDelphiFormButton1Click(Sender: TObject) begin

Close end

Не забудьте, що це написано на Pascal, а не на C + + І не використовуйте у виклику функції Close круглі дужки Що вдієш – заради прогресу доведеться піти на невеликі жертви Додавши цей код у форму, збережіть її під новим імям Не забудьте, в якому каталозі вона збережена,

– Адже вона нам знадобиться для здійснення подальших кроків Після того як форма

перейменована і проект збережений, пора рухатися далі – створювати додаток в CBuilder

Повторюся ще раз – якщо у вас немає Delphi або ви не хочете запускати його разом з CBuilder, не тривожтеся скористатися формою Delphi, яка знаходиться на прикладеному до книги компакт-диску І, як і код всіх інших прикладів книги, там же знаходиться закінчений проект CBuilder для цього прикладу

Наступним кроком у написанні нашого прикладу стане створення власне додатки

CBuilder, що використовує форму Delphi Цим ми і займемося прямо зараз

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

Рис 112 Форма CBuilder для взаємодії з Delphi

У цьому прикладі ми збираємося відобразити форму Delphi в модальному форматі, тобто використовувати форму як вікно діалогу, а не як «нормальну» форму, яка відкрита поряд з іншими формами і дозволяє вам переміщатися туди-сюди між формами Причин для цього дві По-перше, ми до цих пір ні в одному прикладі не створили жодної модальної форми, так що це гарна можливість навчитися чомусь новому По-друге, форма Delphi служить у нас в цьому прикладі для отримання інформації (вводиться в поле редагування), яка відображається потім в першій формі Якби ми відбивали другу форму нормально (що ви, до речі, можете легко зробити), то як би ми дізналися, коли відображати інформацію в першій формі У системи є важливе обмеження – Delphi не розуміє C + +, так що ви не можете просто використовувати форму для виклику першої (C + +) форми

Для того щоб відобразити форму, ми додамо обробник для кнопки (з заголовком Відкрити форму Delphi) Ось код, який треба додати в обробник для кнопки:

void __fastcall TForm1::Button1Click(TObject *Sender)

{

if  (DelphiForm-&gtShowModal())

{

Label2-&gtCaption = DelphiForm-&gtEdit1-&gtText

}

}

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

Для того щоб скомпілювати додаток, в якому є форма Delphi, нам треба насамперед повідомити менеджеру проектів CBuilder (project manager) про те, що така форма взагалі присутня в нашому додатку Це робиться так: вибирається пункт меню Project | Add To Project, а в ньому (у діалозі відкриття файлу) ви переходите в той каталог вашого компютера, де зберігається форма Delphi Тепер вам треба звернутися до комбінованого списку Type діалогу і вибрати * pas з запропонованого списку Це дозволить вибирати форми Delphi Знайдіть і виберіть форму DelphiForm

Після того як ви додали форму в проект, вам треба «розповісти» про неї формі CBuilder У цьому процесі немає нічого нового або незвичайного Відкрийте код для форми CBuilder у вікні редактора проектів Виберіть команду меню File д Include Unit Hdr в середовищі CBuilder В відображення

діалозі виберіть назву DelphiForm і натисніть кнопку OK При цьому буде автоматично згенерований сумісний з C + + заголовний файл для форми DelphiForm, який буде додано до вашу форму CBuilder Якщо вас зацікавило, як класи модуля (unit classes) встановлюються у відповідність з C + +, погляньте на текст файлу DelphiFormhpp, який відкриється у вікні редактора Це досить цікаве видовище, якщо не сказати більше

Після того як ви приєднали обєкт DelphiForm до обєкта форми CBuilder, ви можете використовувати його так, як ніби це звичайний обєкт C + + Заголовоч ний файл містить в собі трансляцію всіх методів, властивостей і типів, що містяться у формі Delphi Ви можете сміливо використовувати її так, як ніби це звичайна форма CBuilder, і не знати ні про які відмінностях до тих пір, поки ви не вирішите зробити її першої (головної) формою додатка

Обєкти VCL завжди будуть обєктами VCL, і ви можете використовувати для обєктів з Delphi ті ж методи, що використовували в Delphi Отже, в принципі немає ніякої різниці між використанням форми Delphi і форми CBuilder

Зверніть увагу, що коли ви створюєте (build) і повязуєте форми, форма Delphi компілюється точно так само, як звичайні форми CBuilder, – завдяки повному і дуже потужному компілятору Object Pascal, який міститься в системі CBuilder І в нашому наступному прикладі ми скористаємося цим компілятором для того, щоб опрацювати ще одну можливість використання компонентів Delphi – можливість використовувати функції Delphi в програмі CBuilder

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

*

*