2012-04-12 23 views
-1

VCLは、MainForm以外のフォームでMDI子フォームをホストすることはネイティブに許可しません。これは、MicrosoftのMDIアーキテクチャの制限ではなく、Borlandのハードコーディングの制限です。マイクロソフトでは、アプリケーション内の複数のウィンドウでMDI子をホストできます。 Win32 APIにはMainFormsの概念はありません。複数のMDI親フォームを1つのアプリケーションに組み込む

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

このC++サンプルでは、​​MDI以外のプロジェクトで複数のMDI親フォームをホストする方法を示していますが、いずれもVCLのMainFormはありません。情報(ダウンロードするために必要なアカウント) http://cc.embarcadero.com/item/23574

直接ダウンロード(ダウンロードする必要がないアカウント)で

ダウンロード http://www.delphibasics.info/MultipleMDIParentFormsInASingleApplication.zip

誰かがembarcadroするembarcadro C++言語からこのサンプルを変換するならば、私は感謝されますデルファイ言語。ありがとうございました。

+4

スタックオーバーフローは、無料の変換サービスではありません。あなたが立ち往生した場合は、自分で試して特定の質問をする必要があります。 –

+4

私はその記事を書きました。変換の手助けが必要な場合は、Embarcaderoのフォーラムでリクエストを投稿するか、私的に私にメールしてください。 –

+2

アプリケーション内の単一のMDI親フォームでも1つが多すぎます。 :-)代わりにドッキングを使ってみてください。 –

答えて

4

Quality Central#12006 Hosting MDI child forms in non-MainForm formsには、サポートを追加する方法の回避策の詳細な手順が記載されています。それはVCLソースにパッチを当てることを伴い、Delphi 2005に対して投稿されたため、いくつかのステップが変更されている可能性があります。また、としていません。というように閉じているので、そのアプローチを採用する場合は、長期的にそれを維持する必要があります。