万卷书>>电脑书籍>>程序设计>>pb程序设计>>PowerBuilder使用技巧集

WANJUANSHU.COM

用PowerBuilder 5.0开发DDE应用程序


 

---- 摘 要: 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)
 
上一页 WanJuanShu.COM 下一页
WANJUANSHU.COM 万卷书