Delphi Programming / Object Pascal
サイトのトップページへ リンクのページへ ロゴマーク
[掲載 2008年09月26日] [更新 2011年11月08日] コンポーネントのインストール方法(登録方法)等
コンポーネントの登録方法等
タイプライブラリの取り込み ( Delphi 2007 )
動作確認等 記事は、Windows 7 U64(SP1) + Delphi 2007-R2 で作成







登録先のパッケージを開いておく


ここでは、取り込んだコンポーネント類を、Delphi に標準で用意されている dclusr.dpk というパッケージに登録するものとします。
パッケージに登録 (インストール) しない場合はこの操作は必要ありません。パッケージに登録しない場合とは、以下の操作で [ユニットの作成] を選択する場合です。
ユニットの作成だけでいい場合は、通常のユニットファイルと同じ使い方となります。


タイプライブラリの取り込み01 図1
パッケージを開いておく
  • dclusr100.bpl は dclusr.dpk のコンパイル済みファイル
  • デフォルトでは以下のフォルダにある
    ..Code Gear\RAD Studio\5.0\lib




[ コンポーネント ]  [ コンポーネントのインポート ] で取り込む


本サイトのサンプルプログラム集には、Windows のシェルの Shell32.dll の機能を利用しているものがあります。以下は、この Shell32.dll が持つ機能をコンポーネントとして登録する方法です。


タイプライブラリの取り込み01 図2

  • [コンポーネント]
  • [コンポーネントのインポート]
  • [タイプライブラリの取り込み] を選択
  • [次へ]

登録されているタイプライブラリの一覧が表示されます。この中から、取り込んでコンポーネントにして利用するタイプライブラリを選択します。
この一覧のリストは、システムにインストールされているアプリケーション類によって異なります。


図3

  • [Microsoft Shell Controls And Automation] を選択
  • [次へ]
タイプライブラリの取り込み03 図4

  • 登録パレットを [ActiveX] に
  • 存在しない名前だと新規作成される
  • [コンポーネントラッパーの作成] をチェック
  • [次へ]
タイプライブラリの取り込み03 図5

  • 登録先のパッケージは、現在アクティブなパッケージ (プロジェクト) とする
  • [完了]
タイプライブラリの取り込み03 図6
終了処理
  • 追加したので [上書き保存]
  • [再構築]
  • [タイプライブラリの取り込み] 終了
タイプライブラリの取り込み03 図7
IDEを閉じて終了
  • ユニット Shell32_TLB.pas が追加された
  • これはデフォルトのままの時のユニットの保存先
  • IDE を閉じて終了
タイプライブラリの取り込み03 図8

  • パレットの [ActiveX] に登録された
  • IDE を再起動すると更新される




ユニットの作成の場合


[ユニットの作成] を選択した場合は、コンポーネントのパレットには登録されません。実行時にコンポーネントを生成して使用します。この場合、[インストール] をしないので、コンポーネントはどのパッケージにも登録されません。
[ユニットの作成] というのは、実際にはユニットの作成だけをするという意味です。[インストール] でもユニットが作成されます。違いは、パッケージへ登録するかしないかです。

例えば、コンポーネントのクラス名が他のユニットにあるクラス名やインターフェイス名と重複することがあります。そのような場合には、ユニットだけを作成し、下のコードのように、どのユニットを使用するかを明示して(ユニットスコープを追加して)利用できます。


リスト1 
uses Shell32_TLB;

procedure TForm1.Button1Click(Sender: TObject);
var
   ObjShell : Shell32_TLB.TShell;
begin
   ObjShell := TShell.Create(Self);
   ObjShell.SetTime;
end;




コンポーネントラッパーの生成をしない場合


[コンポーネントラッパーの作成] のチェック無しで [ユニットの作成] をした場合は、下のコードのように、Shell オブジェクトのインターフェイスを Create して使用することになります。
Delphi の利点は、コンポーネントとしてのクラスを使用する方法です。特別な理由がない限りお勧めできません。[コンポーネントラッパーの作成] をして[インストール] してもインターフェイスは使用できます。


リスト2 
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 コントロールの取り込み] を行います。
この場合も、登録先のパッケージを開いて、アクティブにしておきます。


タイプライブラリの取り込み04 図9