delphi.gif (306 バイト) ActiveX Controlの使い方


toach.gif (917 バイト) Visual BasicなどのActiveXコントロールを使うには

  1. 「コンポーネント」-「ActiveXコントロールの取り込み」を実行して、登録されているコントロール一覧から当該コントロールを選択します。
  2. 「インストール」を行うと、VCLが再構築されて、コンポーネントパレットのActiveXタブに新しいアイコンが登録される。これは、他のコンポーネントと同様に使用できます。

 

toach.gif (917 バイト) Visual C++などで作成したCOMコンポーネントを使うには

  1. ActiveXコントロールでない、コンポーネント(ActiveX DLLやEXE)はコンポーネントパレットにインストールできません。これらは、具体的なコードを記述して使用することになります。
  2. つぎに使用例を示します。この例は、VC5とATLで作成した仮想LEDをオンオフするプログラムです。このコンポーネントはActiveX DLLとして作成されています。このコンポーネントには1つのプロパティStatusがあり、それに書いた値を読み出せるかを確認しています。なお、TButtonXはDelphiで作成したボタンです。

 

delphi1.gif (322 バイト)

unit MainForm;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  OleCtrls, ButtonXControl_TLB, ComObj, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    ButtonX1: TButtonX;
    Label1: TLabel;
    btnCtrl: TButton;
    Shape1: TShape;
    procedure OnClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure btnCtrlClick(Sender: TObject);
  private
    { Private 宣言 }
    com: Variant;
  public
    { Public 宣言 }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.OnClick(Sender: TObject);
begin
    Close
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
    try
        com := CreateOleObject('Vled1.VirLed1');
    except
        ShowMessage('Could not start the object.');
        Exit;
    end;
end;

procedure TForm1.btnCtrlClick(Sender: TObject);
begin
    if com.Status = 0 then
    begin
        com.Status := 1;
        Shape1.Brush.Color := clRed;
    end
    else
    begin
        com.Status := 0;
        Shape1.Brush.Color := clGray;
    end;
end;

end.

toach.gif (917 バイト) パラメータを省略したメソッドの呼び出し方

ActoveX/OLEではパラメータを省略してメソッドを呼び出すことができますが、Delphiではこのようなことは許されていません。しかし、そのようなことも必要なことがあります。個のような場合、つぎのような関数を省略パラメータとして使います。

 

function TfrmPeerA.NoParam: Variant;
begin
  TVarData(Result).VType := varError;
  TVarData(Result).VError:= DISP_E_PARAMNOTFOUND;
end;