---- 摘 要:
PB 5.0 具 备 快 速 开 发DDE 服 务 器 应 用 程 序 和DDE 客 户 应 用 程 序 的功 能, 只 须 掌 握 少 量 几 个 关
于DDE 的 系 统 函 数 和 窗 口 事件 便 可 以 了。
---- 关 键 字:DDE(动
态 数 据 交 换,Dynamic Data Exchange),DDE 服 务 器 应 用 程 序(DDE Server
Application),DDE 客 户 应 用 程 序(DDE Client Application), 冷 链 接(Cold Link), 温 链
接(Warm Link), 热 链 接(Hot Link).
---- 在WINDOWS 环
境中, 可 以 同 时 运 行 多 道 应 用 程 序,DDE 是 这 些 应 用 程 序之 间 进 行 数 据 交 换 的 方 便 方 法。 提 供
数 据 的 应 用 程 序叫 做DDE 服 务 器 应 用 程 序, 接 收 数 据 的 应 用 程 序 叫 做 客户 应 用 程 序, 下 面 分 别
简 称 为 服 务 器 和 客 户。DDE 包 括三 种 链 接 方 式,(1) 冷 链 接,(2) 温 链 接,(3) 热 链 接。 下 面分 三 种
情 况 分 述。
---- ( 一) 冷 链
接。
---- 在 服 务 器 和
客户 之 间 只 有 单 个 命 令 时 使 用。
---- 服 务 器 端 的
编程:
---- 在 这 种 方
式下, 服 务 器 不 能 主 动 地 通 知 客 户 自 己 的 数 据 变 化, 只能 被 动 地 在 被 触 发Rem-oteExec,RemoteRequest,RemoteSend
事 件 之 后 在这 些 事 件 的Script 中 对 客 户 进 行 回 应。 不 能 在 其 它 地 方调 用DDE 函 数 来 主 动 地 与
客 户 联 络。 不 可 能 触 发 热 链 接的 事 件RemoteHotLinkStart, RemoteHotL-inkStop, 当 然 属 于
客 户 的 事 件HotLinkAlarm 也 不 可 能 触 发。
---- (1) 在 某 个
窗 口的OPEN 事 件 或 其 它 的 事 件 中 调 用StartServerDDE 函 数 来 指 定 此应 用 程 序 充 当 服 务 器, 该
窗 口 称 为 服 务 器 窗 口。
---- (2) 在 服 务
器 窗口 的RemoteExec 事 件 中 调 用GetCommandDDEOrigin,GetCommandDDE 函 数 来 获 取客 户 发 来
的 命 令 及 命 令 源 , 调 用RespondRemote 函 数 来 表 示命 令 可 否 接 受, 并 对 命 令 进 行 处 理。 该 事
件 是 由 客 户调 用 ExecRemote 函 数 触 发。
---- (3) 在 服 务
器 窗口 的RemoteSend 事 件 中 调 用GetDataDDEOrigin,GetDataDDE 函 数 来 获 取 客户 发 来 的 数 据
及 数 据 源, 调 用RespondRemote 函 数 来 表 示 数据 可 否 接 受, 并 对 数 据 进 行 处 理。 该 事 件 由 客 户
端 调用SetRemote 函 数 触 发。
---- (4) 在 服 务
器 窗口 的RemoteRequest 事 件 中 调 用SetDataDDE 函 数 来 向 客 户 发 送 数据, 并 调
用RespondRemote 函 数 来 通 知 客 户 是 否 应 允 这 个 请求。
---- (5) 在 想 结
束DDE 时 调 用 StopServerDDE 函 数 中 止。
---- 客 户 端 的
编程:
---- 在 这 种 方
式下, 客 户 端 只 能 调 用ExecRemote,GetRemote,SetRemote 三 个 函 数 分 别来 向 服 务 器 发 送 命
令, 请 求 数 据, 发 送 数 据, 不 会
有RemoteExec,RemoteSend,RemoteRequest,RemoteHot-LinkStop,RemoteHotLinkStart,HotLinkAlarm
等 任 何DDE 事 件 被 触 发。 在 这 种 方 式 下, 因 为 通 讯 的 双方 没 有 建 立 通 道, 客 户 在 做 出 通 讯 请 求
后WINDOWS 将 轮 流查 询 所 有 打 开 了 的 应 用, 直 到 得 到 回 应 为 止, 故 这 种方 式 的 效 率 较 低。
---- 注
意:PowerBuilder 的Application 对 象 的 属 性DDETimeOut 决 定 了 做 为 客 户 的 应 用 程序 向 服 务
器 请 求 回 应 的 最 大 等 待 时 间。
---- ( 二) 温 链
接。
---- 在 服 务 器 和
客户 之 间 不 只 有 单 个 命 令 时 使 用。 服 务 器 端 的 编 程: 完全 和 冷 链 接 一 样。
---- 客 户 端 的
编程:
---- 大 致 和 冷 链
接一 样, 具 体 区 别 如 下:
---- (1) 先 调
用OpenChannel 函 数 打 开 通 道, 再 开 始 调 用 上 面 所 说 的 那 三 个 函 数 与服 务 器 通 讯。
---- (2) 通 讯 完
之 后调 用CloseChannel 关 闭 通 道。 (
---- 3) 调
用ExecRemote,SetRemote,GetRemote 函 数 时 使 用 温 链 接 的 语 法 格 式。
---- (4) 因 为 打
开 了专 门 的 通 道, 故WINDOWS 不 必 轮 流 查 询 所 有 打 开 的 应 用 程序, 效 率 会 比 冷 链 接 高。
---- ( 三) 热 链
接。
---- 在 服 务 器 端
的数 据 有 变 化 时 服 务 器 主 动 地 通 知 客 户 时 使 用。
---- 服 务 器 端 的
编程:
---- (1) 最 先 调
用StartServerDDE, 结 束 时 调 用StopServerDDE.
---- (2) 在 数 据
发 生变 化 时 调 用SetDataDDE 函 数 通 知 客 户, 这 将 触 发 客 户 端 的HotLinkAlarm 事 件。
---- (3) 不 要 在
其 它的 事 件 中 编 程, 也 不 要 再 调 用 其 它 的 函 数。
---- 客 户 端 的
编程:
---- (1) 先 调
用StartHotLink 函 数 建 立 热 链 接, 最 后 调 用StopHotLink 中 止。
---- (2) 在 建 立
热 链接 地 窗 口 的HotLinkAlarm 事 件 中 调 用GetDataDDEOrigin,GetDataDDE 函 数 来获 得 发 送 来
的 数 据 和 数 据 的 源, 并 对 收 到 的 数 据 进 行处 理。 再 调 用RespondRemote 回 答 是 否 接 受 。
---- (3) 不 要 在
其 它的 事 件 中 编 程, 也 不 要 再 调 用 其 它 的 函 数。
---- ( 四) 一 个 三
种方 式 都 可 进 行 的 例 子
---- 这 个 例 子
在WINDOW95,PB 5 环 境 下 调 试 通 过, 你 可 以 同 时 运 行DDESERVER.EXE 和 DDECLIENT.EXE 两 个
应 用, 前 者 为 服 务 器, 后 者 为 客 户, 在 客户 端 可 以 任 意 地 建 立 一 种 链 接, 并 与 服 务 器 交 换 数据。
具 体 过 程 如 下:
---- (1) 进
入PB5.0 开 发环 境, 建 立 一 个 名 字 叫ddeserver.pbl 的 新PBL 库 文 件。
---- (2) 在 刚 建
立 的PBL 中 建 立 一 个 名 字 叫ddeserver 的Application 对 象。
---- (3) 按 下 面
的 界面 建 立 一 个 新 的 窗 口。
---- (4) 它 是 名
字 叫sle_Name 的 单 行 编 辑 文 本 框。
---- (5) 它 是 名
字 叫sle_Sex 的 单 行 编 辑 文 本 框。
---- (6) 它 是 名
字 叫st_LinkType 的 静 态 文 本 框。
---- (7) 它 是 名
字 叫st_Status 的 静 态 文 本 框。
---- (8) 它 是 名
字 叫cb_Close 的 按 钮。
---- (9) 把 新 建
的 窗口 以 名 字 w_DDEServer 存 盘。
---- (10)
在ddeserver Application 对 象 的OPEN 事 件Script 中 写 入 语 句:Open(w_DDEServer)
---- (11) 为 窗
口w_DDEServer 定 义 实 例 变 量:
Protected:
String is_NeedType=name' //name'
//ex'
String is_LinkType=oldLink'//oldLink'
//armLink'
//otLink'
---- (12) 为 窗
口w_DDEServer 的OPEN 事 件 Script 写 入 下 面 的 程 序:
//============================================================
// The Window w_DDEServer Open Event
// Start DDE Server
//============================================================
Integer li_Temp
//Start This Application As A DDE Server,In This Window
st_Status.Text='Start DDE Server ...... !'
li_Temp=StartServerDDE(w_DDEServer,
'MySampleDDEServer','StudentInformation',&
'StudentName','StudentSex')
//The ApplicationName IS 'MySampleDDEServer'
//The Topic IS 'StudentInformation'
//The Item Has TWO,'StudentName' And 'StudentSex'
If li_Temp=1 Then
st_Status.Text='Start DDE Server Successfully !'
Else
st_Status.Text='Start DDE Server Failed !'
MessageBox(DDEServer.DisplayName,&
'Start DDE Server Failed ,Cannot Continue !',&
StopSign!&
)
Halt Close
End If
st_Status.Text='Ready'
---- (13) 为 窗
口w_DDEServer 的CLOSE 事 件 Script 写 入 下 面 的 程 序:
//==========================================================
// The Window w_DDEServer Close Event
// Close DDE Server
//==========================================================
Integer li_Temp
li_Temp=StopServerDDE(w_DDEServer,'MySampleDDEServer',&
'StudentInformation')
If li_Temp<>1 Then
Beep(100)
End If
---- (14) 为 窗
口w_DDEServer 的RemoteRequest 事 件 Script 写 入 下 面 的 程 序:
//==========================================================
// The Window w_DDEServer RemoteRequest Event
// Send Data To The DDE Client
//==========================================================
Integer li_Temp
st_Status.Text='DDE Client Requesting'
If is_NeedType='Name' Then
//Name
li_Temp=SetDataDDE(sle_Name.Text)
If li_Temp=1 Then
st_Status.Text='Send Name Data Ok !'
li_Temp=RespondRemote(True)
Else
st_Status.Text='Send Name Data Error !'
li_Temp=RespondRemote(False)
End If
Else//Sex
li_Temp=SetDataDDE(sle_Sex.Text)
If li_Temp=1 Then
st_Status.Text='Send Sex Data Ok !'
li_Temp=RespondRemote(True)
Else
st_Status.Text='Send Sex Data Error !'
li_Temp=RespondRemote(False)
End If
End If
---- (15) 为 窗
口w_DDEServer 的RemoteSend 事 件 Script 写 入 下 面 的 程 序:
//==========================================================
// The Window w_DDEServer RemoteSend Event
// Get Data Which Sent From The DDE Client
//==========================================================
Integer li_Temp
String ls_AppName,ls_TopicName,ls_ItemName
String ls_StudentName,ls_StudentSex
st_Status.Text='DDE Client Sending'
//Get The Data Origin
li_Temp=GetDataDDEOrigin
(ls_AppName,ls_TopicName,ls_ItemName)
If li_Temp=1 Then
If ls_AppName='MySampleDDEServer' And &
ls_TopicName='StudentInformation' And &
ls_ItemName='StudentName' Then
//Get The Name
li_Temp=GetDataDDE(ls_StudentName)
If li_Temp=1 Then
li_Temp=RespondRemote(True)
sle_Name.Text=ls_StudentName
Else
//Error
li_Temp=RespondRemote(False)
st_Status.Text='Get Data Error !'
End If
Else
If ls_AppName='MySampleDDEServer' And &
ls_TopicName='StudentInformation' And &
ls_ItemName='StudentSex' Then
//Get The Sex
li_Temp=GetDataDDE(ls_StudentSex)
IF li_Temp=1 Then
li_Temp=RespondRemote(True)
sle_Sex.Text=ls_StudentSex
Else
//Error
st_Status.Text='Get Data Error !'
li_Temp=RespondRemote(False)
End If
Else
//Other DDE Item
li_Temp=RespondRemote(False)
st_Status.Text='Other DDE Item'
End If
End If
Else
st_Status.Text='Get DDE Origin Error !'
End If
(16) 为 窗 口w_DDEServer 的RemoteExec 事 件 Script
写 入 下 面 的 程 序:
//==========================================================
// The Window w_DDEServer RemoteExec Event
// Get Command Which Sent From The DDE Client And Process
//==========================================================
Integer li_Temp
String ls_Command,ls_AppName
st_Status.Text='DDE Client Sent Command'
//Get The Command Origin
li_Temp=GetCommandDDEOrigin(ls_AppName)
If li_Temp=1 Then
If ls_AppName='MySampleDDEServer' Then
//Get The Command
li_Temp=GetCommandDDE(ls_Command)
If li_Temp=1 Then
li_Temp=RespondRemote(True)
//Process The Command
CHOOSE CASE ls_Command
CASE 'BeginColdLink'
is_LinkType='ColdLink'
st_LinkStatus.Text='Cold Link'
st_Status.Text='Begin Cold Link'
CASE 'BeginWarmLink'
is_LinkType='WarmLink'
st_LinkStatus.Text='Warm Link'
st_Status.Text='Begin Warm Link'
CASE 'ClearTheName'
sle_Name.Text=''
st_Status.Text='Cleared The Name'
CASE 'ClearTheSex'
sle_Sex.Text=''
st_Status.Text='Cleared The Sex'
CASE 'Name'
is_NeedType='Name'
st_Status.Text='Need The Name'
CASE 'Sex'
is_NeedType='Sex'
st_Status.Text='Need The Sex'
CASE ELSE
st_Status.Text='Other Command'
END CHOOSE
Else
//Error
li_Temp=RespondRemote(False)
st_Status.Text='Get Data Error !'
End If
Else
//Other App
li_Temp=RespondRemote(False)
st_Status.Text='Other Application Command'
End If
Else
st_Status.Text='Get DDE Command Origin Error !'
End If
---- (17) 为 窗
口w_DDEServer 的RemoteHotLinkStart 事 件 Script 写 入 下 面 的 程 序:
//==========================================================
// The Window w_DDEServer RemoteHotLinkStart Event
// Know The Link Type Is HotLink
//==========================================================
is_LinkType='HotLink'
st_LinkStatus.Text='Hot Link'
st_Status.Text='Started Hot Link'
---- (18) 为 窗
口w_DDEServer 的RemoteHotLinkStop 事 件 Script 写 入 下 面 的 程 序:
//==========================================================
// The Window w_DDEServer RemoteHotLinkStop Event
// Know The Hot Link Stopped
//==========================================================
st_Status.Text='Stopped Hot Link'
---- (19) 进
入sle_Name 的script 画 屏, 定 义 用 户 事 件, 名 字ue_KeyUp,EventID 为
---- pbm_KeyUp
---- (20)
在sle_Name 的 ue_KeyUp 事 件 的Script 中 写 入 下 面 的 程 序:
//==========================================================
// The Control sle_Name us_KeyUp Event
// Send Data To Client When HotLink
//==========================================================
Integer li_Temp
If is_LinkType='HotLink' Then
li_Temp=SetDataDDE(This.Text,'MySampleDDEServer',&
'StudentInformation','StudentName')
If li_Temp=1 Then
st_Status.Text='Set DDE Data Name Successfully !'
Else
st_Status.Text='Set DDE Data Name Failed !'
End If
End If
---- (21) 进
入sle_Sex 的script 画 屏, 定 义 用 户 事 件, 名 字ue_KeyUp,EventID 为
---- pbm_KeyUp
---- (22)
在sle_Sex 的 ue_KeyUp 事 件 的Script 中 写 入 下 面 的 程 序:
//==========================================================
// The Control sle_Sex us_KeyUp Event
// Send Data To Client When HotLink
//==========================================================
Integer li_Temp
If is_LinkType='HotLink' Then
li_Temp=SetDataDDE(This.Text,'MySampleDDEServer',&
'StudentInformation','StudentSex')
If li_Temp=1 Then
st_Status.Text='Set DDE Data Sex Successfully !'
Else
st_Status.Text='Set DDE Data Sex Failed !'
End If
End If
---- (23)
在sle_Sex 的 ue_KeyUp 事 件 的Script 中 写 入 下 面 的 程 序:
//==========================================================
// The Control cb_Close Clicked Event
// Close The Window w_DDEServer
//==========================================================
Close(Parent)
---- (24) 建 立 一
个 新的Project, 名 字 ddeserver, 并 生 成EXE 文 件,ddeserver.exe.
---- (25) 用 类 似
的 方法 建 立PBL 库 ddeclient.pbl,ddeclient Application 对 象,w_DDEClient 窗
口,ddeclient 工 程 对 象 Project,ddeclient.exe 界 面 如 下:
//==========================================================
//The Control Name List:
//==========================================================
SingleLinkEdit: sle_Name sle_Sex
RadioButton: rb_1 rb_2 rb_3
CommandButton: cb_1 cb_2 cb_3 cb_4
cb_5 cb_6 cb_7 cb_Close
---- (26) 程 序 如
下:
//============================================================
// The Window w_DDEClient Instance Variables Define
//
//
//============================================================
Protected:
String is_LinkType=扖oldLink'//扖oldLink'
//扺armLink'
//扝otLink'
String is_NeedType=扤ame' //扤ame'
//扴ex'
Long il_ChannelHandle //Used For WarmLink Channel Handle
//============================================================
// The Window w_DDEClient HotLinkAlarm Event
// Get Data Sent Form The DDE Sever
//
//============================================================
Integer li_Temp
String ls_AppName,ls_TopicName,ls_ItemName
String ls_Name,ls_Sex//The Get Data From The DDE Server
Beep(300)
li_Temp=GetDataDDEOrigin(ls_AppName,ls_TopicName,ls_ItemName)
If li_Temp=1 Then
If ls_AppName='MySampleDDEServer' And &
ls_TopicName='StudentInformation' And &
ls_ItemName='StudentName' Then
li_Temp=GetDataDDE(ls_Name)
If li_Temp=1 Then
sle_Name.Text=ls_Name
Else
st_Status.Text='Get DDE Data Failed !'
End If
Else
If ls_AppName='MySampleDDEServer' And &
ls_TopicName='StudentInformation' And &
ls_ItemName='StudentSex' Then
li_Temp=GetDataDDE(ls_Sex)
If li_Temp=1 Then
sle_Sex.Text=ls_Sex
Else
st_Status.Text='Get DDE Data Failed !'
End If
Else
st_Status.Text='Else Item Changes !'
End If
End If
Else
st_Status.Text='Get DDE Origin Failed !'
End If
//=========================================================
// The Control cb_7 Clicked Event
// Send Sex Data
// Send Sex Data To The DDE Server
//==========================================================
Integer li_Temp
String ls_Sex
SetPointer(HourGlass!)
ls_Sex=sle_Sex.Text
If is_LinkType='ColdLink' Then
li_Temp=SetRemote('StudentSex',ls_Sex,&
'MySampleDDEServer','StudentInformation')
If li_Temp=1 Then
st_Status.Text='Send Data To Server Successfully !'
Else
st_Status.Text='Send Data To Server Failed !'
End If
Else
li_Temp=SetRemote('StudentSex',ls_Sex,&
il_ChannelHandle)
If li_Temp=1 Then
st_Status.Text='Send Data To Server Successfully !'
Else
st_Status.Text='Send Data To Server Failed !'
End If
End If
SetPointer(Arrow!)
//===========================================================
// The Control cb_6 Clicked Event
// Send Sex Command
// Send Sex Command To The DDE Server
//===========================================================
Integer li_Temp
String ls_Command
If is_NeedType='Sex' Then
Return 1
End If
SetPointer(HourGlass!)
ls_Command='Sex'
If is_LinkType='ColdLink' Then
li_Temp=ExecRemote(ls_Command,'MySampleDDEServer',&
'StudentInformation')
If li_Temp=1 Then
is_NeedType='Sex'
st_Status.Text='Execute Send
'+ls_Command+'Command Successfully !'
Else
st_Status.Text='Execute Send
'+ls_Command+' Command Failed !'
End If
Else
li_Temp=ExecRemote(ls_Command,il_ChannelHandle)
If li_Temp=1 Then
is_NeedType='Sex'
st_Status.Text='Execute Send
'+ls_Command+' Command Successfully !'
Else
st_Status.Text='Execute Send
'+ls_Command+' Command Failed !'
End If
End If
SetPointer(Arrow!)
//==========================================================
// The Control cb_5 Clicked Event
// Send Name Command
// Send Name Command To The DDE Server
//==========================================================
Integer li_Temp
String ls_Command
If is_NeedType='Name' Then
Return 1
End If
SetPointer(HourGlass!)
ls_Command='Name'
If is_LinkType='ColdLink' Then
li_Temp=ExecRemote(ls_Command,'MySampleDDEServer',&
'StudentInformation')
If li_Temp=1 Then
is_NeedType='Name'
st_Status.Text='Execute Send
'+ls_Command+'Command Successfully !'
Else
st_Status.Text='Execute Send
'+ls_Command+' Command Failed !'
End If
Else
li_Temp=ExecRemote(ls_Command,il_ChannelHandle)
If li_Temp=1 Then
is_NeedType='Name'
st_Status.Text='Execute Send
'+ls_Command+' Command Successfully !'
Else
st_Status.Text='Execute Send
'+ls_Command+' Command Failed !'
End If
End If
SetPointer(Arrow!)
//=========================================================
// The Control cb_4 Clicked Event
// Send ClearTheSex Command
// Send ClearTheSex Command To The DDE Server
//=========================================================
Integer li_Temp
String ls_Command
SetPointer(HourGlass!)
ls_Command='ClearTheSex'
If is_LinkType='ColdLink' Then
li_Temp=ExecRemote(ls_Command,'MySampleDDEServer',&
'StudentInformation')
If li_Temp=1 Then
st_Status.Text='Execute Send
'+ls_Command+'Command Successfully !'
Else
st_Status.Text='Execute Send
'+ls_Command+' Command Failed !'
End If
Else
li_Temp=ExecRemote(ls_Command,il_ChannelHandle)
If li_Temp=1 Then
st_Status.Text='Execute Send
'+ls_Command+' Command Successfully !'
Else
st_Status.Text='Execute Send
'+ls_Command+' Command Failed !'
End If
End If
SetPointer(Arrow!)
//===========================================================
// The Control cb_3 Clicked Event
// Send Name Data
// Send Name Data To The DDE Server
//===========================================================
Integer li_Temp
String ls_Name
SetPointer(HourGlass!)
ls_Name=sle_Name.Text
If is_LinkType='ColdLink' Then
li_Temp=SetRemote('StudentName',ls_Name,&
'MySampleDDEServer','StudentInformation')
If li_Temp=1 Then
st_Status.Text='Send Data To Server Successfully !'
Else
st_Status.Text='Send Data To Server Failed !'
End If
Else
li_Temp=SetRemote('StudentName',ls_Name,&
il_ChannelHandle)
If li_Temp=1 Then
st_Status.Text='Send Data To Server Successfully !'
Else
st_Status.Text='Send Data To Server Failed !'
End If
End If
SetPointer(Arrow!)
//===========================================================
// The Control cb_2 Clicked Event
// Request Data
//
//===========================================================
Integer li_Temp
String ls_Name,ls_Sex
SetPointer(HourGlass!)
If is_LinkType='ColdLink' Then
//--------------------------------------------------
If is_NeedType='Name' Then
//----------------------------------------------
li_Temp=GetRemote('StudentName',ls_Name,&
'MySampleDDEServer','StudentInformation')
If li_Temp=1 Then
sle_Name.Text=ls_Name
st_Status.Text='Get Remote Successfully !'
Else
st_Status.Text='Get Remote Failed !'
End If
Else//Sex
//----------------------------------------------
li_Temp=GetRemote('StudentSex',ls_Sex,&
'MySampleDDEServer','StudentInformation')
If li_Temp=1 Then
sle_Sex.Text=ls_Sex
st_Status.Text='Get Remote Successfully !'
Else
st_Status.Text='Get Remote Failed !'
End If
End If
Else//WarmLink
//--------------------------------------------------
If is_NeedType='Name' Then
//----------------------------------------------
li_Temp=GetRemote('StudentName',ls_Name,&
il_ChannelHandle)
If li_Temp=1 Then
sle_Name.Text=ls_Name
st_Status.Text='Get Remote Successfully !'
Else
st_Status.Text='Get Remote Failed !'
End If
Else//Sex
//----------------------------------------------
li_Temp=GetRemote('StudentSex',ls_Sex,&
il_ChannelHandle)
If li_Temp=1 Then
sle_Sex.Text=ls_Sex
st_Status.Text='Get Remote Successfully !'
Else
st_Status.Text='Get Remote Failed !'
End If
End If
End If
SetPointer(Arrow!)
//======================================================
// The Control cb_1 Clicked Event
// Send ClearTheName Command
// Send ClearTheName Command To The DDE Server
//======================================================
Integer li_Temp
String ls_Command
SetPointer(HourGlass!)
ls_Command='ClearTheName'
If is_LinkType='ColdLink' Then
li_Temp=ExecRemote(ls_Command,'MySampleDDEServer',&
'StudentInformation')
If li_Temp=1 Then
st_Status.Text='Execute Send
'+ls_Command+'Command Successfully !'
Else
st_Status.Text='Execute Send
'+ls_Command+' Command Failed !'
End If
Else
li_Temp=ExecRemote(ls_Command,il_ChannelHandle)
If li_Temp=1 Then
st_Status.Text='Execute Send
'+ls_Command+' Command Successfully !'
Else
st_Status.Text='Execute Send
'+ls_Command+' Command Failed !'
End If
End If
SetPointer(Arrow!)
//======================================================
// The Control rb_3 Clicked Event
// Begin HotLink
//
//=========================================================
Integer li_Temp
If is_LinkType<>'HotLink' Then
If is_LinkType='WarmLink' Then//Warm Link
li_Temp=CloseChannel(il_ChannelHandle)
End If
li_Temp=StartHotLink('StudentName',&
'MySampleDDEServer','StudentInformation')
li_Temp+=StartHotLink('StudentSex',&
'MySampleDDEServer','StudentInformation')
If li_Temp=2 Then
is_LinkType='HotLink'
st_Status.Text='Start Hot Link Successfully !'
cb_1.Enabled=False
cb_2.Enabled=False
cb_3.Enabled=False
cb_4.Enabled=False
cb_5.Enabled=False
cb_6.Enabled=False
cb_7.Enabled=False
Else
st_Status.Text='Start Hot Link Failed !'
End If
End If
//=======================================================
// The Control rb_2 Clicked Event
// Begin WarmLink
//
//=======================================================
Integer li_Temp
If is_LinkType<>'WarmLink' Then
//Stop Hot Link
If is_LinkType='HotLink' Then
li_Temp=StopHotLink('StudentName',&
'MySampleDDEServer','StudentInformation')
li_Temp+=StopHotLink('StudentSex',&
'MySampleDDEServer','StudentInformation')
If li_Temp=2 Then
st_Status.Text='Stop DDE
Server Hot Link Seccessfully !'
cb_1.Enabled=True
cb_2.Enabled=True
cb_3.Enabled=True
cb_4.Enabled=True
cb_5.Enabled=True
cb_6.Enabled=True
cb_7.Enabled=True
Else
st_Status.Text='Stop DDE
Server Hot Link Failed !'
End If
End If
//Open Channel
il_ChannelHandle=OpenChannel('MySampleDDEServer',&
'StudentInformation')
If il_ChannelHandle>0 Then
is_LinkType='WarmLink'
li_Temp=ExecRemote('BeginWarmLink',il_ChannelHandle)
st_Status.Text='Start Warm Link Ok !'
cb_1.Enabled=True
cb_2.Enabled=True
cb_3.Enabled=True
cb_4.Enabled=True
cb_5.Enabled=True
cb_6.Enabled=True
cb_7.Enabled=True
Else
st_Status.Text='Open Channel Error !'
End If
End If
//========================================================
// The Control rb_1 Clicked Event
// Begin ColdLink
//
//=========================================================
Integer li_Temp
If is_LinkType<>'ColdLink' Then
If is_LinkType='HotLink' Then//Hot Link
li_Temp=StopHotLink('StudentName',&
'MySampleDDEServer','StudentInformation')
li_Temp+=StopHotLink('StudentSex',&
'MySampleDDEServer','StudentInformation')
If li_Temp=2 Then
is_LinkType='ColdLink'
st_Status.Text='Start Cold Link OK !'
li_Temp=ExecRemote('BeginColdLink',&
'MySampleDDEServer','StudentInformation')
cb_1.Enabled=True
cb_2.Enabled=True
cb_3.Enabled=True
cb_4.Enabled=True
cb_5.Enabled=True
cb_6.Enabled=True
cb_7.Enabled=True
Else
st_Status.Text='Start Cold Link Error !'
End If
Else//Warm Link
li_Temp=CloseChannel(il_ChannelHandle)
If li_Temp=1 Then
is_LinkType='ColdLink'
li_Temp=ExecRemote('BeginColdLink',&
'MySampleDDEServer','StudentInformation')
st_Status.Text='Start Cold Link Ok !'
cb_1.Enabled=True
cb_2.Enabled=True
cb_3.Enabled=True
cb_4.Enabled=True
cb_5.Enabled=True
cb_6.Enabled=True
cb_7.Enabled=True
Else
st_Status.Text='Start Cold Link Error !'
End If
End If
End If
//=========================================================
// The Control cb_Close Clicked Event
// Close Link And Window
//
//=========================================================
Integer li_Temp
If is_LinkType='WarmLink' Then
li_Temp=CloseChannel(il_ChannelHandle)
ElseIf is_LinkType='HotLink' Then
li_Temp=StopHotLink('StudentName',&
'MySampleDDEServer','StudentInformation')
li_Temp+=StopHotLink('StudentSex',&
'MySampleDDEServer','StudentInformation')
End If
If is_LinkType<>'ColdLink' Then
li_Temp=ExecRemote('BeginColdLink',&
'MySampleDDEServer','StudentInformation')
End If
Close(Parent)
|