![]() |
|
![]() ![]() ![]() |
|
Mal Hack |
|
||||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: нет Всего: 261 |
В делфи такое делал, но описывая класс во втором модуле.
Задача такова. Есть модуль с формой. Хочу сделать отдельный модуль, который программными средствами будет создават кнопочки и т.п. на первой форме. Все описал. Модуль вот так:
модуль с формное начинается так:
Вот на месте ************ хочу вызвать BBCode_Create из второго модуля. Можно ли это как-ть сделать не описывая класса и не создавая объекта с нужной функцией? Задача по русски: хочу вынести генерацию элементов интерфейса в отдельный файл, оставив на файле с формой только рабочий код, основной опять же. |
||||
|
|||||
Vitalik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Координатор проекта Сообщений: 653 Регистрация: 8.11.2004 Где: Ukraine, Kharkov Репутация: 2 Всего: 12 |
Может добавить объявление функции в h-файл?..
Или во втором файле написать: "#include "Unit1.cpp"? А также можно объявление формы в h-файл засунуть ![]() P.S. Билдер очень давно не юзал, поэтому могу ошибаться ![]() ![]() |
|||
|
||||
Vitalik |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Координатор проекта Сообщений: 653 Регистрация: 8.11.2004 Где: Ukraine, Kharkov Репутация: 2 Всего: 12 |
Да... Чтобы не было пустых слов - сейчас проверил.
Всё работает ![]() 1). Файл Unit1.cpp На форме находится панель с именем BBCodePanel.
2). Файл Unit2.cpp: Только добавил задание свойства Parent. Но это обязательно !
3). файл Unit2.h: Просто добавил объявление нашей функции, чтобы Unit1.cpp её видел ![]()
Всё готово ![]() Удачи! |
||||||
|
|||||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: нет Всего: 261 |
Vitalik а указание тут:
родителя не достаточно? Хотя в Делфи всегда Parent писал ![]() Ща буду тестить, но заранее огромное спасибо. Ты меня еще первым постом навел на мою ошибку. Добавлено @ 00:11 Vitalik огромное спасибо, разобрался. Вот еще два вопросика из этой темы ![]() 1. Можно лим обойтись для второго модуля наличием только .cpp файла, или обязательно наличие .h? 2. __fastcall чем отличается от обычной функции. ЗЫ: Есть книжка Архангельского, но толи я не внимательно смотрел, толи там нет этой информации. Может есть сслки под рукой? |
|||
|
||||
Vitalik |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Координатор проекта Сообщений: 653 Регистрация: 8.11.2004 Где: Ukraine, Kharkov Репутация: 2 Всего: 12 |
При создании vcl-компонента в качестве параметра указывается не родитель, а владелец (Owner). Чтобы новые кнопочки отобразились на форме нужно обязательно самому задать их родителя (Parent) ![]()
Теоретически можно ![]() ![]() Но я попробовал и у меня сразу AV выскочил при обращении к форме... ![]()
Та сильно так ничем и не отличается. Только способом передачи параметром (на "низком" уровне). Для функций-обработчиков событий этот сопособ вроде бы как считается быстрее, но это реально мизер ![]() Это в основном нужно при написании своих dll-ек. То есть там действительно нужно одинаково задать способ передачи параметров... |
||||||
|
|||||||
Mal Hack |
|
||||||||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: нет Всего: 261 |
Ах вот оно что... А смысл указания Owner'a тогда? Тут ночью еще два вопроса появилолсь. 1. Есть ли в Си аналог with obj do... как в Делфи? Ман и Архангельский ответа не дали. 2. Как поставить на кнопку свой обработчик OnClick? пишу:
Получаю сообщение:
И еще один ![]() Создаю PageControl и Tab'ы - все замечательно.
но табы не видны, хотя Parent я указал. Чую, что надо какое-то свойство включить на PageControl'e... |
||||||||
|
|||||||||
Vitalik |
|
||||||||||||||||
![]() Опытный ![]() ![]() Профиль Группа: Координатор проекта Сообщений: 653 Регистрация: 8.11.2004 Где: Ukraine, Kharkov Репутация: 2 Всего: 12 |
Справка пишет: "Owner property indicates the component that is responsible for streaming and freeing this component." ![]()
Аналога действительно нету ![]()
Дело в том, что функция-обработчик должна быть методом класса TForm1:
Всё гораздо проще ![]() Нужно просто для вкладок задать свойство PageСontrol:
И еще будет одно замечание ![]() Так писать нельзя:
![]() |
||||||||||||||||
|
|||||||||||||||||
Mal Hack |
|
||||||||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: нет Всего: 261 |
Даже не смотря на то, что кнопку я сам создаю, как-то не очень удобно получается. Может есть возможность обойти каким-ть образом, т.е. перехватить клик на кнопке?
![]()
![]() Спасибо еще раз... Моя благодарность не знает границ ![]() Добавлено @ 16:44
А как тогда правильно объявить? Пишу char *BBCodeNames[26][6]; - пишет: [C++ Error] Unit2.cpp(50): E2277 Lvalue required |
||||||||
|
|||||||||
Vitalik |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Координатор проекта Сообщений: 653 Регистрация: 8.11.2004 Где: Ukraine, Kharkov Репутация: 2 Всего: 12 |
Как-то должно быть можно, но сейчас уже поздно, так что быстро не соображу... Утро вечера мудренее ![]()
Это что еще такое? ![]() Если написать просто:
Покажи ка весь участок кода ![]() |
||||||
|
|||||||
Mal Hack |
|
||||||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: нет Всего: 261 |
Вот на этом и выдавал. Я решил проблемы так: AnsiString BBCodeNames[6];
Буду очень благодарен, если подскажешь. Главное не код, направь куда нужно ![]() |
||||||
|
|||||||
Vitalik |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Координатор проекта Сообщений: 653 Регистрация: 8.11.2004 Где: Ukraine, Kharkov Репутация: 2 Всего: 12 |
Хороший вариант ![]()
Хм... Пытался вчера сделать что-нить по этому поводу, но так и не получилось. Единственно могу направить: твоя ф-ция должна быть типа TNotifyEvent, а также к ней (или её адресу) возможно нужно как-то прикрутить __closure. В справке по этому __closure написано много всякой всячины, но я так особо и не понял, что там к чему... Там есть примеры кода, но они хотя и не по теме, но направить могут.
|
||||||||
|
|||||||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: нет Всего: 261 |
Че-то ничего не выходит... лан, будем думать... Спасибо в любом случае.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |