-1

VCL は、MainForm 以外のフォームが MDI 子フォームをホストすることをネイティブに許可しません。これは Borland 側のハードコーディングされた制限であり、Microsoft の MDI アーキテクチャの制限ではありません。Microsoft では、アプリケーション内の複数のウィンドウが MDI の子をホストすることを許可しています。Win32 API には MainForms の概念はありません。

以下の embarcadro c++ の例を embarcadro delphi に変換しようとしましたが、成功しませんでした。MDI 子フォームを作成するときに、「現在アクティブな MDI フォームはありません」というエラーが発生し続けます。

この C++ サンプルは、MDI 以外のプロジェクトが複数の MDI 親フォームをホストできるようにする方法を示しています。これらのフォームはいずれも VCL の MainForm ではありません。

情報付きでダウンロード (ダウンロードにはアカウントが必要です) http://cc.embarcadero.com/item/23574

直接ダウンロード (ダウンロードにアカウントは不要) http://www.delphibasics.info/MultipleMDIParentFormsInASingleApplication.zip

このサンプルを embarcadro c++ 言語から embarcadro delphi 言語に変換していただけると幸いです。ありがとうございました。

4

1 に答える 1

5

Quality Central #12006 Hosting MDI child forms in non-MainForm forms の回避策の説明に、そのサポートを追加する方法の詳細な手順が記載されています。ただし、VCL ソースにパッチを適用する必要があり、Delphi 2005 に対して投稿されたため、手順の一部が変更されている可能性があります。また、Won't Doとしてクローズされているため、そのアプローチを追求する場合は、自分で長期的に維持する必要があります。

于 2012-04-12T19:35:33.317 に答える