SetFileName;
procedure Modified : WordBool read GretModified
end;
TMemeDoc类是MemoEdit程序的内部自动化类,因此不需要注册。外部OLE自动化控制器对它不能直接引用。如果要使外部控制器对自动化对象进行操作,则要在声明自动化对象的单元中调用Automation. ReGISterClass 进行注册。例程MemoAuto 单元定义了TMemoApp对象并进行注册。
unit MemoAuto
…
type
TMemoApp = Class(TAutoObject)
implementation
…
procedure RegisterMemoApp
Const
AutoClassInfo : TAutoClassInfo = (
AutoClass : TMemoApp;
ProgID : MemoEdit,Application
ClassIn : '{FIFF4880 - 200D - 11CF - BDCF - D020AFOE5B81}';
Description : 'Memo Editor Application';
Instancing : acSingle Instance );
begin
Automation,RegisterClass(AutoClassInfo)
end;
inibialization
RegisterMemoApp;
end;
自动化对象要在initialization部分中对自动化对象进行注册。 注册的信息用以唯一辨识服务器对象。把一个自动化对象加入到服务器中要用到这些信息。程序一旦注册了自动化对象,全局自动化对象将用OLE自动化API进行自动管理。
注册后的OLE自动化对象是引用记数的,因为对象可能被多个控制器控制。当使用完一个OLE对象,调用Release方法,Release可减少引用数目,当引用数目为零时,调用Free方法释放对象。
通常把OLE对象作为变体类型(variants)进行输出,任何OLE 对象的方法和属性必须返回一个包含OLE对象的变体类型,TAutoObject提供了一个变体类型的OLEObject属性。控制器不能直接得到服务器中的类或指针,而是引用OLE对象的OLEObject属性。
例程MemoAuto单元的NewMemo函数就是通过引用OLEObject 属性而提供引用TMemoDoc对象的接口。
function TMemoApp,NewMemo : Variant;
begin
Result := MainForm,CreateMemo(' '),OleObject;
end;
上一篇: Delphi 对象链接与嵌入(四)
下一篇: Delphi 拖放编程
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!



