![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
IDE Wizard [D7, Win95/98, WinME, NT4, Win2k, WinXP]
prosoft © (2004-12-27 10:33:00)Здравствуйте.
Дано: необходим мастер для создания фреймов. Репозиторий по определенным причинам использовать нет возможности.
Решение: Создается потомок от TFrame с нужным функционалом. Регистрируется как TCustomModule в IDE. Пишется мастер создания фрейма.
Проблема: Все регистрируется. Фрейм создается именно как фрейм. НО... IDE отказывается его видеть в списке добавления фреймов на форму. При следующем открытии проекта созданный фрейм волшебным образом превращается в форму... Где копать?
prosoft (2004-12-31 10:02:00) [1]Вобщем вопрос решился очень просто. Надо было написать наследника от TCustomModule и перекрыть один метод
function TMyCustomModule.Nestable: Boolean;
begin
Result := True;
end;
Соответственно и регистрация
RegisterCustomModule(TMyFrame, TMyCustomModule);
prosoft (2004-12-30 08:32:00) [2]Спасибо, буду пробовать.
Petr V. Abramov (2004-12-29 20:28:00) [3]Warning!
провено электроникой, но в D6
Petr V. Abramov (2004-12-29 20:27:00) [4]> нельзя кинуть на форму как обычный фрейм
Его можно положить через IOTAFormEditor.CreateComponent.
Скорее всего (не помню), предварительно понадобится RegisterClass
Но юнит с фреймом все равно обязательно должен быть открыт, можно в невидимом виде ( IOTAModuleCreator.GetShowForm)
Юрий Зотов (2004-12-29 17:40:00) [5]> Т.е. его нельзя кинуть на форму как обычный фрейм.
> Регистрировать в палитре - теряется смысл фрейма как
> такового...
Попробуйте добавить в проект юнит со свежесозданным фреймом.
prosoft (2004-12-29 16:09:00) [6]Так и было первоначально сделано. Тем не менее дизайнер IDE не видит в созданном фрейме оного. Т.е. его нельзя кинуть на форму как обычный фрейм. Регистрировать в палитре - теряется смысл фрейма как такового...
Юрий Зотов (2004-12-29 12:37:00) [7]> prosoft (29.12.04 09:56) [4]
Если published свойства не нужны, то не нужна и регистрация CustomModule. Просто уберите ее. Wizard должен через IOTAFile сгенерить исходники PAS и DFM (если надо). Пример такой генерации можно посмотреть у Сергея Орлика (эксперт CFPack).
prosoft (2004-12-29 09:56:00) [8]Нет, published свойства не нужны. Куда копать?
Petr V. Abramov (2004-12-27 21:46:00) [9]если не нужны published свойства у фрейма, все проблемы теоретически решить можно.
prosoft (2004-12-27 14:48:00) [10]Мда... вот засада то... в D7 он находится в delphivclide70.bpl, dcp соответственно к нему нет....
Petr V. Abramov (2004-12-27 14:12:00) [11]Регистрируемый CustomModule должен быть наследиком некоего FrameModule. В D6 он находится в coride60, к которому dcp, естественно, нету (:
В D7 - ищите :)