delphi.gif (306 バイト) ダイアログのDLL化


よく使われるダイアログをDLLにすると便利です。また、Delphiで作ったダイアログをC++ Builderなどで容易に使うこともできます。

 

toach.gif (917 バイト) ダイアログDLLを作るには

  1. 通常のアプリケーションで、メインフォームをダイアログに変更します。
  2. このダイアログにはふつうOKボタンとCancelボタンを付けます。(ModalResultプロパティをmrOK,mrCancelにします)
  3. インターフェースルーチンを追加します。インターフェースルーチンは、ダイアログでOKボタンまたはCancelボタンが押されたときの結果を返します。(例参照)
  4. プロジェクトファイルをDLLプロジェクトに変更します。(例参照)
  5. 「プロジェクト/再構築」を実行してDLLを作成します。

 

インターフェースルーチンの例

toach.gif (917 バイト) インターフェースルーチンは、クラスの外でexport指令を付けて宣言します。

var
  Dialog1: TDialog1;

// インターフェースルーチンの宣言
function GetValue: Integer; export;

implementation

{$R *.DFM}

// インターフェースルーチンの実装
function GetValue: Integer;
begin
  Result := 0;  // デフォルトの戻り値
  Dialog1 := TDialog1.Create(Application); // インスタンスを作成
  try
    if Dialog1.ShowModal = IDOK then
    begin
      // OKボタンを押したとき
      Result := StrToInt(Dialog1.SpinEdit1.Text);
    end
    else
    begin
      // Cancelボタンを押したとき
      //   この例では何もしない
    end;
  finally
    Dialog1.Free;  // 最後にダイアログボックスを破棄
  end;

toach.gif (917 バイト) プロジェクトの例

library DllDialog;  // programをlibraryに変更

uses
  dlg1 in 'dlg1.pas' {Dialog1};

exports
  GetValue; // インターフェースルーチン
{$R *.RES}

begin
  // ここには何も書かない
end.

 

toach.gif (917 バイト) DLLダイアログの呼び出し例

var
  Form1: TForm1;

  function GetValue: Integer; external 'DllDialog.dll';

implementation

{$R *.DFM}


procedure TForm1.cmdExecClick(Sender: TObject);
begin
  Label1.Caption := 'Value = ' + IntToStr(GetValue);
end;