知识大全 剪贴板和动态数据交换(二)[4]
Posted 知
篇首语:送饥者一条鱼,只管一天不饿;教他学会捕鱼,能使他永不受饿。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 剪贴板和动态数据交换(二)[4]相关的知识,希望对你有一定的参考价值。
DELPHI基础教程:剪贴板和动态数据交换(二)[4] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
procedure TDdeSrvrForm doMacro(Sender: TObject;Msg: TStrings)
var
Cmd: String;
i: Integer;
begin
Cmd := ;
if Msg Count = then Exit;
for I := to Msg Count do
begin
Cmd := Msg Strings[i];
if UpperCase(Cmd) = COPYDDE then
DDETestItem CopyToClipboard
else if UpperCase(Cmd) = CLEAR then
Memo text: =
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 Command mtWarning [mbOK] )
end;
end;
下面的DDE客户程序 主要是为了验证上面的DDE服务器程序而设计的 但同时也提供了一个DDE客户程序设计的完整实例
程序把接收到的DDE数据保存在一个TMemo类部件DDEDat中 而欲发送给服务器的数据和宏指令在另一个TMemo类部件PokeDat中输入 两个按钮PokeBtn ExecuteBtn用于发送数据和宏指令 两个菜单项File|New Link和Edit|Paste Link用于根据用户的输入建立新联接和从剪贴板上粘贴DDE联接
DDE联接的建立通过调用SetLink方法实现
建立新联接的实现代码如下
procedure TFormD doNewLink(Sender: TObject)
begin
DDEClient SetLink (AppName Text TopicName Text)
DDEClientItem DdeConv := DDEClient;
DDEClientItem DDEItem := ItemName Text;
end;
通过从剪贴板粘贴联接信息来建立联接的实现代码如下
procedure TFormD Edit Click(Sender: TObject)
var
Service Topic Item : String;
begin
PasteLink Enabled := GetPasteLinkInfo (Service Topic Item)
end;
procedure TFormD doPasteLink(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;
在DDEClientItem的OnChange事件处理过程中把接收到的事件保存在DDEDat中
procedure TFormD DDEClientItemChange(Sender: TObject)
begin
DDEDat Lines := DDEClientItem Lines;
end;
数据发送的实现代码如下
procedure TFormD doPoke (Sender: TObject)
var
DDECli : TDDEClientConv;
begin
DDECli := DDEClientItem DdeConv;
if DdeCli <> nil then
DDECli PokeDataLines (DDEClientItem DDEItem PokeDat Lines)
end;
宏指令发送的实现代码如下
procedure TFormD doMacro (Sender: TObject)
var
DDECli: TDDEClientConv;
Cmd: String;
begin
DDECli := DDEClientItem DdeConv;
if DDECli <> nil then
begin
Cmd := PokeDat Text + # # ;
DDECli ExecuteMacroLines (PokeDat Lines True)
end;
end;
运行以上两个程序 建立DDE联接 经测试 数据传输 数据发送和宏指令的发送与执行都达到预期要求
小结
剪贴板和DDE是Windows下数据通信的两种方法 Delphi以简便 友好的方式实现了相应的功能 为用户编程提供了方便 一般说来 剪贴板多用于静态数据传输 而DDE用于动态数据交换 控制其它程序运行等场合 这些内容对于多用户环境下的程序开发是很重要的
返回目录 DELPHI基础教程
编辑推荐
Java程序设计培训视频教程
J EE高级框架实战培训视频教程
Visual C++音频/视频技术开发与实战
Oracle索引技术
ORACLE G数据库开发优化指南
Java程序性能优化 让你的Java程序更快 更稳定
C嵌入式编程设计模式
Android游戏开发实践指南
cha138/Article/program/Delphi/201311/25227相关参考