精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● VFP>>〖外部引用〗>>我抛出一块石头,有玉的快砸过来呀!!![DDE应用]

主题:我抛出一块石头,有玉的快砸过来呀!!![DDE应用]
发信人: 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
*------

[关闭][返回]