Невизуальное наследование TForm
{
...
};
{
...
} ;
В том объеме, в котором задача описана - да, все правильно. Именно так и надо.
В том объеме, в котором задача описана - да, все правильно. Именно так и надо.
Спасибо за ответ.
Подразумевается авторегистрация всех дочерних форм в статическом свойстве базового класса. То есть вся логика работы формы инкапсулирована в ней самой, но все формы имеют общие методы и свойства логически их объеденяющие. Во всем остальном планируется использовать наследников как обычные формы.
Про подводные камни имелось ввиду следующее:
не возникнет ли проблем при использовании WinAPI-шных функций типа SendMessage которые требуют указатель на окно (например);
нет ли явных ограничений на подобного рода наследование (на просторах интернета читал что VCL-классы в явном виде не предназначены для создания дочерних классов вручную).
Проще говоря будет ли поведение таких форм отличатся от автоматически генерируемых билдером.
Подразумевается авторегистрация всех дочерних форм в статическом свойстве базового класса. То есть вся логика работы формы инкапсулирована в ней самой, но все формы имеют общие методы и свойства логически их объеденяющие.
Что такое "статическое свойство базового класса" в котором "подразумевается авторегистрация" - я хз. "Инкапсулирована логика" - тоже самое, по крайней мере если я знаю значение этого слова - то судить об этом никак не могу :) Если же автор под этим имеет ввиду что он все общие методы для конкретной формы свел в базовый класс - то это вероятно вполне разумное решение. Инкапсуляция же - подразумевает предоставление интерфейсов и сокрытие данных.
не возникнет ли проблем при использовании WinAPI-шных функций типа SendMessage которые требуют указатель на окно (например);
нет не возникнет (по крайней мере при публичном наследовании) так как ваш класс наследует от TWinControl (через TForm).
нет ли явных ограничений на подобного рода наследование (на просторах интернета читал что VCL-классы в явном виде не предназначены для создания дочерних классов вручную).
Проще говоря будет ли поведение таких форм отличатся от автоматически генерируемых билдером.
Нет, VCL-классы вполне себе предназначены для создания (и наследования) "вручную" :) точнее билдеру вобщем то глубоко все равно на это ведь он точно так же создает объекты. Вероятно имелось ввиду компоненты предназначенные для использования в дизигн-моде, там есть определенные требования, что бы среда разработки могла их обработать.
Но в целом, никаких проблем возникнуть не должно.