У меня есть package, в котором лежит вот такой класс форм:
class PACKAGE TMyForm: public TForm {...}
Я хочу использовать этот класс в качестве родительского для форм в другом своём проекте. То есть объявлять там классы вида:
class TFooForm: public TMyForm {...}
Никаких проблем с компиляцией и линковкой у меня не возникло. Всё собирается и замечательно работает.
Проблема в том, что IDE Билдера совершенно не хочет видеть TMyForm, когда в dmf-ке формы TFooForm написано не
object FooForm: TFooForm
...
end
а
inherited FooForm: TFooForm
...
end
Во втором случае, каждый раз когда я пытаюсь открыть для дизайнирования FooForm, мне выскакивает сообщение:
"Error creating form: Ancestor for 'TMyForm' not found".
А мне нужен именно '
inherited', а не '
object', ведь иначе в FooForm не будут видны поля и обработчики событий, которые я определил для TMyForm.
Подскажите пожалуйста что делать. Приветствуются любые комментарии. Может кто-нибудь уже сталкивался с этой проблемой?
ЗЫ: Речь идет о версии билдера (или Delphi) 5.0.
Здравствуйте Eugals, Вы писали:
E>У меня есть package, в котором лежит вот такой класс форм:
E>E>class PACKAGE TMyForm: public TForm {...}
E>
E>Я хочу использовать этот класс в качестве родительского для форм в другом своём проекте. То есть объявлять там классы вида:
E>E>class TFooForm: public TMyForm {...}
E>
E>Никаких проблем с компиляцией и линковкой у меня не возникло. Всё собирается и замечательно работает.
E>Проблема в том, что IDE Билдера совершенно не хочет видеть TMyForm, когда в dmf-ке формы TFooForm написано не
E>E>object FooForm: TFooForm
E>...
E>end
E>
E>а
E>E>inherited FooForm: TFooForm
E>...
E>end
E>
E>Во втором случае, каждый раз когда я пытаюсь открыть для дизайнирования FooForm, мне выскакивает сообщение: "Error creating form: Ancestor for 'TMyForm' not found".
E>А мне нужен именно 'inherited', а не 'object', ведь иначе в FooForm не будут видны поля и обработчики событий, которые я определил для TMyForm.
E>Подскажите пожалуйста что делать. Приветствуются любые комментарии. Может кто-нибудь уже сталкивался с этой проблемой?
E>ЗЫ: Речь идет о версии билдера (или Delphi) 5.0.
Дело в том, что IDE по какой-то причине не находит кода формы-предка. Для того, чтобы он был, попробуй
а) открыть сначала TMyForm, а потом FooForm
б) проверить пути в опциях проекта в CB и сравнить их с Delphi.
Здравствуйте Sinclair, Вы писали:
S>Дело в том, что IDE по какой-то причине не находит кода формы-предка. Для того, чтобы он был, попробуй
S>а) открыть сначала TMyForm, а потом FooForm
S>б) проверить пути в опциях проекта в CB и сравнить их с Delphi.
а) Спасибо, помогло!
Правда не очень-то это удобно -- каждый раз открывать одну форму, для того, чтобы редактировать другую
б) С путями всё в порядке. Просто проблема в том, что Билдер "не видит" в репозитарии проекта те формы, которые определены не в самом этом проекте, а во внешнем package.
Нет ли какого-нибудь способа это исправить? Заранее благодарен за ответ.
Здравствуйте Eugals, Вы писали:
E>У меня есть package, в котором лежит вот такой класс форм:
E>E>class PACKAGE TMyForm: public TForm {...}
E>
E>Я хочу использовать этот класс в качестве родительского для форм в другом своём проекте. То есть объявлять там классы вида:
E>E>class TFooForm: public TMyForm {...}
E>
E>E>ЗЫ: Речь идет о версии билдера (или Delphi) 5.0.
Не знаю в ту же тему или нет?
Но у меня при наследовании форм выяснился такой глюк (или фича)
Вызов OnCreate OnDestroy и конструкторов/деструкторов идет в разных порядках в зависимости от того используется сборка с рунтайм пакетами или без такового.
Выход — ушел от использования этих событий.