Deem |
Отправлено: 29.03.2004, 09:59 |
|
Мастер участка
Группа: Участник
Сообщений: 327
|
При создании компонента надо сделать свойсво типа указатель на другой объект (такие в 6 инспекторе объектов подсвечиваются красным). Создаю, делаю его published ( с Set... ,Get... и default = NULL). Компилирую-инсталлирую... В дизайн-тайме кладу на форму. В Инспекторе объектов свойсво есть, выпадающий список имеющихся объектов необходимого типа тоже есть. Можно выбрать, срабатывет Set... моего компонента. Все работает. Но если тот( другой) объект, указатель на который я положил в свойство своего компонента, выкинуть из формы (удалить, короче), то у инспектора объектов начинаются глюки, когда мыша находится радом или над описаным свойством моего компонента.
Вобщем, как-то ( я думаю) удаляемый объект, адрес которого я положил в свое свойсво, должен сообщить моему компоненту или билдеру об удалении, чтоб это свойство сбросить в NULL.
Или там какая-то другая технология? Подскажите, плиз.
|
|
olegenty |
Отправлено: 29.03.2004, 10:37 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
скорее всего ты что-то где-то неверно написал в Set и Get, потому что у меня исторически всё работало без глюков... хотя, я ни Set, ни Get не пользовался, вернее, было не надо.
вот рабочий кусок:
CODE |
...
private:
TpFIBDatabase *m_pDb;
...
published:
__property TpFIBDatabase Database = {read = m_pDb, write = m_pDb};
... |
и всё работает давным давно...
|
|
Deem |
Отправлено: 29.03.2004, 15:52 |
|
Мастер участка
Группа: Участник
Сообщений: 327
|
private:
TIBDatabase *m_pDb;
...
__published:
__property TIBDatabase * Database = {read = m_pDb, write = m_pDb};
У меня не нашлось FIB, поэтому я так сделал.
Однако, исталлировать компоненту на смог, т.к.
сначала " надо "
Add dbrtl
Add ibxpress.
Жму Ok.
Далее:
Cannot load package 'dbrtl60'. It contains unit 'SqlTimSt', 'which it also contained in package 'DeemLib'
А потом сделал так:
private:
TPreviewBox *PB;
__published:
__property TPreviewBox * PreviewBox = {read = PB, write = PB};
Глюк тот же. Таботать-то работет. Но если объект (уже указанный в свойстве) типа TPreviewBox * удаляешь с формы (в дизайн-тайме), инспеткор объектов фигеет.
|
|
olegenty |
Отправлено: 30.03.2004, 08:14 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
dbrtl60 принудительно присоедини к DeemLib. а лучше, маленький сорец пришли...
|
|
olegenty |
Отправлено: 30.03.2004, 08:33 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
Ё!!!
Только что проверил свой старый проект, и точно — глюк есть. В пятом билдере его не было... ХЗ, я в прострации...
|
|
xTrim |
Отправлено: 30.03.2004, 09:37 |
|
Машинист паровоза
Группа: Участник
Сообщений: 208
|
Все верно, перекрывай виртуальный метод Notification и проверяй не тот ли компонетнт на который ты ссылаешься послал opRemove. Так было кстати всегда.
|
|
olegenty |
Отправлено: 30.03.2004, 10:07 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
Может быть, оч. может быть. Просто я как кинул компонент, так он и лежал.
А я уж грешным делом подумал, что дизайнерские пакеты принудительно ещё включить надо. Было что-то у меня с ними связано. А сейчас я от разработки "ядренных" компонентов отошёл: отлаживать труднее.
|
|
Deem |
Отправлено: 30.03.2004, 17:27 |
|
Мастер участка
Группа: Участник
Сообщений: 327
|
xTrim, спасибо. Тут все работает (с указателем на объект). Я нигде не встречал подобной штуки. Книжка по билдеру 6 перед носом толстенная лежит: там тоже нет.
Вот бы еще разобраться с эти модулями, из-за которых компоненты не грузятся. Что-то тут какая-то фигня. Когда на на паскале пишеш, нет же файлов-заголовков. Обязательно uses будет. А это похуже.
И получается, когда мой новый компонент использует другой, уже инсталлированный в пол-литре, его чо, нельзя всвавлять в палитру? Наследовал я стандартные компоненты, и нормально. Вот попробовал IBX — и не вышло. А как крутиться-то?
Отредактировано Deem — 30/03/2004, 18:30
|
|
olegenty |
Отправлено: 31.03.2004, 09:45 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
Да нет же, просто принудительно скажи своему пакэджу, чтобы он пользовался ракаждем IBX.
это в окне Package->Requires->Add, и добавь туда IBX.
Ограничение тут следующее: каждый вновь создаваемый пакет может истопльзовать модули другого существующего, только включая его в секцию Requires.
Если не получится, иходник тестовый пришли — посмотрю.
|
|
Deem |
Отправлено: 05.04.2004, 12:25 |
|
Мастер участка
Группа: Участник
Сообщений: 327
|
to olegenty
Слушай, ты мне глаза раскрыл. Я-то думал, если требуется, то прилинкуется модуль, а потом орать будет, что уже есть. Оказывается, это наоборот: избавление от линковки. Я пока не игрался с этим. Но помню, что когда при компиляции вылезло окно "нужны модули" и я сказал — добавляй, они появились в списке required. Но установить компоненты не получилось.
Ладно, может я ошибаюсь. Посмотрю внимательнее.
|
|
olegenty |
Отправлено: 05.04.2004, 12:56 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
ты только тему добей, в смысле, резюмируй, у тебя пропёрло, или нет?
|
|
Deem |
Отправлено: 06.04.2004, 16:26 |
|
Мастер участка
Группа: Участник
Сообщений: 327
|
Короче, я поигрался снова, с нуля. Все делал в автоматическом режиме.
NewComponent
Создаю TMyPanel от TPanel, ничего не добавляю, сохраняю файл.
Далее InstallComponent в новый пакедж My (компонент беру с диска, TMyPanel.cpp )
Выходит проект My.bpk
Компилю его. Все класс. Добаляю компоненту свойство TIBDatabase* Database. Добаляю include IBDatabase.hpp. Компилю,
и появляется окно "требуются пакеджи" : ibxpress и dbrtl . Я жму Ок, и они попадают в requires. Снова компилю. Все нормально. Инстолю — и хрен. Уже есть ... ля-ля-тополя... Удаляю требующиеся пакеты. Снова компилю, снова крики "добавьте". Снова соглашаюсь. Добавилось, откомпилилось, инсталлировалось.
Резюме: глюки. Но это уже не страшно для меня. Я знаю что работать заставить можно. А это — самое главное. Всем спасибо.
|
|
olegenty |
Отправлено: 07.04.2004, 07:35 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
пришли в архиве сорец пакета, постараюсь поправить. (это ДОЛЖНО работать без глюков. первое ядро моего проекта было написано именно с использованием IBX и именно так).
yevseyev@az.kamaz.org
|
|
Deem |
Отправлено: 13.04.2004, 11:31 |
|
Мастер участка
Группа: Участник
Сообщений: 327
|
Спасибо, да ладно. Там и сорца-то нет. Я добавил только три строчки. Остальное сгенерил автомат. Это может глюк локальный у меня. Хрен с ним. Разобрался — и ладно.
|
|