カスタムコンポーネントをコンポーネントパレットに入れたかったら、パッケージにしてIDEにインストールするしかありません。
そこでパッケージの作り方を説明。
おしながき.
開発者への配布を前提としたパッケージの作成.
条件.
パッケージを利用して作成したアプリケーション・DLLなどの成果物の配布先のすべてが、以下の条件を満たすことが、本節の条件です。もちろん、パッケージに入れたいもののソースファイルを入手していることが前提です。
- C++Builderの同じバージョン(6)をインストール済み。
- パッケージを配布・インストール可能。
- 配布されたパッケージを用いてソフトウェアの開発を行う。
作る物.
本節で作るのは、プロパティエディタ・コンポーネントエディタを含んだ、フルセットのパッケージです。
パッケージの作成手順.
パッケージ作成の具体的手順は以下のようになります。
まずは新しいパッケージを作ります。「ファイル−新規作成−その他」で表示される「新規作成」ダイアログで、「パッケージ」を選択します。
新しいパッケージが作成され、「パッケージ」ウィンドウが表示されます。プロジェクトマネージャを開いていたなら、プロジェクトマネージャ内に新しく生成されたパッケージが追加されます。実際使用するのは「パッケージ」ウィンドウのみで十分です。
ソースファイルの追加.
パッケージにソースファイルを追加します。
パッケージウィンドウの「Contains」またはその下位のアイテムが選択された状態で「追加」ボタンを押すと、「追加」ダイアログが現れます。このダイアログでパッケージに格納したいソースファイルを指定します。ソースファイルが複数ある場合、複数同時に指定できます。
パッケージの保存.
パッケージを作成しただけでは保存されないので、保存します。
パッケージウィンドウがアクティブな状態で、「ファイル」メニューの「上書き保存」「名前をつけて保存」「プロジェクトに名前をつけて保存」のいずれかを選択すると、パッケージを保存できます。
パッケージは以下のファイルで構成されます。詳細はあまり意識しなくてもいいようです。
- .bpk パッケージメイクファイル(設定を保存する)
- .bpl パッケージライブラリ
- .bpi パッケージ
インストール.
パッケージはコンパイルし、IDEにインストールして初めて使えるようになります。
ツールバーの「コンパイル」をクリックするか、コンテキストメニューの「コンパイル」「メイク」「再構築」の何れかを選択するとパッケージに含まれるソースファイルをコンパイルできます。
ツールバーまたはコンテキストメニューの「インストール」を選択すると、パッケージがIDEにインストールされます。パッケージにコンポーネントが含まれていれば、インストールして初めてコンポーネントパレットに反映されます。
アプリケーションユーザへの配布を前提としたパッケージの作成.
条件.
パッケージを利用して作成した成果物の配布先のすべてが、以下の条件を満たすことが、本節の条件です。もちろん前節と同じく、パッケージに入れたいもののソースファイルを入手していることが前提です。
- C++Builderの同じバージョン(6)をインストール済み。
- パッケージを配布・インストール可能。
- 配布先のユーザは、配布されたパッケージを使用しているソフトウェアを利用するだけで、開発は行わない。
作る物.
本節で作るのは、プロパティエディタ・コンポーネントエディタを含まず、コンポーネント本体のみを含んだサブセットのパッケージです。
パッケージの作成手順、保存.
前節で説明した手順とほぼ同じなのですが、「ソースファイルの追加」では、プロパティエディタ・コンポーネントエディタに関するソースを追加しないでください。
ソフトウェアの開発を行わないのなら、プロパティエディタ・コンポーネントエディタは必要ありません。プロパティエディタ・コンポーネントエディタのソースファイルをパッケージに組み込んでも、アプリケーションの実行時には使われることがないので、単なるメモリの無駄遣いになります。
保存に関しても前節と同じです。
インストール.
インストール手順も前節と同じです。しかしプロパティエディタ・コンポーネントエディタを含んでいないので、C++Builderを起動しても当然これらは使えません。
アプリケーションの一般への配布を前提としたライブラリの作成.
条件.
パッケージを利用して作成した成果物が前2節に該当しない場合、つまり何の制約もなく広く一般に配布することを目的とする場合について説明します。
パッケージはDLLの一種なので実行時に自動的にコールされます。しかしインストーラが使えないなどの理由により、ファイル構成を簡単にしたい場合には、ファイル数の増えるDLLはかえって厄介になることもあります。そこでパッケージと同様の内容のスタティックリンクライブラリを用意し、これをアプリケーションにスタティックリンクします。
パッケージも一緒に配布することに問題がなければ、パッケージを配布すればいいと思います。
作る物.
本節で作るのは、パッケージを使用して作られたアプリケーションを一般に配布するために必要となる、スタティックリンクライブラリです。
ただし、スタティックリンクライブラリのみではアプリケーションの設計・リンク時にコンポーネントを利用できなくなるので、前2節で作成したパッケージと併用します。つまり前2節で作成したパッケージが作成済みでなければなりません。
アプリケーションの設計中にはプロパティエディタ・コンポーネントエディタを含んだフルセットのパッケージが必要になりますが、一般配布用アプリケーションのリンク時にはプロパティエディタ・コンポーネントエディタを含まないサブセットのパッケージを用います。
ライブラリの作成手順.
ライブラリ作成の具体的手順は以下のようになります。
まずは新しいライブラリを作ります。「ファイル−新規作成−その他」で表示される「新規作成」ダイアログで、「ライブラリ」を選択します。
すると新しいライブラリが作成され、エディタウィンドウにソースが表示されます。プロジェクトマネージャを開いていたなら、プロジェクトマネージャ内に新しく生成されたライブラリが追加されます。
ソースファイルの追加.
ライブラリにソースファイルを追加します。
「プロジェクト−プロジェクトに追加」を選択して、またはプロジェクトマネージャで作成したライブラリを右クリックしてコンテキストメニューから「追加」を選択して、表示されるダイアログでソースファイルを選択します。
ただしプロパティエディタ・コンポーネントエディタのソースファイルは追加しないようにします。
アプリケーションの一般への配布においては、アプリケーションのプロジェクトオプションで「実行時パッケージを使って構築」のチェックを外してビルドしますが、このときプロパティエディタ・コンポーネントエディタのソースファイルをパッケージに組み込んでいると、これらのエディタ用のコードまで組み込まれてしまいます。プロパティエディタ・コンポーネントエディタはアプリケーションの実行時には使われることがないので、単なる無駄遣いになります。それだけでなく、プロパティエディタでフォームエディタを使用して独自のウィンドウ・ダイアログを使用していると、リンク時に「フォームファイルがない」と文句を言われます。
ライブラリの保存.
保存に先立ってプロジェクトオプションを設定します。「TLib」タブの中の「共有RTL DLLを使う」のチェックを外します。
ライブラリを作成しただけでは保存されないので、保存します。
「ファイル」メニューの「上書き保存」「名前をつけて保存」「プロジェクトに名前をつけて保存」のいずれかを選択して、またはプロジェクトマネージャで作成したライブラリを右クリックしてコンテキストメニューから「上書き保存」を選択して、ライブラリを保存できます。
ライブラリは以下のファイルで構成されます。詳細はあまり意識しなくてもいいようです。
- .bpr プロジェクトファイル(設定を保存する)
- .bpf プロジェクトファイル(?)
- .lib ライブラリ(静的ライブラリ)
アプリケーションとのリンク.
前節で作成したサブセットのパッケージを設計時パッケージに指定します。
指定方法は、プロジェクトオプションの「パッケージ」タブで「追加」ボタンを押して前節で作成したサブセットのパッケージを選択します。ただしフルセットのパッケージをインストール済みの場合、先にフルセットのパッケージのチェックを外しておきます。フルセットのパッケージとサブセットのパッケージは同じ名前のコンポーネントを含んでいるので、両方を同時に使用しようとするとエラーが発生します。そのためチェックボックスでどちらか一方だけを有効にします。
さらに、本節で作成したライブラリ(.lib)をアプリケーションのプロジェクトに追加し、アプリケーションをビルドします。
もちろん、ランタイムライブラリなしで実行できるように、アプリケーションのプロジェクトオプションで「共有RTL DLLを使う」と「実行時パッケージを使って構築」のチェックは外してビルドすることと思いますが。
リソースの準備.
パッケージに追加するソースファイルで、LoadFromResourceNameメソッドなどによりリソースを用いている場合、さらにもうひと手間必要です。
パッケージではリソースをDelphiコンポーネントリソースファイル(*.dcr)に格納します。しかしアプリケーションではリソースファイル(*.res)に格納されたリソーしか認識しません。Delphiコンポーネントリソースファイル(*.dcr)に格納していたリソースは、アプリケーションとのリンクに先立って、リソースファイル(*.res)にも格納しておく必要があります。アイコンなどはあの使い勝手の悪いイメージエディタでコピーするしかないので面倒ですが、この操作をやっておかないとアプリケーションを実行して始めて「リソースがない」と怒られることになります。
Copyright 2005-2016, yosshie.