Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.23;
Скачать: CL | DM;

Вниз

IDE Wizard   Найти похожие ветки 

 
prosoft   (2004-12-27 10:33) [0]

Здравствуйте.
Дано: необходим мастер для создания фреймов. Репозиторий по определенным причинам использовать нет возможности.
Решение: Создается потомок от TFrame с нужным функционалом. Регистрируется как TCustomModule в IDE. Пишется мастер создания фрейма.
Проблема: Все регистрируется. Фрейм создается именно как фрейм. НО... IDE отказывается его видеть в списке добавления фреймов на форму. При следующем открытии проекта созданный фрейм волшебным образом превращается в форму... Где копать?


 
Petr V. Abramov ©   (2004-12-27 14:12) [1]

Регистрируемый CustomModule должен быть наследиком некоего FrameModule. В D6 он находится в coride60, к которому dcp, естественно, нету (:
 В D7 - ищите :)


 
prosoft   (2004-12-27 14:48) [2]

Мда... вот засада то... в D7 он находится в delphivclide70.bpl, dcp соответственно к нему нет....


 
Petr V. Abramov ©   (2004-12-27 21:46) [3]

если не нужны published свойства у фрейма, все проблемы теоретически решить можно.


 
prosoft   (2004-12-29 09:56) [4]

Нет, published свойства не нужны. Куда копать?


 
Юрий Зотов ©   (2004-12-29 12:37) [5]

> prosoft   (29.12.04 09:56) [4]

Если published свойства не нужны, то не нужна и регистрация CustomModule. Просто уберите ее. Wizard должен через IOTAFile сгенерить исходники PAS и DFM (если надо). Пример такой генерации можно посмотреть у Сергея Орлика (эксперт CFPack).


 
prosoft   (2004-12-29 16:09) [6]

Так и было первоначально сделано. Тем не менее дизайнер IDE не видит в созданном фрейме оного. Т.е. его нельзя кинуть на форму как обычный фрейм. Регистрировать в палитре - теряется смысл фрейма как такового...


 
Юрий Зотов ©   (2004-12-29 17:40) [7]

> Т.е. его нельзя кинуть на форму как обычный фрейм.
> Регистрировать в палитре - теряется смысл фрейма как
> такового...

Попробуйте добавить в проект юнит со свежесозданным фреймом.


 
Petr V. Abramov ©   (2004-12-29 20:27) [8]

> нельзя кинуть на форму как обычный фрейм
 Его можно положить через IOTAFormEditor.CreateComponent.
 Скорее всего (не помню), предварительно понадобится RegisterClass
 Но юнит с фреймом все равно обязательно должен быть открыт, можно в невидимом виде ( IOTAModuleCreator.GetShowForm)


 
Petr V. Abramov ©   (2004-12-29 20:28) [9]

Warning!
провено электроникой, но в D6


 
prosoft   (2004-12-30 08:32) [10]

Спасибо, буду пробовать.


 
prosoft   (2004-12-31 10:02) [11]

Вобщем вопрос решился очень просто. Надо было написать наследника от TCustomModule и перекрыть один метод


function TMyCustomModule.Nestable: Boolean;
begin
Result := True;
end;


Соответственно и регистрация

RegisterCustomModule(TMyFrame, TMyCustomModule);



Страницы: 1 вся ветка

Текущий архив: 2005.10.23;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.043 c
14-1128319272
WandR
2005-10-03 10:01
2005.10.23
MappedPort под FreeBSD


14-1128331466
Андрей Жук
2005-10-03 13:24
2005.10.23
Названа самая популярная в мире песня


14-1128082751
Digitman
2005-09-30 16:19
2005.10.23
OleConvertIStorageToOLEStream


5-1104156102
Meson
2004-12-27 17:01
2005.10.23
Tools API, написание эксперта


14-1128195166
ArtemESC
2005-10-01 23:32
2005.10.23
Инфа о компиляторе