w_rpt_manage.srw 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331
  1. $PBExportHeader$w_rpt_manage.srw
  2. $PBExportComments$登记管理--窗口
  3. forward
  4. global type w_rpt_manage from w_rpt_base
  5. end type
  6. type dw1 from datawindow within w_rpt_manage
  7. end type
  8. type uo_1 from uo_tlbar within w_rpt_manage
  9. end type
  10. type dw01 from datawindow within w_rpt_manage
  11. end type
  12. type dw02 from datawindow within w_rpt_manage
  13. end type
  14. type dw03 from datawindow within w_rpt_manage
  15. end type
  16. end forward
  17. global type w_rpt_manage from w_rpt_base
  18. integer x = 14
  19. integer y = 4
  20. integer width = 3634
  21. integer height = 2380
  22. string title = "数据窗口登记"
  23. string menuname = "m_rpt_manage"
  24. windowstate windowstate = normal!
  25. long backcolor = 80269524
  26. boolean toolbarvisible = false
  27. event ue_open_report ( string s_label )
  28. event ue_preview ( )
  29. event ue_moveup ( )
  30. event ue_movedown ( )
  31. dw1 dw1
  32. uo_1 uo_1
  33. dw01 dw01
  34. dw02 dw02
  35. dw03 dw03
  36. end type
  37. global w_rpt_manage w_rpt_manage
  38. type variables
  39. datawindow id_userdw
  40. string is_rid,is_cname,is_filt,is_label,is_rsys
  41. end variables
  42. event ue_open_report;dw1.accepttext()
  43. i=dw1.getrow()
  44. if i=0 then return
  45. is_rid=f_myget(dw1,i,'rid')
  46. if is_datasource='dw' and (not isvalid(id_userdw)) then
  47. MessageBox("出错信息","原窗口已关闭,请重新打开!")
  48. return
  49. end if
  50. istr_rpt.rid=long(is_rid)
  51. istr_rpt.rcname=f_myget(dw1,i,'rcname')
  52. istr_rpt.rdname=f_myget(dw1,i,'rdname')
  53. istr_rpt.auto=s_label
  54. opensheetwithparm(w_rpt_main,istr_rpt,iw_mdi,0,Original!)
  55. return
  56. end event
  57. event ue_preview;if dw1.getrow()=0 then return
  58. is_rid=dw1.getitemstring(dw1.getrow(),'rid')
  59. istr_rpt.rid=long(is_rid)
  60. BLOB lblob
  61. selectblob rsyntax into :lblob from reports where rid=:is_rid using it_report;
  62. if it_report.sqlcode=0 THEN
  63. istr_rpt.isdw=string(lblob)
  64. opensheetwithparm(w_rpt_preview,istr_rpt,iw_mdi,0,Original!)
  65. end if
  66. return
  67. end event
  68. event ue_moveup;i=dw1.getrow()
  69. if i>1 then
  70. dw1.RowsMove(i,i,Primary!,dw1,i -1,Primary!)
  71. dw1.scrolltorow(i -1)
  72. dw1.setitem(i -1,'rxh',i -1)
  73. end if
  74. end event
  75. event ue_movedown;i=dw1.getrow()
  76. ii_temp=dw1.rowcount()
  77. if i<ii_temp then
  78. dw1.RowsMove(i+1,i+1,Primary!,dw1,i,Primary!)
  79. dw1.scrolltorow(i+1)
  80. dw1.setitem(i+1,'rxh',i+1)
  81. end if
  82. end event
  83. on w_rpt_manage.create
  84. int iCurrent
  85. call super::create
  86. if this.MenuName = "m_rpt_manage" then this.MenuID = create m_rpt_manage
  87. this.dw1=create dw1
  88. this.uo_1=create uo_1
  89. this.dw01=create dw01
  90. this.dw02=create dw02
  91. this.dw03=create dw03
  92. iCurrent=UpperBound(this.Control)
  93. this.Control[iCurrent+1]=this.dw1
  94. this.Control[iCurrent+2]=this.uo_1
  95. this.Control[iCurrent+3]=this.dw01
  96. this.Control[iCurrent+4]=this.dw02
  97. this.Control[iCurrent+5]=this.dw03
  98. end on
  99. on w_rpt_manage.destroy
  100. call super::destroy
  101. if IsValid(MenuID) then destroy(MenuID)
  102. destroy(this.dw1)
  103. destroy(this.uo_1)
  104. destroy(this.dw01)
  105. destroy(this.dw02)
  106. destroy(this.dw03)
  107. end on
  108. event open;call super::open;if not isvalid(istr_rpt) then
  109. close(this)
  110. return
  111. end if
  112. if isvalid(istr_rpt.userds) and not isvalid(istr_rpt.userdw) then//为了兼容前台报表传递datastore而不传递datawindow
  113. dw01.create(istr_rpt.userds.object.datawindow.syntax)
  114. dw01.dataobject=istr_rpt.userds.dataobject
  115. istr_rpt.userds.sharedata(dw01)
  116. istr_rpt.userdw=dw01
  117. end if
  118. if isvalid(istr_rpt.userds2) and not isvalid(istr_rpt.userdw2) then
  119. dw02.create(istr_rpt.userds2.object.datawindow.syntax)
  120. dw02.dataobject=istr_rpt.userds2.dataobject
  121. istr_rpt.userds2.sharedata(dw02)
  122. istr_rpt.userdw2=dw02
  123. end if
  124. if isvalid(istr_rpt.userds3) and not isvalid(istr_rpt.userdw3) then
  125. dw03.create(istr_rpt.userds3.object.datawindow.syntax)
  126. dw03.dataobject=istr_rpt.userds3.dataobject
  127. istr_rpt.userds3.sharedata(dw03)
  128. istr_rpt.userdw3=dw03
  129. end if
  130. is_rid=string(istr_rpt.rid)
  131. iw_mdi=istr_rpt.window_mdi
  132. id_userdw=istr_rpt.userdw
  133. it_report=istr_rpt.transation
  134. is_label=istr_rpt.label
  135. is_rsys=istr_rpt.rsys
  136. if isvalid(id_userdw) then
  137. is_datasource='dw'
  138. istr_rpt.datasource='dw'
  139. end if
  140. dw1.settransobject(it_report)
  141. if is_rsys>'' then f_addwhere(dw1,"rsys='"+is_rsys+"'")
  142. if is_datasource='dw' then
  143. is_filt=id_userdw.dataobject
  144. else
  145. is_filt='database'
  146. end if
  147. if istr_rpt.label<>'报表设计' then
  148. title='报表选择窗口'
  149. m_rpt_manage.m_1.visible=false
  150. m_rpt_manage.m_3.visible=false
  151. m_rpt_manage.m_1.m_11.toolbaritemvisible=false
  152. m_rpt_manage.m_1.m_12.toolbaritemvisible=false
  153. m_rpt_manage.m_1.m_13.toolbaritemvisible=false
  154. m_rpt_manage.m_1.m_14.toolbaritemvisible=false
  155. m_rpt_manage.m_1.m_15.toolbaritemvisible=false
  156. m_rpt_manage.m_3.m_31.toolbaritemvisible=false
  157. m_rpt_manage.m_3.m_32.toolbaritemvisible=false
  158. WindowState=Maximized!//这个设置必须放在m_1.visible=false下面
  159. dw1.modify('rcname.edit.displayonly=true')
  160. if is_rid>'' then//报表编号已经通过参数传递
  161. f_myretrieve(dw1,"rid='"+is_rid+"'")
  162. else
  163. f_myretrieve(dw1,"rfilt='"+is_filt+"'")
  164. end if
  165. if dw1.rowcount()=1 or istr_rpt.label='直接打印' then
  166. if isvalid(this) then WindowState=Minimized!
  167. event ue_preview()
  168. return//不要删除
  169. end if
  170. else
  171. f_myretrieve(dw1,"rfilt='"+is_filt+"'")
  172. WindowState=Maximized!
  173. end if
  174. uo_1.of_bott()
  175. dw1.setfocus()
  176. return
  177. end event
  178. event ue_new;select max(rid) into :is_temp from reports using it_report;//取数据库中最大编号
  179. if isnull(is_temp) then is_temp=''
  180. is_rid=string(long(is_temp)+1,'00000')
  181. if ue_row=0 then
  182. i=dw1.insertrow(0)
  183. else
  184. i=dw1.insertrow(dw1.getrow())
  185. end if
  186. dw1.scrolltorow(i)
  187. dw1.setitem(i,'rid',is_rid)
  188. dw1.setitem(i,'rsys',is_rsys)
  189. dw1.setitem(i,'rfilt',is_filt)
  190. f_mysave(dw1,it_report,1)
  191. dw1.setitem(i,'rxh',i)
  192. end event
  193. event ue_delete;int li
  194. li=dw1.getrow()
  195. if li>0 then
  196. if messagebox("提示信息","删除 "+f_myget(dw1,li,'rid')+" ?",QUESTION!,YESNO!,2)=1 then
  197. dw1.deleterow(li)
  198. end if
  199. end if
  200. end event
  201. event closequery;dw1.accepttext()
  202. if dw1.ModifiedCount()+dw1.DeletedCount()>0 then
  203. ii_rows=dw1.rowcount()
  204. for i=1 to ii_rows
  205. ii_temp=dw1.getitemnumber(i,'rxh')
  206. if isnull(ii_temp) or ii_temp<>i then
  207. dw1.setitem(i,'rxh',i)
  208. end if
  209. next
  210. f_mysave(dw1,it_report,1)
  211. end if
  212. end event
  213. event resize;dw1.x=(newwidth -dw1.width)/2
  214. dw1.resize(dw1.width,newheight -(dw1.y) -20)
  215. end event
  216. event close;close(w_report_open)
  217. end event
  218. type dw1 from datawindow within w_rpt_manage
  219. event ue_key pbm_dwnkey
  220. integer x = 791
  221. integer y = 216
  222. integer width = 1797
  223. integer height = 1940
  224. integer taborder = 10
  225. boolean bringtotop = true
  226. string dataobject = "dw_rpts"
  227. boolean vscrollbar = true
  228. boolean livescroll = true
  229. borderstyle borderstyle = stylelowered!
  230. end type
  231. event ue_key;if key=KeyEscape! then
  232. close(parent)
  233. return 1
  234. end if
  235. end event
  236. event dberror;return 1
  237. end event
  238. event losefocus;parent.event closequery()
  239. end event
  240. event doubleclicked;if istr_rpt.label='报表设计' then
  241. parent.event ue_open_report('maner')
  242. else
  243. parent.event ue_preview()
  244. end if
  245. end event
  246. event clicked;if row>0 then
  247. scrolltorow(row)
  248. end if
  249. end event
  250. type uo_1 from uo_tlbar within w_rpt_manage
  251. integer width = 3506
  252. integer height = 184
  253. integer taborder = 40
  254. boolean bringtotop = true
  255. boolean border = false
  256. end type
  257. on uo_1.destroy
  258. call uo_tlbar::destroy
  259. end on
  260. type dw01 from datawindow within w_rpt_manage
  261. boolean visible = false
  262. integer x = 142
  263. integer y = 492
  264. integer width = 494
  265. integer height = 456
  266. integer taborder = 20
  267. boolean bringtotop = true
  268. boolean livescroll = true
  269. borderstyle borderstyle = stylelowered!
  270. end type
  271. type dw02 from datawindow within w_rpt_manage
  272. boolean visible = false
  273. integer x = 142
  274. integer y = 1232
  275. integer width = 494
  276. integer height = 120
  277. integer taborder = 30
  278. boolean bringtotop = true
  279. boolean livescroll = true
  280. borderstyle borderstyle = stylelowered!
  281. end type
  282. type dw03 from datawindow within w_rpt_manage
  283. boolean visible = false
  284. integer x = 142
  285. integer y = 1452
  286. integer width = 494
  287. integer height = 120
  288. integer taborder = 31
  289. boolean bringtotop = true
  290. boolean livescroll = true
  291. borderstyle borderstyle = stylelowered!
  292. end type