其他语言

位置:IT落伍者 >> 其他语言 >> 浏览文章

DELPHI基础教程:剪贴板和动态数据交换(二)[4]


发布日期:2019年03月19日
 
DELPHI基础教程:剪贴板和动态数据交换(二)[4]

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游戏开发实践指南

[] [] [] []

               

上一篇:DELPHI基础教程:剪贴板和动态数据交换(一)[1]

下一篇:DELPHI基础教程:剪贴板和动态数据交换(二)[3]