Delphi 2007 でCOMを使用するには?


Delphi 2007 から COMを使って帳票の表示・印刷を行うことができます。


プロジェクトの作成
ユニット(COM)の作成
ボタンクリックから帳票を表示




プロジェクトの作成

「Delphi 2007」を起動します。
「ファイル」メニューから「新規作成」−「VCL フォームアプリケーション」を選択します。

プロジェクトが作成されます。





ユニット(COM)を作成

COMのコンポーネント(ユニット)を作成しプロジェクトに追加します。
「コンポーネント」メニューから「コンポーネントのインポート」をクリックします。

以前にユニット(WfrvLib_TLB.pas)を作成している場合は、単純にプロジェクトに追加することができますが、COMインターフェース にメソッドやプロパティが追加され、追加された機能を使いたい場合は再構築が必要です。


「コンポーネントのインポート」ダイアログが表示されます。

「タイプライブラリの取り込み」を選択し「次へ」ボタンをクリックします。


「Wonderful Report 2005 Preivew」を選択し「次へ」ボタンをクリックします。


「次へ」ボタンをクリックします。(「コンポーネントラッパーの作成」はチェックしません)


「プロジェクトにユニットを追加」を選択し「完了」ボタンでダイアログを閉じます。
パッケージにユニット(コンポーネント)が追加されユニットの内容(WfrvLib_TLB.pas)が表示されます。





ボタンのクリックから帳票を表示

フォームにボタンを貼り付けダブルクリックします。



コードにイベント関数(この例では Button1Click)が追加されます。(下記コードの青字箇所)

unit Unit1;

interface

uses
   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
   Dialogs;

type
   TForm1 = class(TForm)
      Button1: TButton;
      procedure Button1Click(Sender: TObject);
   private
      { Private declarations }
   public
      { Public declarations }
   end;

var
   Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin

end;


end.


追加されたイベント関数でCOMを使って帳票を表示するコードを記述します。
(下記コードの赤字箇所)

unit Unit1;

interface

uses
   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
   Dialogs, StdCtrls, WfrvLib_TLB;

type
   TForm1 = class(TForm)
      Button1: TButton;
      procedure Button1Click(Sender: TObject);
   private
      { Private declarations }
   public
      { Public declarations }
   end;

var
   Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var

   objWfrv : iWfrv;
begin
   objWfrv := CoWfrv.Create;
   objWfrv.SetErrorMode(1, 0);
   objWfrv.Open('c:\sample\sample.wfr', '', '');
   objWfrv.Import('Data1', 0, 'c:\sample\sample.csv', '', '', '');
   objWfrv.Create;
   objWfrv.Visible := True;
end;

end.


この例のプロジェクトを実行すると次のように表示されます。





COMは呼び出し元アプリケーションとは別プロセスとして起動されます。
ウインドウの表示順位についてはOSに従います。

この例のアプリケーションを Windows Vista で実行するとフォームの後ろに表示されることが確認されています。