コンポーネントの登録方法等
タイプライブラリの取り込み ( Delphi 2007 ) |
動作確認等 |
記事は,Windows 7 U64(SP1) + Delphi 2007-R2 で作成 |
ここでは,取り込んだコンポーネント類を,Delphi に標準で用意されている dclusr.dpk というパッケージに登録するものとします.
パッケージに登録 (インストール) しない場合はこの操作は必要ありません.パッケージに登録しない場合とは,以下の操作で [ユニットの作成] を選択する場合です.
ユニットの作成だけでいい場合は,通常のユニットファイルと同じ使い方となります. |
|
図1
パッケージを開いておく
- dclusr100.bpl は dclusr.dpk のコンパイル済みファイル
- デフォルトでは以下のフォルダにある
..Code Gear\RAD Studio\5.0\lib
|
[ コンポーネント ] [ コンポーネントのインポート ] で取り込む |
本サイトのサンプルプログラム集には,Windows のシェルの Shell32.dll の機能を利用しているものがあります.以下は,この Shell32.dll が持つ機能をコンポーネントとして登録する方法です. |
|
図2
- [コンポーネント]
- [コンポーネントのインポート]
- [タイプライブラリの取り込み] を選択
- [次へ]
|
登録されているタイプライブラリの一覧が表示されます.この中から,取り込んでコンポーネントにして利用するタイプライブラリを選択します.
この一覧のリストは,システムにインストールされているアプリケーション類によって異なります. |
|
図3
- [Microsoft Shell Controls And Automation] を選択
- [次へ]
|
|
図4
- 登録パレットを [ActiveX] に
- 存在しない名前だと新規作成される
- [コンポーネントラッパーの作成] をチェック
- [次へ]
|
|
図5
- 登録先のパッケージは,現在アクティブなパッケージ (プロジェクト) とする
- [完了]
|
|
図6
終了処理
- 追加したので [上書き保存]
- [再構築]
- [タイプライブラリの取り込み] 終了
|
|
図7
IDEを閉じて終了
- ユニット Shell32_TLB.pas が追加された
- これはデフォルトのままの時のユニットの保存先
- IDE を閉じて終了
|
|
図8
- パレットの [ActiveX] に登録された
- IDE を再起動すると更新される
|
[ユニットの作成] を選択した場合は,コンポーネントのパレットには登録されません.実行時にコンポーネントを生成して使用します.この場合,[インストール] をしないので,コンポーネントはどのパッケージにも登録されません.
[ユニットの作成] というのは,実際にはユニットの作成だけをするという意味です.[インストール] でもユニットが作成されます.違いは,パッケージへ登録するかしないかです.
例えば,コンポーネントのクラス名が他のユニットにあるクラス名やインターフェイス名と重複することがあります.そのような場合には,ユニットだけを作成し,下のコードのように,どのユニットを使用するかを明示して(ユニットスコープを追加して)利用できます. |
uses Shell32_TLB;
procedure TForm1.Button1Click(Sender: TObject);
var
ObjShell : Shell32_TLB.TShell;
begin
ObjShell := TShell.Create(Self);
ObjShell.SetTime;
end;
[コンポーネントラッパーの作成] のチェック無しで [ユニットの作成] をした場合は,下のコードのように,Shell オブジェクトのインターフェイスを Create して使用することになります.
Delphi の利点は,コンポーネントとしてのクラスを使用する方法です.特別な理由がない限りお勧めできません.[コンポーネントラッパーの作成] をして[インストール] してもインターフェイスは使用できます. |
uses Shell32_TLB;
procedure TForm1.Button1Click(Sender: TObject);
var
ObjShell : IShellDispatch;
begin
ObjShell := Shell32_TLB.CoShell.Create;
ObjShell.SetTime;
ObjShell := nil;
end;
OCX (ActiveX コントロール) ファイルで提供されているビジュアルなコンポーネント (コントロール) の場合は,[ActiveX コントロールの取り込み] を行います.
この場合も,登録先のパッケージを開いて,アクティブにしておきます. |
|
図9 |
|