コンポーネントの登録方法等
タイプライブラリの取り込み ( Delphi 6, 7 ) |
動作確認等 |
記事は,Windows XP(SP3) + Delphi 7 で作成 |
Shell32.DLL の機能をコンポーネントにする |
本サイトのサンプルプログラム集でも,Windows のシェルの Shell32.dll の機能を利用しているものがあります.以下の説明は,この Shell をコンポーネントとして登録する方法です.
この他,タイプライブラリの取り込みの例が,サンプルプログラム集にいくつかあります. |
|
図1
|
登録されているタイプライブラリの一覧が表示されます.この中から,取り込んでコンポーネントにするタイプライブラリを選択します.
この一覧のリストは,システムにインストールされているアプリケーション類によって異なります. |
|
図1
- [Microsoft Shell Controls And Automation] を選択
- [コンポーネントラッパーの作成] をチェック
- [インストール]
- [...は再構築されます] で [はい]
- ユニットディレクトリには,パスが通っている必要がある
- この図では,Delphi インストール先の [Imports],ここにはデフォルトでパスが通っている
|
|
図2
- [情報]ダイアログで[OK]
- パッケージのダイアログを閉じる時に [保存]
|
|
図3
- [Imports] 内に
Shell32_TLB.pas ができる
|
|
図4
- 登録されたコンポーネント
ShellFolderItem
ShellLinkObject
ShellFolderView
Shell
SearchCommand
|
[ユニットの作成] で [タイプライブラリの取り込み] を実行した場合は,コンポーネントのパレットには登録されません.実行時にコンポーネントを生成して使用します.この場合,[インストール] をしないので,コンポーネントはどのパッケージにも登録されません.
[ユニットの作成] というのは,実際にはユニットの作成だけをするという意味です.[インストール] でもユニットが作成されます.違いは,パッケージへ登録するかしないかです.
例えば,コンポーネントのクラス名が他のユニットにあるクラス名やインターフェイス名と重複することがあります.そのような場合には,ユニットだけを作成し,下のコードのように,どのユニットを使用するかを明示して (ユニットスコープを追加して) 利用できます. |
|
図5 |
uses Shell32_TLB;
procedure TForm1.Button1Click(Sender: TObject);
var
ObjShell : Shell32_TLB.TShell;
begin
ObjShell := TShell.Create(Self);
ObjShell.SetTime;
end;
[コンポーネントラッパーの作成] のチェック無しで [ユニットの作成] をした場合は,下のコードのように,Shell オブジェクトのインターフェイスを Create して使用することになります.
Delphi の利点は,コンポーネントとしてのクラスを使用する方法です.特別な理由がない限りお勧めできません.[コンポーネントラッパーの作成] をして[インストール] してもインターフェイスは使用できます. |
|
図6
[ユニットの作成]のみ |
uses Shell32_TLB;
procedure TForm1.Button1Click(Sender: TObject);
var
ObjShell : IShellDispatch;
begin
ObjShell := Shell32_TLB.CoShell.Create;
ObjShell.SetTime;
ObjShell := nil;
end;
[ ActiveX コントールの取り込み ] と [ タイプライブラリの取り込み ] |
OCX (ActiveX コントロール) ファイルで提供されている場合は,[コンポーネント] [ActiveX コントロールの取り込み] から該当するコントロールを [インストール] します.
一方,DLL の機能をタイプライブラリとして取り込む際,例えば,Personal 版で TWebBrowser を利用する場合,
- Shdocvw.dll(Microsoft Internet Controls (Version 1.1)
を [タイプライブラリの取り込み] でインストールして利用することができますが,これを,[ActiveXコントロールの取り込み] でインストールすると,下図のように,本当に [ActiveX コントロール] だけしか登録されません.
サードパーティが提供している OCX (ActiveX コントロール) のインストールは,そのサードパーティが提供している説明書で確認することになります.逆に,自分自身が OCX (ActiveX コントロール) を提供する場合は,説明書を添付することになります.
|
|
図7
[ActiveX の取り込み] の結果
|
|
図8
[タイプライブラリの取り込み] の結果
- ActiveX コントロールの他,以下のオブジェクトが追加されている
Internet Explorer
ShellWindows
ShellUIHelper
ShellNameSpace
|
|