首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> Delphi

Delphi OLE 自動化控制器開發:創建 OLE 對象實例、調用服務端方法、獲取內部對象引用

     編輯:Delphi

8.4.3 自動化另一程序

每個服務端在系統註冊表有 ProgID 鍵值,控制器用其創建 OLE 對象實例。例程 AutoForm 為控制器,主窗體創建實例:

procedure TMainForm.FormCreate(Sender: TObject);
begin
  try
    MemoEdit := CreateOleObject('MemoEdit.Application');
  except
    MessageDlg(
      'An instance of the "MemoEdit Application" OLE Automation Class could'#13#10 +
      'not be created. Make sure that the MemoEdit application has been registered'#13#10 +
      'using a "MemoEdit /regserver" command line',
      mtError, [mbOK], 0);
    Halt;
  end;
end;

操控 OLE 自動化對象

創建實例後可操控。OLE 對象含屬性/方法,Delphi 允許用類似語法調用方法:

procedure TMainForm.TileButtonClick(Sender: TObject);
begin
  MemoEdit.TileWindow;  // TileWindow 為 OLE 對象 TMemoApp 定義方法
end;

獲取服務端內部 OLE 對象引用

通過 TMemoApp.NewMemo 獲得 TMemoDoc 引用:

procedure TMainForm.CreateButtonClick(Sender: TObject);
var I: Integer;
begin
  CloseMemo;
  for I := 1 to 3 do Memos[I] := MemoEdit.NewMemo;
end;

NewMemo 定義於 MemoAuto:

function IMemoApp.NewMemo: Variant;
begin
  Result := MainForm.CreateMemo('').OleObject;
end;

調用內部對象方法

控制器獲得內部對象後可引用其方法:

procedure TMainForm.AddTextButtonClick(Sender: TObject);
var I: Integer;
begin
  for I := 1 to 3 do
    if not VarIsEmpty(Memos[I]) then
      Memos[I].Insert('This text was added through OLE Automation'#13#10);
end;

Insert 為 TMemoDoc 定義方法,在子窗體插入字符串。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved