У меня в настоящее время есть приложение SDI, которое является сборкой с Delphi 7, я хочу, чтобы заключительный пользователь выбрал тип интерфейса между SDI и MDI во времени выполнения. мой вопрос состоит в том, как я могу изменить поведение приложения между SDI и MDI во времени выполнения?
В настоящее время я знаю несколько сборок приложений с Дельфи, которые позволяют это: EMS менеджер по SQL и ЖАБА.
заранее спасибо.
Скачайте Jedi JVCL, установите его и посмотрите на Демонстрацию для JvDocking "стыковка в коде". Именно это они и делают.
Они означают, что на самом деле вы не используете FormStyle=fsMDIChild, если только не хотите много проблем. MDI "эмулируется", когда вам это нужно, пристыковавшись в коде.
Не конвертируйте окна в рамки. Это плохое решение.
Для среды, похожей на MDI, в которой нет проблем с MDI, используйте стыковочное решение (компоненты с коммерческим или открытым исходным кодом, поддерживающие стыковку). Я использую JvDocking, который входит в JEDI JVCL, свободный и с открытым исходным кодом.
Вы используете свои формы как в режиме "docked", так и в режиме "undocked" (плавающий), и это дает вам пристыкованный вид IDE (VIsual Studio и RAD Studio), и пристыкованный вид IDE (RAD Studio в режиме "undocked", или классический delphi 7).
Я бы преобразовал свои текущие окна в рамки и поместил эти рамки с align=alClient либо в дочерние mdi окна, либо в обычные окна в соответствии с настройками.
Но будьте осторожны: на самом деле я никогда этого не делал, так что могут быть проблемы, о которых я не знаю.
при установленном времени выполнения Tform.formstyle либо на fsnormal или fsmdichild в зависимости от того, если вы хотите SDI или MDI.