2
AFH.
Приведенный Вами пример немножко отличается от того, что хотел реализовать (уже реализовал?
) топикстартер.
В примере метод класса каким-то образом (для внешней программы неважно каким) определяет, ссылку на объект какого конкретного класса нужно вернуть. Внешняя программа знает, что она должна получить, и преобразовывает ссылку на объект родительского класса к ссылке на объект нужного дочернего. И только потом уже использует специфические методы. Т.е. вызовом специфических методов занимается внешний код, который знает, с чем конкретно он работает. А не "внутренний" код, который просто создает нужный объект и возвращает ссылку на него.
Топикстартер хотел реализовать логику, когда вызов специфических методов осуществляется "внутри". Т.е. "внутрь" приходит ссылка на хз-что, и "внутренний" код самостоятельно разбирается, что это такое, и какие методы он может вызывать.
Может, это и не нарушение принципов ООП (фактически, при такой логике полиморфизм просто не используется или используется не везде), но, имхо, неудачный подход: при любых изменениях в иерархии, к которой принадлежит TForm1, придется анализировать и, возможно, править код FormShow. А если таких FormShow еще и несколько, при малейшем изменении иерархии появляется риск получить полную гамму малоприятных сексуальных удовольствий.