Ktouth Brand. on Web

け〜くんこと K.Ktouth のだらだらした日常と突発的に作るプログラムや読み物とかの雑多サイト



MDIプログラムで、子フォームを.DLLに分割したい。その2

2005年09月05日 19:48更新 筆者:K.Ktouth

MDI形式のアプリケーションで、大量のフォームを持っている場合や、プラグインなどの形式で追加フォームをサポートしたい場合など、外部DLLからMDI子フォームを作成、表示したいことがあります。
しかし、そのまま作成した場合、MDI子フォームとして動作してくれません。

Ver3以降のDelphi/C++Builderで.DLLに分割したい場合、面倒な事をしなくてもパッケージの機能を使えば簡単に実現できます。
※ パッケージは、Delphi3から追加されたライブラリの分割機能です。
パッケージ機能を持たないDephi2やC++Builderの場合は、問題がありますが、各種インスタンスを明示的にコピーする手法を参照してください。

対処方法

方法を以下に説明します。

  1. 普通のプロジェクトで、MDIの親子を作ります。
    このときはプロジェクトを親/子フォーム別に分ける必要はありません。
  2. ファイル|新規作成メニューから、パッケージを選択して新規パッケージを作ります。
    パッケージ名は分割したい.DLLの名前にしてください。
  3. 追加ボタンで、その新規パッケージにMDIの子ウィンドウのユニットをパッケージに追加する。
    フォームのユニットのみでも、また、他のユニットを追加してもかまいません。
  4. パッケージをコンパイルインストールします。
    この際、パッケージオプションの情報|使い方の設定『実行時パッケージ』にチェックが入っているかを確認してください。
  5. MDIプロジェクトで、プロジェクト|オプション|パッケージ『実行時パッケージを使用して構築』を選び、追加ボタンで、先程のパッケージを選択して追加します。
    もし、他のパッケージ(VCLのパッケージなど)を分割したくない場合は、それらのパッケージを実行時パッケージのリストから削除してください。

この際、くれぐれも『デフォルト』 をチェックしないように気をつけましょう!!

本日のリンク元
その他のリンク元
検索