DELPHI剪贴板和动态数据交换基础教程_Delphi_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

DELPHI剪贴板和动态数据交换基础教程

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

本篇关键词:DELPHI剪贴板
黑客防线网安网讯:应用程序间的数据交换是象Windows 这样的多任务环境的重要特性。作为一种基于Windows的开发工具,Delphi支持如下四种数据交换方式:剪贴板、动态数据交换 ( DDE)、对象联接与嵌入(OLE)以及动态联接库(DLLs)。这中间

Topic = 'c:\excel\Example\sale.xls' 

        如果服务器是一个Delphi应用程序,缺省情况下主题是包含欲联接数据窗体的标题。如果服务器使用了DDEServerConv部件,则要求使用部件DDEServerConv的名称作为DDE主题。

        项目部件TDDEclientItemTDDEServerItem用于建立和维护DDE数据的传输通道。 DDE项目中包含着实际欲传输的数据。DDE项目的格式取决于DDE服务器应用程序。一个可能的DDE项目例子是电子表格中的单元和数据库表中的域。如果服务器是Delphi应用程序,则项目是连接的 DDEServerItem部件的名称。

        DelphiDDE实现机制方便、实用,但也有一个令人遗憾的缺陷:只能传输文本数据以及命令、宏,而不能传输图像数据。在这一点上微软公司推出的Visual Basic 要略胜一筹。不过在目前文本数据的使用仍是最广泛的,而且图像传输可以利用剪贴板和OLE来实现,则这一缺陷也并无很大的影响 

7.3 DDE客户程序的实现

        DDE客户程序启动DDE会话,向服务器请求并从服务器接收数据。同时还可以向服务器发送数据、命令、宏,改变服务器的状态并控制服务器的运行。 

7.3.1 联接模式(ConnectMode)

  DelphiDDE提供了两种联接模式:自动和人工。这可以通过DDEClinetConv 部件的ConnectMode属性进行设置。如下表所示。 

7.5 DDE的联接模式

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

     值           意      义

───────────────────────────────

   ddeAutomatic 在运行中当包含TDDEClientConv部件的窗口创建时

联接自动建立

   ddeManual 只有当调用OpenLink方法时联接才建立

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━   

不同联接模式,DDE客户程序的实现方式不同。

对于自动模式:

1. 向窗体中加入DDEClientConvDDEClientItem部件并命名;

2. DDEClientItem部件的DdeConv属性设置为DDEClientConv部件的名称;

如果在设计时建立,则通过对象观察器进行选择;如果在运行时建立联系, 则通过如下的一条语句设置属性的值: 

DDEClientItem1.DdeConv := 'DDEClientConv1' ; 

3. 和服务器建立联系,实现数据共享。

对于人工模式:

1.向窗体中加入DDEClientConv部件;

2.和服务器建立联系;

3. 数据更新时调用RequestData方法申请并获得数据。 

7.3.2 DDE服务器建立联系 

          和DDE服务器建立联系,既可以在设计时进行,也可以在运行时进行。

          在设计时,DDE联接可以通过剪贴板进行粘贴。具体步骤如下:

1. 激活服务器程序,并选中你的客户程序欲联接的数据;

2. 把数据和DDE联接信息拷贝到剪贴板上。一般说来这只需要选择服务器应用程序的 Edit|Copy 菜单;

3. Delphi IDE的设计窗体中选中DDEClientConv部件;

4. Object Inspector(对象观察器)中单击DDEService属性或DDETopic属性,然后再单击Ellipsis按钮,打开DDE Info对话框;

5.选择Paste Link按钮。此时App编辑框和Topic编辑框被自动填充。如果Paste Link按钮变灰,说明你准备用作服务器的应用程序不支持DDE或者DDE信息没有被成功地拷贝到剪贴板上;

6.选择OK 按钮。此时Object Inspector中的DDEServiceDDETopic 属性包含了建立一个DDE联接的正确值。

对于人工模式以下步骤是不需要的。

7.选中DDEClientItem部件,并在Object Inspector中设置DdeConv属性为已完成联接的DDEClientConv部件名称;

8.假如剪贴板上的DDE 联接信息仍保留的话,从Object Inspector的下拉列表框中选择 DDEItem 属性的值。否则输入正确的值。

在运行时,调用 SetLink 方法来建立DDE联接。

         SetLink有两个String类型的参数,分别用来接受DDEServiceDDETopic的值。过程执行后DDEClientConv部件的DDEService DDeTopic属性被设置。要注意的是:在运行时直接设置DDEServiceDDETopic的值并不能建立一个DDE联接,而必须调用SetLink 方法进行初始化。

        比如,下面的语句和ExcelSystem主题建立联接: 

DDEClietnConv. SetLink('Excel','System'); 

        调用SetLink方法后,还需要设置DDEClientItem部件的DDEItem属性。

        比如,下面的语句联接ExcelTopics项目,用以获取当前活跃文件的文件名: 

DDEClietnItem.DDEItem := 'Topics'; 

        当DDE联接建立后,联接的数据保存在DDEClientItem部件的TextLines 属性中,Text用于保存一个字符串(String)Lines用于保存一个字符串链表(TStrings)对象。

        为了显示联接数据,可以在DDEClientItemOnChange事件中把数值赋给一个可视部件。

下面的事件过程把联接数据实时地显示在一个编辑框中。

  procedure Form1.DDEClientItemChange(Sender: Tobject);

begin

Edit1.Text := DDEClientItem1.Text;

end; 

      运行状态下也可以从剪贴板上粘贴DDE联接信息,并调用SetLink建立DDE会话。下面的例子显示了当用户按下应用程序中的Paste Link按钮时,动态建立DDE会话的过程。 

procedure Form1.OnPasteLink(Sender: Tobject)

  var

Service, Topic, Item: String;

begin

if GetPasteLinkInfo (Service, Topic, Item) then

begin

AppName.Text := Service;

TopicName.Text := Topic;

ItemName.Text := Item;

DDEClient.SetLink (Service, Topic);

DDEClientItem.DdeConv := DDEClient;

DDEClientItem.DDEItem := ItemName.Text;

end;

end; 

        GetPasteLinkInfoDDEMan 库单元中定义的一个过程。如果返回True,则DDE联接信息保存在三个参数中;如果返回False,说明剪贴板上没有正确格式的DDE联接信息。 

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

footer  footer  footer  footer