程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 第八章-對象鏈接與嵌入(二)(4)

第八章-對象鏈接與嵌入(二)(4)

編輯:Delphi

8.4.3 自動化另一程序 

每個服務器在系統注冊中有一個叫ProgID的關鍵定,主要用以控制器辨識服務器。任何控制器可以用ProgID號來創建OLE對象實例。例程AutoForm是控制器程序,它在其主窗體創建了OLE對象實例。 

procedure TMainForm.FormCreate(Sender : TObject);

begin

try

MemoEdit := CreateOleObject('MemoEdit.Application');

except

MessageDlg(

'An instance of the "MemoEdit Application"OLE Automation Class could

not be created,Make sure that the MemoEdit application has been registered

using a "MemoEdit|regserver"command line',

mtError,[mbok],0)

Halt;

end;

end; 

控制器創建了OLE自動化對象實例後,可對其進行操縱。OLE自動對象包括屬性和方法,雖然OLE自動化對象與面向對象Pascal中的對象不是同一概念,但Delphi允許使用與類似的語法對OLE對象的方法進行調用。

AutoForm的很多過程引用了OLE自動化對象的方法: 

procedure TMainForm,TileButtonClick(Sender : Tobject);

begin

MemoEdit,TileWindow;

end; 

其中TileWindows是OLE對象TMemoApp中定義的方法。

AutoForm還通過TMemoApp的NewMemo方法獲得了對服務器內部OLE對象TMemoDoc 的引用。

 procedure TMainForm,CreateButtonClick(Sender : TObject);

var

I : Integer;

begin

CloseMemo

for I := 1 to 3 do Memos[2] := MemoEdit.NewMemo;

end; 

其中NewMemo在MemoAuto單元中定義如下: 

function IMemoApp.NewMemo : Variant;

begin

Result := MainForm,CreateMemo(' '),OleObject;

end;

控制器在獲得服務器的內部OLE對象後,可以引用其方法: 

procedure TMainForm.AddTextButtonClick(Sender,TObject);

var

I : Integer;

begin

for I := 1 to 3 do

if not var IsEmpty(Memo[I]) then

Memo[I],Insert{'This text was added through OLE Automation'#13#10);

end;

Insert是TMemoDoc中定義的方法,用以在子窗體中插入字符串。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved