dde??(50分)

B

berg

Unregistered / Unconfirmed
GUEST, unregistred user!
server:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, DdeMan;

type
TForm1 = class(TForm)
DdeServerConv1: TDdeServerConv;
DdeServerItem1: TDdeServerItem;
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
Label2: TLabel;
procedure Edit1Change(Sender: TObject);
procedure DdeServerItem1PokeData(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Edit1Change(Sender: TObject);
begin
// 将Edit1组件中的内容发送向客户机端
DdeServerItem1.Text:=Edit1.Text;
end;

procedure TForm1.DdeServerItem1PokeData(Sender: TObject);
begin
// 根据回传数据改变Edit2组件中的显示内容
Edit2.Text:=DdeServerItem1.Lines.Strings[0];
end;

end.

client:

unit Unit2;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, DdeMan;
type
TForm2 = class(TForm)
DdeClientConv1: TDdeClientConv;
DdeClientItem1: TDdeClientItem;
Edit2: TEdit;
Button1: TButton;
Button2: TButton;
Memo1: TMemo;
Button3: TButton;
procedure DdeClientItem1Change(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.DFM}
procedure TForm2.DdeClientItem1Change(Sender: TObject);
begin
// 响应DDE服务器端数据的改变:
Edit2.Text:=DdeClientItem1.Text;
end;


procedure TForm2.Button1Click(Sender: TObject);
begin
DdeClientConv1.PokeDataLines(DdeClientItem1.DdeItem, Memo1.Lines);
end;

procedure TForm2.Button2Click(Sender: TObject);
begin
DdeClientConv1.CloseLink(); // 关闭链接
end;

procedure TForm2.Button3Click(Sender: TObject);//手动来连接
begin
ddeclientconv1.connectmode:=ddemanul;
DdeClientItem1.DdeConv:=DdeClientConv1;
// 设置链接,指定DDE服务:
ddeclientconv1.DdeService:='project1';
ddeclientconv1.DdeTopic:='ddeserverconv1';
DdeClientItem1.DdeItem:='DdeServerItem1'; // 指定DDE主题
ddeclientconv1.OpenLink;
end;

end.

我的手动连接这样做对吗?
为什么每当我关闭连接后,在打开连接是没什么反应的呢?(点击button2后再点
击button3没什么反应)请指点!谢谢!
 
是我没说清楚吗?
有谁能给我个关于dde的例子,不胜感激!
分数过两天我可以再加(现在穷啊)
 
我用dde连接的应用服务器,至于向你那样我还没做过,不太清楚。我先看看,再说
 
to bbs_delphi
你是怎么连接服务器的呢?
能给我发个例子看看吗?多谢了!
email: iceberg790312@263.net
 
各位老大帮帮忙,给小弟上堂关于dde的课,最好能有个 简单的例子
不胜感激!
 
谁来帮我?
 
bbs_delphi你 是怎么连接的 ?
能告诉我吗?多谢了,我实在急着用
 
你把这些写到formshow里试试,我做的是连接应用程序服务器,是一个把excel数据导入数据
库的例子,没有数据的相互交流,只有一个方向的。
ddeclientconv1.connectmode:=ddemanul;
DdeClientItem1.DdeConv:=DdeClientConv1;
// 设置链接,指定DDE服务:
ddeclientconv1.DdeService:='project1';
ddeclientconv1.DdeTopic:='ddeserverconv1';
DdeClientItem1.DdeItem:='DdeServerItem1'; // 指定DDE主题
 
放在onshow事件中当然可以了,但我是想当点击某一个按钮时才建立对话啊
现在情况是:第一次点击按钮则激活服务器,在服务器的edit中输入数据,在
客户端当时是没有接受到数据的,只有当再次的点击那个按钮数据才可以client
上显示,这是什么原因?
 
建立连接是openlink来做的,那些初始化的东西不是要写到buttonclick里。
 
是啊,手工连接是用openlink 来打开连接的,
初始化的那些东西写在按钮事件中和create 时间中有什么不同呢?
 
还是用Api函数吧,数据多了,在2000下,不搞死你才怪.
 
berg,我也遇到这样的问题,正在烦恼

而且我还遇到DdeClientConv1.PokeDataLines (DDEClientItem1.DDEItem, Memo1.Lines)返回false
跟你帖出来的代码差不多
--------------------client---------------------------------
procedure TForm1.DdeClientItem1Change(Sender: TObject);
begin
Memo2.Lines:= DdeClientItem1.Lines;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if DdeClientConv1.PokeDataLines (DDEClientItem1.DDEItem, Memo1.Lines) then
showmessage('成功')
else
showmessage('失败');
end;

procedure TForm1.Memo1Change(Sender: TObject);
begin
DdeServerItem1.Lines:=Memo1.Lines;
end;
------------------server-------------------
procedure TForm1.FormShow(Sender: TObject);
begin
DdeServerItem1.CopyToClipboard;
end;

procedure TForm1.DdeServerItem1PokeData(Sender: TObject);
begin
Memo2.Lines.AddStrings(DDEServerItem1.Lines);
end;

顺便帮我看看怎么回事,谢谢



 
顶部