熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Delphi編程 >> 正文

DELPHI基礎教程:剪貼板和動態數據交換(二)[2]

2013-11-23 17:51:45  來源: Delphi編程 

  數據發送在不同聯接模式下是不同的對於人工模式增加了聯接的打開和關閉操作程序清單如下

  procedure TFormPokeBtnClick(Sender: TObject)

  begin

  If DDEItem = then

  begin

  MessageDlg(Can not Poke DatamtWarning[mbOK]

  Exit;

  end;

  if Automatic then

  DDEClientConvPokeDataLines(DDEItemMemoLines)

  else

  begin

  DDEClientConvOpenLink;

  DDEClientConvPokeDataLines(DDEItemMemoLines)

  DDEClientConvCloseLink;

  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 TFormSendMacro(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)

  DDEClientOpenLink;

  if not DDEClientExecuteMacro(Cmd False) then

  Result := False;

  DDEClientCloseLink;

  end;

  end;

  過程首先利用Format函數形成宏字符串

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

  而後把Pascal類型的字符串拷貝到一個程序管理器可接受的PChar類型字符串中

  DDE聯接采用人工模式首先調用OpenLink方法而後調用ExecuteMacro方法發送命令如失敗則返回False最後用CloseLink關閉聯接

  三個按鈕CreateButtonAddButtonDeleteButton分別用於創建程序組添加程序項刪除程序組它們的程序實現大同小異如下所示

  創建程序組

  procedure TFormCreateButtonClick(Sender: TObject)

  var

  Name: String;

  begin

  Name := InputBox(Input BoxInput Group Name

  if Name = then

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

  else

  if SendMacro(NameCreateGroup) = False then

  MessageDlg(Unable to create group mtInformation [mbOK]

  end;

[]  []  []  []  


From:http://tw.wingwit.com/Article/program/Delphi/201311/25225.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.