Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.03.2009, 13:18   #1
Oburec
Пользователь
 
Регистрация: 20.03.2009
Сообщений: 33
По умолчанию Создание компонента в designTime

Как в designTime создать невизуальный компонент (RegisterNoIcon), чтобы он прописался в код формы и отображался в табличке structures (инструмент просмотра созданных объектов на форме в designtime).

Вообще задача следующая: есть компонент мнемосхема TSheme (наследник TWinControl). требуется на ней создавать невизуальные компоненты (кнопки, бочки, лампочки и проч. АСУТП шные вещи). Компоненты должны быть не визуальными, тк отрисовываются с помощью OpenGl.
Oburec вне форума Ответить с цитированием
Старый 22.03.2009, 01:23   #2
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

По-моему что-то вроде:

Код:
var S : IOTAModuleServices;
    M : IOTAModule;
    ES : IOTASourceEditor;
    EF : IOTAFormEditor;
    C:IOTAComponent;
begin
   S := BorlandIDEServices as IOTAModuleServices;

   M := S.CurrentModule;
   ES := GetSourceEditor(M);
   EF := GetFormEditor(M);
   C := EF.GetRootComponent;                 // Это форма
   EF.CreateComponent(C, 'ComponentName', 10, 10, 10, 10);  // Это новый компонент
alexBlack вне форума Ответить с цитированием
Старый 22.03.2009, 11:07   #3
Oburec
Пользователь
 
Регистрация: 20.03.2009
Сообщений: 33
По умолчанию

Цитата:
Сообщение от alexBlack Посмотреть сообщение
По-моему что-то вроде:

Код:
var S : IOTAModuleServices;
    M : IOTAModule;
    ES : IOTASourceEditor;
    EF : IOTAFormEditor;
    C:IOTAComponent;
begin
   S := BorlandIDEServices as IOTAModuleServices;

   M := S.CurrentModule;
   ES := GetSourceEditor(M);
   EF := GetFormEditor(M);
   C := EF.GetRootComponent;                 // Это форма
   EF.CreateComponent(C, 'ComponentName', 10, 10, 10, 10);  // Это новый компонент
Нашел вчера решение. CreateComponent создает нормально только компоненты зареганые как RegisterComponent(page,[componentclass]); иначе возвращает ошибку сomponentClass not applicable to this module. Чтобы этого не происходило, нужно помимо регистрации компонента как registerNoIcon вносить в секцию инициализации модуля (где создается компонент) такую штуку
Код:
initialization
 registerClass(componentClass);

Последний раз редактировалось Oburec; 22.03.2009 в 11:17.
Oburec вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
создание компонента Bayazet Общие вопросы Delphi 4 17.12.2008 16:48
Создание компонента russianstrike Компоненты Delphi 15 01.10.2008 19:22
Создание компонента. Черничный Компоненты Delphi 2 01.06.2008 23:28
Создание собственного компонента Леха207 Помощь студентам 1 03.07.2007 12:45