w_workprice_pro_ch.srw 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502
  1. $PBExportHeader$w_workprice_pro_ch.srw
  2. forward
  3. global type w_workprice_pro_ch from w_pageretr_ch
  4. end type
  5. type cbx_mlselect from checkbox within w_workprice_pro_ch
  6. end type
  7. type cbx_all from checkbox within w_workprice_pro_ch
  8. end type
  9. end forward
  10. global type w_workprice_pro_ch from w_pageretr_ch
  11. integer width = 3250
  12. integer height = 2236
  13. string title = "物料工价表工序选择 [按Ctrl键反选]"
  14. cbx_mlselect cbx_mlselect
  15. cbx_all cbx_all
  16. end type
  17. global w_workprice_pro_ch w_workprice_pro_ch
  18. type variables
  19. s_workpricetable_array INS_RT_STRU
  20. Boolean if_changeselect = TRUE
  21. Int if_mlselect = 0
  22. string ins_procode
  23. end variables
  24. forward prototypes
  25. public function integer wf_retrieveuc (datawindow arg_dw, string arg_newselect, integer arg_retrmode)
  26. end prototypes
  27. public function integer wf_retrieveuc (datawindow arg_dw, string arg_newselect, integer arg_retrmode);//====================================================================
  28. // Function: wf_retrieveuc()
  29. //--------------------------------------------------------------------
  30. // Description: 分页拼retr语句
  31. //--------------------------------------------------------------------
  32. // Arguments:
  33. // integer arg_retrmode: 0 retrieve all;1 first page ;2 prior page;3 next page;4 last page
  34. //--------------------------------------------------------------------
  35. // Returns: integer
  36. //--------------------------------------------------------------------
  37. // Author: yyx Date: 2003.10.17
  38. //--------------------------------------------------------------------
  39. // Modify History:
  40. //
  41. //====================================================================
  42. //取得当前的最大\最小ID
  43. //按上下翻页命令,拼接最新SELECT语句
  44. retrmode=arg_retrmode
  45. IF arg_retrmode=0 or retrieve_all THEN
  46. arg_dw.Modify("datawindow.table.select = ~"" + arg_newselect+ "~"")
  47. GOTO EXT
  48. END IF
  49. string cur_page_newselect,ls_pkcolname,LS_PAGE_ter=''
  50. cur_page_newselect=lower(trim(arg_newselect))
  51. LONG MAX_ID=0,MIN_ID=0,LS_I,ls_id
  52. ls_pkcolname=arg_dw.Describe("#1.name") //取得ID列名称
  53. if arg_retrmode<>1 then
  54. MAX_ID=0
  55. Min_ID=0
  56. FOR LS_I=1 TO arg_dw.ROWCOUNT()
  57. ls_id=arg_dw.GetItemNumber(ls_i, ls_pkcolname)
  58. if LS_I=1 then
  59. MAX_ID=ls_id
  60. Min_ID=ls_id
  61. end if
  62. if not isnull(ls_id) then
  63. if MAX_ID<ls_id then MAX_ID=ls_id
  64. if Min_ID>ls_id then Min_ID=ls_id
  65. end if
  66. NEXT
  67. FOR LS_I=1 TO arg_dw.FilteredCount()
  68. ls_id=arg_dw.GetItemNumber(ls_i, ls_pkcolname,filter!,true)
  69. if LS_I=1 and MAX_ID=0 and Min_ID=0 then
  70. MAX_ID=ls_id
  71. Min_ID=ls_id
  72. end if
  73. if not isnull(ls_id) then
  74. if MAX_ID<ls_id then MAX_ID=ls_id
  75. if Min_ID>ls_id then Min_ID=ls_id
  76. end if
  77. NEXT
  78. end if
  79. cur_page_newselect=trim(cur_page_newselect)
  80. IF not (retrieve_all or retrmode=0) then
  81. cur_page_newselect='select top '+string(onepage_rowlmno)+' '+mid( cur_page_newselect , 16)
  82. end if
  83. CHOOSE CASE arg_retrmode
  84. CASE 1 //第一页
  85. LS_PAGE_ter=''
  86. CASE 2 //上一页
  87. LS_PAGE_ter=pkcolumndbtname+'>'+STRING(MAX_ID)
  88. CASE 3 //下一页
  89. LS_PAGE_ter=pkcolumndbtname+'<'+STRING(Min_ID)
  90. CASE 4 //末页
  91. LS_PAGE_ter=''
  92. END CHOOSE
  93. IF TRIM(LS_PAGE_ter)<>'' THEN
  94. if Pos(cur_page_newselect," where ") <> 0 then
  95. cur_page_newselect=cur_page_newselect+" AND ("+LS_PAGE_ter+')'
  96. else
  97. cur_page_newselect=cur_page_newselect+" WHERE ("+LS_PAGE_ter+')'
  98. end if
  99. END IF
  100. IF arg_retrmode=2 or arg_retrmode=4 THEN
  101. cur_page_newselect=cur_page_newselect+' ORDER BY '+pkcolumndbtname
  102. ELSE
  103. cur_page_newselect=cur_page_newselect+' ORDER BY '+pkcolumndbtname+' DESC'
  104. END IF
  105. arg_dw.Modify("datawindow.table.select = ~"" + cur_page_newselect+ "~"")
  106. EXT:
  107. RETURN 1
  108. end function
  109. on w_workprice_pro_ch.create
  110. int iCurrent
  111. call super::create
  112. this.cbx_mlselect=create cbx_mlselect
  113. this.cbx_all=create cbx_all
  114. iCurrent=UpperBound(this.Control)
  115. this.Control[iCurrent+1]=this.cbx_mlselect
  116. this.Control[iCurrent+2]=this.cbx_all
  117. end on
  118. on w_workprice_pro_ch.destroy
  119. call super::destroy
  120. destroy(this.cbx_mlselect)
  121. destroy(this.cbx_all)
  122. end on
  123. event ue_before_open;call super::ue_before_open;if_ue_retr=true
  124. if_ue_sort=true
  125. end event
  126. event close;call super::close;cLOSEWITHRETURN(THIS,INS_RT_STRU)
  127. //<INS_RT_STRU> 窗体级子定义结构变量,用于返回
  128. end event
  129. event open;THIS.TriggerEvent('ue_before_open')
  130. wf_movetocenter()
  131. OLD_TITLE = THIS.Title
  132. s_tran = Message.PowerObjectParm
  133. IF NOT IsNull(s_tran) THEN
  134. retrieve_all = s_tran.if_retrieve_all
  135. mode = s_tran.work_mode
  136. arg_pkid = s_tran.arg_pkid
  137. arg_string_code = s_tran.arg_string_code
  138. ins_procode = s_tran.c_string
  139. END IF
  140. dw_pageretr.RBUTTON_FILTER_USE = TRUE //右键查询功能开关
  141. dw_pageretr.titleclick_sort_use = TRUE //单击标题排序功能开关
  142. dw_pageretr.SetTransObject (sqlca)
  143. pkcolumndbtname = wf_get_pkcolumndbtname(dw_pageretr) //取第一列为关键字
  144. ori_oldselect = dw_pageretr.Describe("DataWindow.Table.Select")
  145. ls_newselect = ori_oldselect
  146. ds_curquery = CREATE DATASTORE
  147. ds_curquery.DataObject = 'd_extr_find'
  148. ds_curquery.SetTransObject (sqlca)
  149. wf_editindex_lockf()
  150. //IF NOT retrieve_all AND Trim(arg_string_code) <> '' THEN
  151. sle_usual_query.Text = Trim(arg_string_code)
  152. THIS.TriggerEvent("ue_usual_query_RETR") //修改ls_newselect,retrieve
  153. //ELSE
  154. // wf_retrieveuc(dw_pageretr,ls_newselect,1)
  155. // THIS.TriggerEvent('RETRIEVE_pageretr')
  156. //END IF
  157. //
  158. //IF retrieve_all AND Trim(arg_string_code) <> '' THEN
  159. // THIS.TriggerEvent("ue_usual_query_filt")
  160. //END IF
  161. end event
  162. event retrieve_pageretr;Boolean cb_firstpage_enabled,cb_nextpage_enabled,cb_retrieveall_enabled
  163. Boolean cb_priorpage_enabled,cb_func_enabled,cb_retrieve_enabled
  164. cb_nextpage_enabled = cb_nextpage.Enabled
  165. cb_retrieveall_enabled = cb_retrieveall.Enabled
  166. cb_func_enabled = cb_func.Enabled
  167. cb_nextpage.Enabled = FALSE
  168. cb_retrieveall.Enabled = FALSE
  169. cb_func.Enabled = FALSE
  170. SetPointer(HourGlass!)
  171. dw_pageretr.Retrieve(ins_procode)
  172. IF dw_pageretr.RowCount() > 0 AND dw_pageretr.GetRow() = 0 THEN dw_pageretr.SetRow(1)
  173. SetPointer(Arrow!)
  174. cb_nextpage.Enabled = cb_nextpage_enabled
  175. cb_retrieveall.Enabled = cb_retrieveall_enabled
  176. cb_func.Enabled = cb_func_enabled
  177. end event
  178. event ue_usual_query_filt;call super::ue_usual_query_filt;string obj_expr=''
  179. if trim(sle_usual_query.text)<>'' then
  180. IF POS(trim(sle_usual_query.text),'%')=0 THEN
  181. obj_expr=obj_expr+'( u_mtrldef_mtrlcode LIKE "%'+trim(sle_usual_query.text)+'%") '
  182. obj_expr=obj_expr+' or ( u_mtrldef_mtrlname LIKE "%'+trim(sle_usual_query.text)+'%" )'
  183. ELSE
  184. obj_expr=obj_expr+'( u_mtrldef_mtrlcode LIKE "'+trim(sle_usual_query.text)+'" )'
  185. obj_expr=obj_expr+' or ( u_mtrldef_mtrlname LIKE "'+trim(sle_usual_query.text)+'" )'
  186. END IF
  187. end if
  188. dw_pageretr.setfilter(obj_expr)
  189. dw_pageretr.SetRedraw(False)
  190. dw_pageretr.filter()
  191. if dw_pageretr.rowcount()>=1 then
  192. dw_pageretr.selectrow(0,false)
  193. dw_pageretr.selectrow(1,true )
  194. end if
  195. dw_pageretr.SetRedraw(TRUE )
  196. end event
  197. event ue_usual_query_retr;call super::ue_usual_query_retr;String ls_querystrpart = ''
  198. ls_newselect = Lower(ori_oldselect)
  199. IF Trim(sle_usual_query.Text) <> '' THEN
  200. IF Pos(Trim(sle_usual_query.Text),'%') = 0 THEN
  201. ls_querystrpart = ls_querystrpart + "(u_sc_workprice.proname like '%"+Trim(sle_usual_query.Text)+"%'"
  202. ELSE
  203. ls_querystrpart = ls_querystrpart + " or u_sc_workprice.proname like '"+Trim(sle_usual_query.Text)+"')"
  204. END IF
  205. IF Pos(ls_newselect," where ") <> 0 THEN
  206. ls_newselect = ls_newselect+" AND ("+ls_querystrpart+')'
  207. ELSE
  208. ls_newselect = ls_newselect+" where ("+ls_querystrpart+')'
  209. END IF
  210. END IF
  211. wf_retrieveuc(dw_pageretr,ls_newselect,1)
  212. THIS.TriggerEvent('retrieve_pageretr')
  213. end event
  214. type cb_func from w_pageretr_ch`cb_func within w_workprice_pro_ch
  215. end type
  216. type cb_exit from w_pageretr_ch`cb_exit within w_workprice_pro_ch
  217. end type
  218. type sle_usual_query from w_pageretr_ch`sle_usual_query within w_workprice_pro_ch
  219. boolean visible = false
  220. integer x = 357
  221. end type
  222. type cb_retrieveall from w_pageretr_ch`cb_retrieveall within w_workprice_pro_ch
  223. boolean visible = false
  224. end type
  225. type em_pagerowno from w_pageretr_ch`em_pagerowno within w_workprice_pro_ch
  226. boolean visible = false
  227. end type
  228. type dw_pageretr from w_pageretr_ch`dw_pageretr within w_workprice_pro_ch
  229. integer width = 3223
  230. integer height = 1848
  231. string dataobject = "dw_workprice_pro_ch"
  232. end type
  233. event dw_pageretr::clicked;if row>0 then
  234. this.setrow(row)
  235. if if_mlselect=1 then
  236. if if_changeselect then
  237. this.selectrow(row,not this.IsSelected(row))
  238. else
  239. if_changeselect=true
  240. end if
  241. else
  242. this.selectrow(0,false)
  243. this.selectrow(row,true)
  244. end if
  245. end if
  246. end event
  247. event dw_pageretr::doubleclicked;
  248. cb_choice.TriggerEvent(Clicked!)
  249. end event
  250. event dw_pageretr::rowfocuschanged;if if_mlselect=1 then
  251. if currentrow <=0 then return
  252. if keydown(keycontrol!) then
  253. if this.isselected(currentrow) then
  254. this.selectrow(currentrow,false)
  255. if_changeselect=false
  256. else
  257. if_changeselect=true
  258. end if
  259. else
  260. if not this.isselected(currentrow) then
  261. this.selectrow(currentrow,true)
  262. if_changeselect=false
  263. else
  264. if_changeselect=true
  265. end if
  266. end if
  267. else
  268. if dw_edit_mode then return
  269. if currentrow <=0 then return
  270. this.selectrow(0,false)
  271. this.selectrow(currentrow,true)
  272. end if
  273. end event
  274. event dw_pageretr::dwnkey;call super::dwnkey;if keydown(keyenter!) then return 1
  275. end event
  276. type st_1 from w_pageretr_ch`st_1 within w_workprice_pro_ch
  277. boolean visible = false
  278. integer x = 23
  279. integer width = 343
  280. string text = "工序名称含:"
  281. end type
  282. type cb_nextpage from w_pageretr_ch`cb_nextpage within w_workprice_pro_ch
  283. boolean visible = false
  284. string normalpicname = ""
  285. end type
  286. type cb_choice from w_pageretr_ch`cb_choice within w_workprice_pro_ch
  287. integer taborder = 120
  288. end type
  289. event cb_choice::clicked;call super::clicked;Long ROW,ls_i = 0,chC = 0
  290. dw_pageretr.AcceptText()
  291. ROW = dw_pageretr.RowCount()
  292. IF ROW <= 0 THEN
  293. MessageBox('系统提示','请先选择目标行!',StopSign!)
  294. RETURN
  295. END IF
  296. FOR ls_i = 1 TO dw_pageretr.RowCount()
  297. IF dw_pageretr.IsSelected(ls_i) THEN
  298. chC++
  299. ins_rt_stru.mtrlid[chC] = dw_pageretr.Object.mtrlid[ls_i]
  300. ins_rt_stru.mtrlname[chC] = dw_pageretr.Object.u_mtrldef_mtrlname[ls_i]
  301. ins_rt_stru.mtrlcode[chC] = dw_pageretr.Object.u_mtrldef_mtrlcode[ls_i]
  302. ins_rt_stru.mtrlsectype[chC] = dw_pageretr.Object.u_mtrldef_mtrlsectype[ls_i]
  303. ins_rt_stru.mtrlmode[chC] = dw_pageretr.Object.u_mtrldef_mtrlmode[ls_i]
  304. ins_rt_stru.dscrp[chC] = dw_pageretr.Object.dscrp[ls_i]
  305. ins_rt_stru.procode[chC] = dw_pageretr.Object.procode[ls_i]
  306. ins_rt_stru.proname[chC] = dw_pageretr.Object.u_sc_workprice_proname[ls_i]
  307. ins_rt_stru.worklevel[chC] = dw_pageretr.Object.worklevel[ls_i]
  308. ins_rt_stru.techlevel[chC] = dw_pageretr.Object.techlevel[ls_i]
  309. ins_rt_stru.workhour[chC] = dw_pageretr.Object.workhour[ls_i]
  310. ins_rt_stru.workprice[chC] = dw_pageretr.Object.workprice[ls_i]
  311. ins_rt_stru.workqty[chC] = dw_pageretr.Object.workqty[ls_i]
  312. ins_rt_stru.lastflag[chC] = dw_pageretr.Object.lastflag[ls_i]
  313. ins_rt_stru.wrkgrpid[chC] = dw_pageretr.Object.wrkgrpid[ls_i]
  314. ins_rt_stru.lsxtype[chC] = dw_pageretr.Object.lsxtype[ls_i]
  315. ins_rt_stru.ifstandard[chC] = dw_pageretr.Object.u_sc_workprice_ifstandard[ls_i]
  316. ins_rt_stru.zxmtrlmode[chC] = dw_pageretr.Object.u_mtrldef_zxmtrlmode[ls_i]
  317. ins_rt_stru.status[chC] = dw_pageretr.Object.u_sc_workprice_status[ls_i]
  318. END IF
  319. NEXT
  320. Close(PARENT)
  321. end event
  322. type cb_refresh from w_pageretr_ch`cb_refresh within w_workprice_pro_ch
  323. end type
  324. type ln_bar from w_pageretr_ch`ln_bar within w_workprice_pro_ch
  325. end type
  326. type ln_bar2 from w_pageretr_ch`ln_bar2 within w_workprice_pro_ch
  327. end type
  328. type r_bar from w_pageretr_ch`r_bar within w_workprice_pro_ch
  329. integer x = 2272
  330. end type
  331. type ln_1 from w_pageretr_ch`ln_1 within w_workprice_pro_ch
  332. end type
  333. type ln_2 from w_pageretr_ch`ln_2 within w_workprice_pro_ch
  334. end type
  335. type cbx_mlselect from checkbox within w_workprice_pro_ch
  336. integer x = 32
  337. integer y = 200
  338. integer width = 256
  339. integer height = 60
  340. integer textsize = -9
  341. integer weight = 400
  342. fontcharset fontcharset = gb2312charset!
  343. fontpitch fontpitch = variable!
  344. string facename = "宋体"
  345. long backcolor = 134217739
  346. string text = "多选"
  347. end type
  348. event clicked;IF THIS.Checked THEN
  349. if_mlselect = 1
  350. cbx_all.Enabled = TRUE
  351. ELSE
  352. if_mlselect = 0
  353. cbx_all.Enabled = FALSE
  354. cbx_all.Checked = FALSE
  355. Long li
  356. FOR li = 1 TO dw_pageretr.RowCount()
  357. dw_pageretr.SelectRow(li,FALSE)
  358. NEXT
  359. END IF
  360. SetProfileString (sys_inifilename,dw_pageretr.DataObject, "if_mlselect", String(if_mlselect))
  361. end event
  362. event constructor;if_mlselect = Integer(ProfileString (sys_inifilename,dw_pageretr.DataObject, "if_mlselect", '0'))
  363. IF if_mlselect = 0 THEN
  364. THIS.Checked = FALSE
  365. cbx_all.enabled = false
  366. ELSE
  367. THIS.Checked = TRUE
  368. cbx_all.enabled = true
  369. END IF
  370. end event
  371. type cbx_all from checkbox within w_workprice_pro_ch
  372. integer x = 261
  373. integer y = 200
  374. integer width = 256
  375. integer height = 60
  376. boolean bringtotop = true
  377. integer textsize = -9
  378. integer weight = 400
  379. fontcharset fontcharset = gb2312charset!
  380. fontpitch fontpitch = variable!
  381. string facename = "宋体"
  382. long textcolor = 33554432
  383. long backcolor = 134217739
  384. boolean enabled = false
  385. string text = "全选"
  386. end type
  387. event clicked;IF dw_pageretr.RowCount() <= 0 THEN RETURN
  388. Long li
  389. IF THIS.Checked THEN
  390. FOR li = 1 TO dw_pageretr.RowCount()
  391. dw_pageretr.SelectRow(li,TRUE)
  392. NEXT
  393. ELSE
  394. FOR li = 1 TO dw_pageretr.RowCount()
  395. dw_pageretr.SelectRow(li,FALSE)
  396. NEXT
  397. END IF
  398. end event