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

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

2022-06-13   來源: Delphi編程 

  procedure TDdeSrvrFormdoMacro(Sender: TObject;Msg: TStrings)

  var

  Cmd: String;

  i: Integer;

  begin

  Cmd := ;

  if MsgCount = then Exit;

  for I := to MsgCount do

  begin

  Cmd := MsgStrings[i];

  if UpperCase(Cmd) = COPYDDE then

  DDETestItemCopyToClipboard

  else if UpperCase(Cmd) = CLEAR then

  Memotext: =

  else if UpperCase(Cmd) = WS_NORMAL then

  WindowState := wsNormal

  else if UpperCase(Cmd) = WS_MINIMIZED then

  WindowState := wsMinimized

  else if UpperCase(Cmd) = WS_MAXIMIZED then

  WindowState := wsMaximized

  else

  MessageDlg(Invalid CommandmtWarning[mbOK]

  end;

  end;

  下面的DDE客戶程序主要是為了驗證上面的DDE服務器程序而設計的但同時也提供了一個DDE客戶程序設計的完整實例

  程序把接收到的DDE數據保存在一個TMemo類部件DDEDat中而欲發送給服務器的數據和宏指令在另一個TMemo類部件PokeDat中輸入兩個按鈕PokeBtnExecuteBtn用於發送數據和宏指令兩個菜單項File|New Link和Edit|Paste Link用於根據用戶的輸入建立新聯接和從剪貼板上粘貼DDE聯接

  DDE聯接的建立通過調用SetLink方法實現

  建立新聯接的實現代碼如下

  procedure TFormDdoNewLink(Sender: TObject)

  begin

  DDEClientSetLink (AppNameText TopicNameText)

  DDEClientItemDdeConv := DDEClient;

  DDEClientItemDDEItem := ItemNameText;

  end;

  通過從剪貼板粘貼聯接信息來建立聯接的實現代碼如下

  procedure TFormDEditClick(Sender: TObject)

  var

  Service Topic Item : String;

  begin

  PasteLinkEnabled := GetPasteLinkInfo (Service Topic Item)

  end;

  procedure TFormDdoPasteLink(Sender: TObject)

  var

  Service Topic Item : String;

  begin

  if GetPasteLinkInfo (Service Topic Item) then

  begin

  AppNameText := Service;

  TopicNameText := Topic;

  ItemNameText := Item;

  DDEClientSetLink (Service Topic)

  DDEClientItemDdeConv := DDEClient;

  DDEClientItemDdeItem := ItemNameText;

  end;

  end;

  在DDEClientItem的OnChange事件處理過程中把接收到的事件保存在DDEDat中

  procedure TFormDDDEClientItemChange(Sender: TObject)

  begin

  DDEDatLines := DDEClientItemLines;

  end;

  數據發送的實現代碼如下

  procedure TFormDdoPoke (Sender: TObject)

  var

  DDECli : TDDEClientConv;

  begin

  DDECli := DDEClientItemDdeConv;

  if DdeCli <> nil then

  DDECliPokeDataLines (DDEClientItemDDEItem PokeDatLines)

  end;

  宏指令發送的實現代碼如下

  procedure TFormDdoMacro (Sender: TObject)

  var

  DDECli: TDDEClientConv;

  Cmd: String;

  begin

  DDECli := DDEClientItemDdeConv;

  if DDECli <> nil then

  begin

  Cmd := PokeDatText + ##;

  DDECliExecuteMacroLines (PokeDatLines True)

  end;

  end;

  運行以上兩個程序建立DDE聯接經測試數據傳輸數據發送和宏指令的發送與執行都達到預期要求

   小結

  剪貼板和DDE是Windows下數據通信的兩種方法Delphi以簡便友好的方式實現了相應的功能為用戶編程提供了方便一般說來剪貼板多用於靜態數據傳輸而DDE用於動態數據交換控制其它程序運行等場合這些內容對於多用戶環境下的程序開發是很重要的

  返回目錄DELPHI基礎教程

       編輯推薦

       Java程序設計培訓視頻教程

       JEE高級框架實戰培訓視頻教程

  Visual C++音頻/視頻技術開發與實戰

  Oracle索引技術

  ORACLEG數據庫開發優化指南

  Java程序性能優化讓你的Java程序更快更穩定

  C嵌入式編程設計模式

  Android游戲開發實踐指南

[]  []  []  []  


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