w_dwprint_dynamic_mod.srw 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472
  1. $PBExportHeader$w_dwprint_dynamic_mod.srw
  2. forward
  3. global type w_dwprint_dynamic_mod from w_publ_base
  4. end type
  5. type cb_2 from uo_imflatbutton within w_dwprint_dynamic_mod
  6. end type
  7. type cb_1 from uo_imflatbutton within w_dwprint_dynamic_mod
  8. end type
  9. type gb_1 from groupbox within w_dwprint_dynamic_mod
  10. end type
  11. type dw_1 from datawindow within w_dwprint_dynamic_mod
  12. end type
  13. end forward
  14. global type w_dwprint_dynamic_mod from w_publ_base
  15. integer width = 1975
  16. integer height = 1024
  17. string title = "单据打印格式指定设置"
  18. boolean minbox = false
  19. windowtype windowtype = response!
  20. long backcolor = 80269524
  21. event ue_f7 ( )
  22. event ue_f8 ( )
  23. event ue_f9 ( )
  24. cb_2 cb_2
  25. cb_1 cb_1
  26. gb_1 gb_1
  27. dw_1 dw_1
  28. end type
  29. global w_dwprint_dynamic_mod w_dwprint_dynamic_mod
  30. type variables
  31. s_edit_index_tran s_tran
  32. long ll_dwprintid
  33. string ls_dwtype
  34. DataWindowChild dw_child
  35. long ll_printid
  36. DataWindowChild dw_child2
  37. end variables
  38. forward prototypes
  39. public function integer wf_save ()
  40. public function integer wf_insertrow ()
  41. public subroutine wf_dwchild (string fs, datawindowchild fdw)
  42. end prototypes
  43. event ue_f7();string ls_dw,ls_pblname
  44. dw_1.accepttext()
  45. if dw_1.getrow() = 0 then return
  46. ls_dw = dw_1.object.dft_new_dwname[dw_1.getrow()]
  47. ls_pblname= dw_1.object.pblname[dw_1.getrow()]
  48. Long lib_row
  49. Long list_row
  50. str_rpt s_parm
  51. s_parm.auto = "auto"
  52. s_parm.transation = sqlca//数据库连接
  53. s_parm.oname = ls_dw
  54. s_parm.otype = sys_cur_path + ls_pblname
  55. s_parm.rcname = ls_dw
  56. s_parm.retr_pram_falg = -1
  57. s_parm.retr_flag = true
  58. s_parm.import_flag = true
  59. s_parm.pblpath = sys_cur_path + ls_pblname
  60. OpenWithParm(w_rpt_main,s_parm)
  61. end event
  62. event ue_f8();
  63. integer i
  64. string pathname
  65. string filename
  66. if dw_1.getrow() = 0 then return
  67. dw_1.accepttext()
  68. i = getfilesavename("选择文件",pathname,filename,"pbl","pbl,*.pbl")
  69. if i = 1 and trim(pathname) <> "" and trim(filename) <> "" then
  70. dw_1.object.pblname[dw_1.getrow()] = filename
  71. end if
  72. return
  73. end event
  74. event ue_f9();integer i
  75. string pathname
  76. string filename
  77. if dw_1.getrow() = 0 then return
  78. dw_1.accepttext()
  79. filename = dw_1.object.pblname[dw_1.getrow()]
  80. wf_dwchild(sys_cur_path + filename,dw_child)
  81. return
  82. end event
  83. public function integer wf_save ();Int rslt = 1
  84. Long li_row
  85. dw_1.AcceptText()
  86. li_row = dw_1.GetRow()
  87. IF li_row <= 0 THEN
  88. MessageBox('提示','记录错误',information!,ok!)
  89. rslt = 0
  90. GOTO ext
  91. END IF
  92. String dft_old_dwname
  93. String dft_new_dwname
  94. String chnname
  95. Long powerid
  96. String dwtype
  97. Long auditprint
  98. Long prownum
  99. Long ptype
  100. String pblname
  101. Long dwprintid
  102. Long ll_newid
  103. String errmsg
  104. Int ifuse
  105. int ifpic
  106. dwprintid = dw_1.Object.dwprintid[li_row]
  107. dft_new_dwname = dw_1.Object.dft_new_dwname[li_row]
  108. chnname = dw_1.Object.chnname[li_row]
  109. powerid = dw_1.Object.powerid[li_row]
  110. dwtype = dw_1.Object.dwtype[li_row]
  111. auditprint = dw_1.Object.auditprint[li_row]
  112. prownum = dw_1.Object.prownum[li_row]
  113. ptype = dw_1.Object.ptype[li_row]
  114. pblname = dw_1.Object.pblname[li_row]
  115. ifuse = dw_1.Object.ifuse[li_row]
  116. ifpic = dw_1.Object.ifpic[li_row]
  117. IF Trim(chnname) = '' THEN
  118. MessageBox('提示','请输入格式名称', information!, ok! )
  119. rslt = 0
  120. GOTO ext
  121. END IF
  122. IF Trim(pblname) = '' THEN
  123. MessageBox('提示','所属格式库文件', information!, ok! )
  124. rslt = 0
  125. GOTO ext
  126. END IF
  127. IF Trim(dft_new_dwname) = '' THEN
  128. MessageBox('提示','请输入数据窗口名称', information!, ok! )
  129. rslt = 0
  130. GOTO ext
  131. END IF
  132. IF Trim(dwtype) = '' THEN
  133. MessageBox('提示','请输入窗口名称', information!, ok! )
  134. rslt = 0
  135. GOTO ext
  136. END IF
  137. IF dwprintid = 0 THEN
  138. ll_newid = f_sys_scidentity(0,"sys_dft_dwprint_dynamic","dwprintid",errmsg,FALSE,sqlca)
  139. IF ll_newid <= 0 THEN
  140. MessageBox('错误',errmsg,stopsign!,ok!)
  141. rslt = 0
  142. GOTO ext
  143. END IF
  144. INSERT INTO sys_dft_dwprint_dynamic
  145. ( dwprintid,
  146. dft_new_dwname,
  147. chnname,
  148. powerid,
  149. dwtype,
  150. auditprint,
  151. prownum,
  152. ptype,
  153. pblname,
  154. ifuse,
  155. ifpic)
  156. VALUES ( :ll_newid ,
  157. :dft_new_dwname,
  158. :chnname,
  159. :powerid,
  160. :dwtype,
  161. :auditprint,
  162. :prownum,
  163. :ptype,
  164. :pblname,
  165. :ifuse,
  166. :ifpic) ;
  167. IF sqlca.SQLCode <> 0 THEN
  168. IF Pos(sqlca.SQLErrText,"IX_sys_dft_dwprint_dynamic1") > 0 THEN
  169. MessageBox('错误','打印格式名称不能重复,增加打印格式失败!',stopsign!,ok!)
  170. ELSEIF Pos(sqlca.SQLErrText,"IX_sys_dft_dwprint_dynamic") > 0 THEN
  171. MessageBox('错误','打印格式数据窗口不能重复,增加打印格式失败!',stopsign!,ok!)
  172. ELSE
  173. MessageBox('错误','增加打印格式失败!',stopsign!,ok!)
  174. END IF
  175. rslt = 0
  176. GOTO ext
  177. END IF
  178. ELSE
  179. UPDATE sys_dft_dwprint_dynamic
  180. SET dft_new_dwname = :dft_new_dwname,
  181. chnname = :chnname,
  182. dwtype = :dwtype,
  183. auditprint = :auditprint,
  184. prownum = :prownum,
  185. ptype = :ptype,
  186. pblname = :pblname,
  187. ifuse = :ifuse,
  188. ifpic = :ifpic
  189. Where dwprintid = :dwprintid;
  190. IF sqlca.SQLCode <> 0 THEN
  191. IF Pos(sqlca.SQLErrText,"IX_sys_dft_dwprint_dynamic1") > 0 THEN
  192. MessageBox('错误','打印格式名称不能重复,更新打印格式失败!',stopsign!,ok!)
  193. ELSEIF Pos(sqlca.SQLErrText,"IX_sys_dft_dwprint_dynamic") > 0 THEN
  194. MessageBox('错误','打印格式数据窗口不能重复,增加打印格式失败!',stopsign!,ok!)
  195. ELSE
  196. MessageBox('错误','更新打印格式失败!',stopsign!,ok!)
  197. END IF
  198. rslt = 0
  199. GOTO ext
  200. END IF
  201. END IF
  202. ext:
  203. IF rslt = 0 THEN
  204. ROLLBACK;
  205. ELSE
  206. COMMIT;
  207. END IF
  208. RETURN rslt
  209. end function
  210. public function integer wf_insertrow ();Long li_newrow
  211. dw_1.SetRedraw(FALSE)
  212. li_newrow = dw_1.InsertRow(0)
  213. dw_1.Object.dwtype[li_newrow] = ls_dwtype
  214. String ll_pblname
  215. SELECT top 1 pblname
  216. INTO :ll_pblname
  217. FROM sys_dft_dwprint_dynamic;
  218. IF IsNull(ll_pblname) THEN ll_pblname = ''
  219. dw_1.Object.pblname[li_newrow] = ll_pblname
  220. dw_1.SetFocus()
  221. dw_1.SetColumn('chnname')
  222. dw_1.SetRedraw(TRUE)
  223. THIS.TriggerEvent('ue_f9')
  224. RETURN 1
  225. end function
  226. public subroutine wf_dwchild (string fs, datawindowchild fdw);String s[]
  227. Long j
  228. s[4] = LibraryDirectory(fs,DirDataWindow!) //name ~t date/time modified ~t comments ~n
  229. fdw.Reset()
  230. fdw.SetRedraw(FALSE)
  231. DO WHILE TRUE
  232. j = Pos(s[4],'~t')
  233. IF j = 0 THEN EXIT
  234. s[1] = Left(s[4],j -1)
  235. s[4] = Mid(s[4],j+1)
  236. j = Pos(s[4],'~t')
  237. s[3] = Left(s[4],j -1)
  238. s[4] = Mid(s[4],j+1)
  239. j = Pos(s[4],'~n')
  240. s[2] = Left(s[4],j -1)
  241. s[4] = Mid(s[4],j+1)
  242. j = fdw.InsertRow(0)
  243. fdw.SetItem(j,1,trim(s[1]))
  244. fdw.SetItem(j,2,trim(s[2]))
  245. fdw.SetItem(j,3,trim(s[3]))
  246. LOOP
  247. fdw.SetSort('ctag a')
  248. fdw.Sort()
  249. fdw.SetRedraw(TRUE)
  250. end subroutine
  251. on w_dwprint_dynamic_mod.create
  252. int iCurrent
  253. call super::create
  254. this.cb_2=create cb_2
  255. this.cb_1=create cb_1
  256. this.gb_1=create gb_1
  257. this.dw_1=create dw_1
  258. iCurrent=UpperBound(this.Control)
  259. this.Control[iCurrent+1]=this.cb_2
  260. this.Control[iCurrent+2]=this.cb_1
  261. this.Control[iCurrent+3]=this.gb_1
  262. this.Control[iCurrent+4]=this.dw_1
  263. end on
  264. on w_dwprint_dynamic_mod.destroy
  265. call super::destroy
  266. destroy(this.cb_2)
  267. destroy(this.cb_1)
  268. destroy(this.gb_1)
  269. destroy(this.dw_1)
  270. end on
  271. event open;call super::open;Long i,ll_row2
  272. s_tran = Message.PowerObjectParm
  273. ll_dwprintid = s_tran.b_long
  274. ls_dwtype = s_tran.b_string
  275. ll_printid = s_tran.d_long
  276. dw_1.SetTransObject(sqlca)
  277. dw_1.GetChild('dft_new_dwname',dw_child)
  278. dw_1.GetChild('dwtype',dw_child2)
  279. FOR i = 1 To UpperBound(s_sys_bill)
  280. CHOOSE CASE sys_version_type
  281. CASE 0,1
  282. IF s_sys_bill[i].versiontype = sys_version_type Or s_sys_bill[i].versiontype = -1 THEN
  283. ll_row2 = dw_child2.InsertRow(0)
  284. dw_child2.SetItem(ll_row2,1,s_sys_bill[i].winname)
  285. dw_child2.SetItem(ll_row2,2,s_sys_bill[i].billname)
  286. END IF
  287. CASE 2
  288. IF s_sys_bill[i].versiontype = 0 Or s_sys_bill[i].versiontype = 2 Or s_sys_bill[i].versiontype = -1 THEN
  289. ll_row2 = dw_child2.InsertRow(0)
  290. dw_child2.SetItem(ll_row2,1,s_sys_bill[i].winname)
  291. dw_child2.SetItem(ll_row2,2,s_sys_bill[i].billname)
  292. END IF
  293. END CHOOSE
  294. NEXT
  295. IF ll_dwprintid > 0 THEN
  296. dw_1.Retrieve(ll_dwprintid)
  297. This.TriggerEvent('ue_f9')
  298. ELSE
  299. wf_insertrow()
  300. END IF
  301. IF ll_printid <> 100000 THEN dw_1.Modify('dwtype.protect=1 ')
  302. end event
  303. type cb_func from w_publ_base`cb_func within w_dwprint_dynamic_mod
  304. boolean visible = false
  305. integer x = 2354
  306. integer y = 12
  307. end type
  308. type cb_exit from w_publ_base`cb_exit within w_dwprint_dynamic_mod
  309. integer x = 1550
  310. integer y = 820
  311. integer taborder = 30
  312. string text = "取消"
  313. end type
  314. type cb_2 from uo_imflatbutton within w_dwprint_dynamic_mod
  315. integer x = 1225
  316. integer y = 820
  317. integer width = 329
  318. integer height = 96
  319. integer taborder = 40
  320. string text = "保存[C^+S]"
  321. end type
  322. event clicked;call super::clicked;if wf_save() = 0 then return
  323. close(parent)
  324. end event
  325. type cb_1 from uo_imflatbutton within w_dwprint_dynamic_mod
  326. integer x = 823
  327. integer y = 820
  328. integer width = 407
  329. integer height = 96
  330. integer taborder = 40
  331. string text = "保存&新增[&S]"
  332. end type
  333. event clicked;call super::clicked;if wf_save() = 0 then return
  334. long li_newrow
  335. dw_1.reset()
  336. wf_insertrow()
  337. end event
  338. type gb_1 from groupbox within w_dwprint_dynamic_mod
  339. integer width = 1929
  340. integer height = 796
  341. integer taborder = 10
  342. integer textsize = -9
  343. integer weight = 400
  344. fontcharset fontcharset = gb2312charset!
  345. fontpitch fontpitch = variable!
  346. string facename = "宋体"
  347. long textcolor = 33554432
  348. long backcolor = 67108864
  349. string text = "资料录入"
  350. end type
  351. type dw_1 from datawindow within w_dwprint_dynamic_mod
  352. event key pbm_dwnkey
  353. event dwnkey pbm_dwnkey
  354. integer x = 14
  355. integer y = 52
  356. integer width = 1874
  357. integer height = 708
  358. integer taborder = 10
  359. boolean bringtotop = true
  360. string dataobject = "dw_dwprint_dynamic_edit"
  361. boolean livescroll = true
  362. borderstyle borderstyle = stylelowered!
  363. end type
  364. event dwnkey;if key = keydownarrow! then return 1
  365. if key = keyenter! or key = keydownarrow! then //
  366. keybd_event ( 9, 0, 0 , 0 ) // 按下tab
  367. keybd_event ( 9, 0, 2, 0 ) // 释放tab
  368. return 0
  369. elseif key = keyuparrow! then
  370. keybd_event ( 16, 0, 0 , 0 )
  371. keybd_event ( 9, 0, 0 , 0 )
  372. keybd_event ( 9, 0, 2, 0 )
  373. keybd_event ( 16, 0, 2, 0 )
  374. return 0
  375. end if
  376. end event
  377. event rbuttondown;Long ll_row,ll_column
  378. ll_row = THIS.GetRow()
  379. ll_column = THIS.GetColumn()
  380. IF ll_row <= 0 THEN RETURN
  381. IF ll_column <= 0 THEN RETURN
  382. IF Left( THIS.Describe( dwo.Name+ ".coltype"),4) = 'date' THEN
  383. s_calender_arg s_calender
  384. s_calender.PointerX = THIS.PointerX()
  385. s_calender.PointerY = THIS.PointerY()
  386. s_calender.X = THIS.X + PARENT.X
  387. s_calender.Y = THIS.Y + PARENT.Y
  388. OpenWithParm(w_calendar,s_calender)
  389. THIS.SetItem(ll_row,ll_column,id_date_selected)
  390. end if
  391. end event
  392. event clicked;IF dwo.Name = 'p_dview' THEN
  393. PARENT.TriggerEvent('ue_f7')
  394. elseif dwo.Name = 'p_pbl' THEN
  395. PARENT.TriggerEvent('ue_f8')
  396. elseif dwo.Name = 'b_1' THEN
  397. PARENT.TriggerEvent('ue_f9')
  398. END IF
  399. end event