知识大全 剪贴板和动态数据交换(二)[2]

Posted 命令

篇首语:知识给世界带来光明,知识给人类增长财富。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 剪贴板和动态数据交换(二)[2]相关的知识,希望对你有一定的参考价值。

DELPHI基础教程:剪贴板和动态数据交换(二)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  数据发送在不同联接模式下是不同的 对于人工模式 增加了联接的打开和关闭操作 程序清单如下

  procedure TForm PokeBtnClick(Sender: TObject)

  begin

  If DDEItem = then

  begin

  MessageDlg( Can not Poke Data mtWarning [mbOK] )

  Exit;

  end;

  if Automatic then

  DDEClientConv PokeDataLines(DDEItem Memo Lines)

  else

  begin

  DDEClientConv OpenLink;

  DDEClientConv PokeDataLines(DDEItem Memo Lines)

  DDEClientConv CloseLink;

  end;

  end;

  打开Microsoft Office中的Excel 装入一个文件 把相关的单元选中 拷贝到剪贴板上 而后运行程序 按下Paste Link按钮 DDE联接就建立起来 相关单元中的数据显示在Memo 中 之后可以进行模式转换 数据申请 申请发送等一系列工作 运行后的屏幕显示如下图所示

   用客户程序控制程序管理器

  下面的例子用客户程序向程序管理器发送命令 用于创建程序组 程序项以及删除程序组

  程序管理器提供了应用程序的DDE接口命令字符串 应用程序利用这些命令字符串可以实现以下的功能

   创建程序组

  命令格式为

  CreateGroup(程序组名[ 程序组所在的路径])

  程序组不存在时进行创建 如程序组存在则按照指定的路径激活

   删除程序组

  命令格式为

  DeleteGroup(程序组名)

   显示程序组

  命令格式为

  ShowGroup(程序组名 显示标志)

  显示标志用于控制程序组在程序管理器中以极大 极小或正常方式显示

   重新装入程序组

  命令格式为

  ReLoadGroup(程序组名)

  该命令使程序管理器先删除而后再重新装入一个已有的程序组

   向程序组中添加程序项

  命令格式为

  AddItem(命令行[ 描述[ 图标路径[ 图标序号[ 图标横坐标 图标纵坐标[ 工作区目录[ 热键[ 是否最小化显示标志]]]]]]])

  命令行控制程序项的执行 可包括路径 参数等 其它参数分别对应在程序管理器中添加一个程序项时需要设置的参数和选项 它们都有缺省设置 因而是可选的

   替换程序组中的程序项

  命令格式为

  ReplaceItem(程序项名)

  该命令删除一个程序项 并将所删除程序项的位置记录下来 以后通过AddItem在这个所记录的位置增加新项目

   从程序组中删除程序项

  命令格式为

  DeleteItem(程序项名)

  从当前活动程序组中删除一个程序项

   关闭程序管理器

  命令格式为

  ExitProgram(是否保存程序组信息标志)

  从应用程序向程序管理器发送命令字符串的方法是基本一致的 为简便起见 在例程中只实现了其中仅包含一个字符串参数的情形 读者可以很容易作进一步的扩展

  程序设计界面如图所示 包含一个DDE客户会话(DDEClientConv)部件和四个完成不同功能的按钮

  DDEClientConv在设计时和程序管理器建立一个DDE会话 其中DDE服务器和DDE主题 都为PROGMAN 联接模式ConnectMode设置为ddeManual

  我们把只有一个字符串参数的命令发送情况抽象出来 形成下面的SendMacro函数

  function TForm SendMacro(Name: String;Command: String) Boolean;

  var

  Macro: String;

  Cmd: array[ ] of Char;

  begin

  Result := True;

  if Name <> then

  begin

  Macro := Format( [ +Command+ (%s)] [Name]) + # # ;

  StrPCopy (Cmd Macro)

  DDEClient OpenLink;

  if not DDEClient ExecuteMacro(Cmd False) then

  Result := False;

  DDEClient CloseLink;

  end;

  end;

  过程首先利用Format函数形成宏字符串

  Macro := Format( [ +Command+ (%s)] [Name]) + # # ;

  而后把Pascal类型的字符串拷贝到一个程序管理器可接受的PChar类型字符串中

  DDE联接采用人工模式 首先调用OpenLink方法 而后调用ExecuteMacro方法发送命令 如失败则返回False 最后用CloseLink关闭联接

  三个按钮CreateButton AddButton DeleteButton分别用于创建程序组 添加程序项 删除程序组 它们的程序实现大同小异 如下所示

  创建程序组

  procedure TForm CreateButtonClick(Sender: TObject)

  var

  Name: String;

  begin

  Name := InputBox( Input Box Input Group Name )

  if Name = then

  MessageDlg( Group name can not be blank mtError [mbOK] )

  else

  if SendMacro(Name CreateGroup ) = False then

  MessageDlg( Unable to create group mtInformation [mbOK] )

  end;

cha138/Article/program/Delphi/201311/25225

相关参考

知识大全 剪贴板和动态数据交换(二)[3]

DELPHI基础教程:剪贴板和动态数据交换(二)[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧

知识大全 剪贴板和动态数据交换(二)[1]

DELPHI基础教程:剪贴板和动态数据交换(二)[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧

知识大全 剪贴板和动态数据交换(一)[2]

DELPHI基础教程:剪贴板和动态数据交换(一)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧

知识大全 剪贴板和动态数据交换(一)[3]

DELPHI基础教程:剪贴板和动态数据交换(一)[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧

知识大全 剪贴板和动态数据交换(一)[1]

DELPHI基础教程:剪贴板和动态数据交换(一)[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧

知识大全 剪贴板和动态数据交换(一)[4]

DELPHI基础教程:剪贴板和动态数据交换(一)[4]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧

知识大全 数据结构考研分类复习真题 第八章 动态存储管理[2]

  .二进制地址为大小为()和()块的伙伴地址分别为_________________【上海大学二(分)】  无用单元是指________例________【北方交通大学二(分)】  四应用题  .伙

知识大全 利用剪贴板实现高速导出数据到Excel

利用剪贴板实现高速导出数据到Excel  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在很多的时

知识大全 动态性能视图,Oracle数据库维护的好帮手(二)

动态性能视图,Oracle数据库维护的好帮手(二)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 数据结构考研分类复习真题 第六章 答案 (五)[8]

  .[题目分析]本题静态链表中结点是按动态二叉链表的前序遍历顺序存放的首先对动态二叉链表的二叉树进行前序遍历填写静态链表的下标和data域再对动态二叉链表的二叉树进行层次遍历设队列Q填写静态链表的l