Доброго дня!
Нахожусь в небольшом тупике. Есть приложение в котором у главного окна (MainForm) в процессе работы создаётся много дочерних форм. Все они разных типов, наследующих от TForm.
По нажатию кнопки все открытые дочерние окна должны быть закрыты
(с этим проблем нет MainForm->MDIChildren->Close())
Но так же нужно создать окна этих же типов заново!
То есть нужно перебирать открытые окна, закрывать каждое и открывать(создавать) такое же (так как необходимо, чтобы отработали заново конструктор и FormCreate())
Возможно ли решить проблему не влезая во все возможные классы дочерних окон и не создавая конструктор копирования?
Приведёт ли к решению CreateWindow? пока что функция возвращает ошибку: незарегистрированное имя класса, которое я беру из MainForm->MDIChildren->ClassName().
Спасибо!)
Как создать окно не определённого заранее класса?
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
Я не помню точно, имеется ли в библиотеке VCL такое понятие, как Runtime class, который позволяет создавать экземпляр объекта по имени класса. В библиотеке MFC на Visual С++ это используется как раз для таких целей.
А функция CreateWindow тебе здесь не поможет.
А функция CreateWindow тебе здесь не поможет.
Спасибо за ответ!
Частично помогла функция CreateForm
она как раз по id класса создаёт, но конструктор этого класса должен принимать на вход, увы, только TObject *Sender.
Частично помогла функция CreateForm

Тогда придётся самостоятельно реализовать так называемую "фабрику классов" (Class Factory). Или поискать в сети готовую реализацию для классов VCL.
Поумнеть несложно, куда труднее от дури избавиться.