DELPHI基础教程对象链接与嵌入篇_Delphi_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

DELPHI基础教程对象链接与嵌入篇

作者:黑客防线网安网站维护基地 来源:黑客防线网安网站维护基地 浏览次数:0

黑客防线网安网讯:对象链接和嵌入(Object Linking and Embeding)是一组服务功能,它提供了一种用源于不同应用程序的信息创建复合文档的强有力方法。 对象可以是几乎所有的信息类型,如文字、位图、矢量图形,甚至于声音注解和录像剪辑

  把OLE自动化对象加入服务器:

  1.Delphi集成开发环境中选择File| New 菜单项, 并在对象集中选择Automation

Object,Delphi打开自动化对象专家。

2.给自动化对象命名

   这是服务器内部标识OLE对象的名字,必须是个有效的面象对象Pascal标识符,习惯上以T字母开头;

  3.OLE类命名

   该名用以外部控制器创建对象。当服务器在Windows中注册OLE对象, 就以这个名字在系统注册。控制器使用这个名字调用CreateOLEObject来创建对象。

  4.描述要输出的对象。

  5.定义对象的实例(instancing),进程内服务器常定义为Multiple,进程外服务器常定义为Single

  6.选择OK键完成该过程

   自动化对象专家将产生以下代码:

   ● TAutoObject派生下来的自动化对象定义,但没有定义任何属性方法;

   ● 调用DelphiOLE自动化管理器的注册代码,管理器负责Windows中注册服务器和对象。 

  在注册代码中包括一个自动产生的ID号,这个ID号是全局唯一的,通常不要修改。每个ID号与一个OLE类名相对应,如果其中之一被改变,应用程序在使用时会发生错误。

  在创建了服务器并把OLE自动化对象加入服务器之后,控制器程序就可以对服务器进行操纵。 

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; 

其中TileWindowsOLE对象TMemoApp中定义的方法。

  AutoForm还通过TMemoAppNewMemo方法获得了对服务器内部OLE对象TMemoDoc 的引用。

 procedure TMainForm,CreateButtonClick(Sender : TObject);

var

I : Integer;

begin

CloseMemo

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

end; 

其中NewMemoMemoAuto单元中定义如下: 

  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;

InsertTMemoDoc中定义的方法,用以在子窗体中插入字符串。


    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-7704-1.html
网站维护教程更新时间:2012-03-02 12:53:40  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer