发信人: sheep_91(老绵羊)
整理人: foxzz(2003-01-31 18:16:14), 站内信件
|
做了一个不完善的DDE,请各位在此基础上发挥。
1、制作一个登录表单
2、点登录后调用RegDDE并在“托盘”显示一图标
3、点“托盘”中的图标弹出“取消”选择后调用QUITDDE并去掉“托盘”中的图标。
下列函数运行时可在EXCEL中任意单元格输入=TG|A!Y或=TG|A!M或=TG|A!D或=TG|A!U分别取年、月、日、单位名等。要取其他数各位自己定算子(取数公式)吧!
有了它报表(特别是财务报表)就交给客户去做吧!!!!
*------
Proc RegDDE
=DDESetService( 'TG','DEFINE')
=DDESetService( 'TG','ADVISE', .T.)
=DDESetService( 'TG','REQUEST', .T.)
=DDESetService( 'TG','POKE', .T.)
=DDESetTopic( 'TG' , 'A' , 'MyCallBack')
=DDESetOption('TimeOut',1000)
=DDESetOption('SAFETY',.T.)
EndProc
*------
Proc QuitDDE
=DDESetTopic( 'TG' , 'A')
=DDESetService( 'TG','RELEASE')
EndProc
*------
PROCEDURE MyCallBack
PARAMETERS gnChannel, gcAction, gcItem, gData, gcFormat, gnAdvise
glResult = .F.
Local gcItemTmp
If gcAction = 'ADVISE'
If gcItem<>'A'
glResult = .F.
Else
glResult = .T.
EndIf
EndIf
IF gcAction = 'EXECUTE'
glResult = .T.
ENDIF
If gcAction = 'INITIATE'
glResult = .T.
EndIf
If gcAction = 'POKE'
glResult = .T.
EndIf
If gcAction = 'REQUEST'
gcItemTmp = MyReturn(gcItem)
If !DDEPoke(gnChannel,gcItem,gcItemTmp,'CF_TEXT')
Wait Window 'FFFFFFFFFFF' NoWait
EndIf
glResult = .T.
EndIf
IF gcAction = 'TERMINATE'
glResult = .T.
ENDIF
RETURN glResult
EndProc
*------
PROCEDURE MyReturn
PARAMETERS MyItem
MyItem = allt(Uppe(MyItem))
If Len(MyItem)=1
Do Case
Case MyItem='Y'
Return str(Year(Date()),4,0)
case MyItem='M'
Return str(Month(date()),2,0)
case MyItem='D'
Return str(Day(date()),2,0)
Case MyItem='U'
Return '123公司'
OTHERWISE
Return '0'
EndCase
EndIf
*在此还可自定义N多的取数公式返回相应的数。
Return '1234.34'
EndProc
*------
|
|