w_configure_pzmx_ch.srw 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462
  1. $PBExportHeader$w_configure_pzmx_ch.srw
  2. forward
  3. global type w_configure_pzmx_ch from w_publ_choice
  4. end type
  5. type cb_clean from uo_imflatbutton within w_configure_pzmx_ch
  6. end type
  7. type cb_del_all from uo_imflatbutton within w_configure_pzmx_ch
  8. end type
  9. end forward
  10. global type w_configure_pzmx_ch from w_publ_choice
  11. integer width = 1810
  12. integer height = 1700
  13. string title = "部件选配类型-配置选择"
  14. event ue_allowedit ( )
  15. cb_clean cb_clean
  16. cb_del_all cb_del_all
  17. end type
  18. global w_configure_pzmx_ch w_configure_pzmx_ch
  19. type variables
  20. long cur_typeid = 0
  21. long ins_mtrlid = 0
  22. s_pzwin_open s_mt
  23. String rst_str
  24. boolean edit_mode = true
  25. end variables
  26. forward prototypes
  27. public subroutine wf_slpit (string arg_col_value)
  28. public subroutine wf_slpit_arr (s_mtrl_configure_array arg_configure_arr)
  29. public subroutine wf_add_mx (long arg_mtrlid)
  30. end prototypes
  31. event ue_allowedit();IF dw_ch.GetRow( ) <= 0 THEN
  32. dw_ch.Modify("namemx.dddw.allowedit = no")
  33. RETURN
  34. END IF
  35. IF dw_ch.Object.inputtype[dw_ch.GetRow()] = 0 THEN
  36. dw_ch.Modify("namemx.dddw.allowedit = no")
  37. messagebox("",2)
  38. ELSE
  39. dw_ch.Modify("namemx.dddw.allowedit = yes")
  40. messagebox("",1)
  41. END IF
  42. end event
  43. public subroutine wf_slpit (string arg_col_value);Long i,j,k,ll_i,ll_j
  44. Long ll_start
  45. String ls_namemx[], ls_pzmx
  46. String ls_name[]
  47. Long ll_pzid
  48. IF Trim(arg_col_value) = "" THEN RETURN
  49. IF dw_ch.RowCount() <= 0 THEN RETURN
  50. IF Pos(arg_col_value, "|") = 0 AND dw_ch.RowCount() > 0 THEN
  51. dw_ch.Object.namemx[1] = Mid(arg_col_value,Pos(arg_col_value,':') + 1)
  52. RETURN
  53. END IF
  54. IF Right(arg_col_value,1) <> "|" THEN
  55. arg_col_value += "|"
  56. END IF
  57. i = 0
  58. ll_start = Pos(arg_col_value, "|")
  59. DO WHILE ll_start > 0 AND arg_col_value <> "|"
  60. i++
  61. ls_name[i] = Left(arg_col_value, Pos(arg_col_value,":") - 1)
  62. ls_namemx[i] = Left(arg_col_value, ll_start - 1)
  63. ls_namemx[i] = Mid(ls_namemx[i],Pos(ls_namemx[i],':') + 1)
  64. arg_col_value = Mid(arg_col_value, ll_start + 1)
  65. ll_start = Pos(arg_col_value, "|")
  66. LOOP
  67. FOR ll_i = 1 TO dw_ch.RowCount()
  68. ll_pzid = dw_ch.Object.pzid[ll_i]
  69. IF UpperBound(ls_namemx) < i THEN EXIT
  70. FOR ll_j = 1 TO i
  71. IF dw_ch.Object.Name[ll_i] = ls_name[ll_j] THEN
  72. dw_ch.Object.namemx[ll_i] = ls_namemx[ll_j]
  73. goto _next
  74. END IF
  75. NEXT
  76. _next:
  77. NEXT
  78. RETURN
  79. end subroutine
  80. public subroutine wf_slpit_arr (s_mtrl_configure_array arg_configure_arr);Long i,j,k
  81. Long ll_start
  82. String ls_namemx[], ls_pzmx
  83. Long ll_pzid
  84. IF dw_ch.RowCount() <= 0 THEN RETURN
  85. IF UpperBound(arg_configure_arr.pzid) <= 0 THEN RETURN
  86. FOR i = 1 TO dw_ch.RowCount()
  87. ll_pzid = dw_ch.Object.pzid[i]
  88. FOR j = 1 TO UpperBound(arg_configure_arr.pzid)
  89. IF arg_configure_arr.pzid[j] = ll_pzid THEN
  90. dw_ch.Object.namemx[i] = mid(arg_configure_arr.pznamemx[j],pos(arg_configure_arr.pznamemx[j],':') + 1)
  91. EXIT
  92. END IF
  93. NEXT
  94. NEXT
  95. RETURN
  96. end subroutine
  97. public subroutine wf_add_mx (long arg_mtrlid);dw_ch.Reset()
  98. Long ll_pzid
  99. String ls_pzcode,ls_pzname,ls_pznamemx
  100. Long ll_row
  101. Long ll_configcodetype
  102. Int li_inputtype
  103. SELECT u_mtrldef.configcodetype
  104. INTO :ll_configcodetype
  105. FROM u_mtrldef
  106. Where u_mtrldef.mtrlid = :arg_mtrlid;
  107. IF sqlca.SQLCode <> 0 THEN
  108. ll_configcodetype = -1
  109. END IF
  110. DECLARE cur_pz CURSOR FOR
  111. SELECT u_mtrl_configure2.pzid,
  112. u_mtrl_configure2.pzcode,
  113. u_mtrl_configure2.pzname,
  114. u_mtrl_configure2.pznamemx
  115. FROM u_mtrl_configure2
  116. WHERE u_mtrl_configure2.mtrlid = :arg_mtrlid
  117. Order By u_mtrl_configure2.pzcode;
  118. OPEN cur_pz;
  119. FETCH cur_pz INTO :ll_pzid,:ls_pzcode,:ls_pzname,:ls_pznamemx;
  120. DO WHILE sqlca.SQLCode = 0
  121. ll_row = dw_ch.InsertRow(0)
  122. IF ll_configcodetype > 0 THEN
  123. SELECT inputtype
  124. INTO :li_inputtype
  125. FROM u_configure_code
  126. WHERE pzid = :ll_pzid
  127. AND typeid = :ll_configcodetype;
  128. IF sqlca.SQLCode <> 0 THEN
  129. li_inputtype = 0
  130. END IF
  131. END IF
  132. dw_ch.Object.pzid[ll_row] = ll_pzid
  133. dw_ch.Object.pzcode[ll_row] = ls_pzcode
  134. dw_ch.Object.Name[ll_row] = ls_pzname
  135. dw_ch.Object.namemx[ll_row] = ls_pznamemx
  136. dw_ch.Object.inputtype[ll_row] = li_inputtype
  137. FETCH cur_pz INTO :ll_pzid,:ls_pzcode,:ls_pzname,:ls_pznamemx;
  138. LOOP
  139. CLOSE cur_pz;
  140. end subroutine
  141. on w_configure_pzmx_ch.create
  142. int iCurrent
  143. call super::create
  144. this.cb_clean=create cb_clean
  145. this.cb_del_all=create cb_del_all
  146. iCurrent=UpperBound(this.Control)
  147. this.Control[iCurrent+1]=this.cb_clean
  148. this.Control[iCurrent+2]=this.cb_del_all
  149. end on
  150. on w_configure_pzmx_ch.destroy
  151. call super::destroy
  152. destroy(this.cb_clean)
  153. destroy(this.cb_del_all)
  154. end on
  155. event open;if_ue_sort = TRUE
  156. wf_movetocenter()
  157. dw_CH.SetTransObject (sqlca)
  158. s_mt = Message.PowerObjectParm
  159. cur_typeid = s_mt.arg_mtrlid
  160. ins_mtrlid = s_mt.arg_id
  161. cb_retrieve.TriggerEvent(Clicked!)
  162. IF UpperBound(s_mt.arg_configure_arr.pzid) > 0 THEN
  163. wf_slpit_arr(s_mt.arg_configure_arr)
  164. ELSEIF NOT IsNull(s_mt.arg_col_value) THEN
  165. wf_slpit(s_mt.arg_col_value)
  166. END IF
  167. IF NOT IsNull(s_mt.arg_editmode) THEN
  168. edit_mode = s_mt.arg_editmode
  169. END IF
  170. IF NOT edit_mode THEN
  171. cb_choice.Enabled = FALSE
  172. END IF
  173. setnull(rst_str)
  174. end event
  175. event close;call super::close;CLOSEWITHRETURN(THIS,rst_str)
  176. end event
  177. event dw_filter;call super::dw_filter;string obj_expr=''
  178. if trim(sle_ch.text)<>'' then
  179. IF POS(trim(sle_ch.text),'%')=0 THEN
  180. obj_expr=obj_expr+'( namemx LIKE "%'+trim(sle_ch.text)+'%" )'
  181. ELSE
  182. obj_expr=obj_expr+'(namemx LIKE "'+trim(sle_ch.text)+'" )'
  183. END IF
  184. end if
  185. //
  186. //if trim(sle_name.text)<>'' then
  187. // if obj_expr<>'' then obj_expr=obj_expr+ ' and '
  188. // IF POS(trim(sle_ch.text),'%')=0 THEN
  189. // obj_expr=obj_expr+' ( pzcodemx LIKE "%'+trim(sle_name.text)+'%" )'
  190. // ELSE
  191. // obj_expr=obj_expr+'( pzcodemx LIKE "'+trim(sle_name.text)+'" )'
  192. // END IF
  193. //end if
  194. //
  195. dw_ch.setfilter(obj_expr)
  196. dw_ch.SetRedraw(False)
  197. dw_ch.filter()
  198. if dw_ch.rowcount()>=1 then
  199. dw_ch.selectrow(0,false)
  200. dw_ch.selectrow(1,true)
  201. dw_ch.setrow( 1)
  202. end if
  203. dw_ch.SetRedraw(TRUE)
  204. end event
  205. type cb_func from w_publ_choice`cb_func within w_configure_pzmx_ch
  206. end type
  207. type cb_exit from w_publ_choice`cb_exit within w_configure_pzmx_ch
  208. integer x = 905
  209. end type
  210. event cb_exit::clicked;SetNull(rst_str)
  211. Close(Parent)
  212. end event
  213. type sle_ch from w_publ_choice`sle_ch within w_configure_pzmx_ch
  214. boolean visible = false
  215. integer x = 325
  216. end type
  217. type dw_ch from w_publ_choice`dw_ch within w_configure_pzmx_ch
  218. event ue_dwndropdown pbm_dwndropdown
  219. integer y = 180
  220. integer width = 1783
  221. integer height = 1432
  222. string dataobject = "dw_configure_pz_ch"
  223. end type
  224. event dw_ch::ue_dwndropdown;if not edit_mode then return
  225. Long row
  226. row = THIS.GetRow()
  227. IF row <= 0 or isnull(row) THEN RETURN
  228. THIS.AcceptText( )
  229. Long ll_pzid
  230. string rslt_pz
  231. s_pzwin_open arg_s_open
  232. arg_s_open.arg_x = THIS.X + THIS.PointerX() + PARENT.X
  233. arg_s_open.arg_y = THIS.Y + THIS.PointerY() + PARENT.Y
  234. arg_s_open.arg_dwname = "dddw_configure_pzmx"
  235. arg_s_open.arg_mtrlid = THIS.Object.pzid[row]
  236. OpenWithParm(w_pz_ch,arg_s_open)
  237. rslt_pz = Message.StringParm
  238. if rslt_pz <> '' then
  239. dw_ch.object.namemx[row] = rslt_pz
  240. end if
  241. RETURN 1
  242. end event
  243. event dw_ch::doubleclicked;//if row<=0 then return
  244. //cb_CHOICE.PostEvent(Clicked!)
  245. end event
  246. event dw_ch::rowfocuschanged;call super::rowfocuschanged;IF NOT edit_mode THEN
  247. THIS.Modify("namemx.dddw.allowedit = no")
  248. RETURN
  249. END IF
  250. IF currentrow <= 0 OR IsNull(currentrow) THEN
  251. THIS.Modify("namemx.dddw.allowedit = no")
  252. RETURN
  253. END IF
  254. IF THIS.Object.inputtype[currentrow] = 0 THEN
  255. THIS.Modify("namemx.dddw.allowedit = NO")
  256. THIS.Modify("namemx.dddw.AutoHScroll = NO")
  257. ELSE
  258. THIS.Modify("namemx.dddw.allowedit = YES")
  259. THIS.Modify("namemx.dddw.AutoHScroll = YES")
  260. END IF
  261. end event
  262. type st_1 from w_publ_choice`st_1 within w_configure_pzmx_ch
  263. boolean visible = false
  264. integer width = 293
  265. string text = "名称包含:"
  266. boolean righttoleft = false
  267. end type
  268. type cb_retrieve from w_publ_choice`cb_retrieve within w_configure_pzmx_ch
  269. end type
  270. event cb_retrieve::clicked;
  271. IF cur_typeid = -1 THEN
  272. wf_add_mx(ins_mtrlid)
  273. ELSE
  274. dw_ch.Retrieve(cur_typeid)
  275. END IF
  276. IF dw_ch.RowCount() > 0 THEN
  277. dw_ch.SetRow(1)
  278. dw_ch.SelectRow(0,FALSE)
  279. dw_ch.SelectRow(1,TRUE)
  280. END IF
  281. //yyx2015-10-7 修复刷新清空问题
  282. IF UpperBound(s_mt.arg_configure_arr.pzid) > 0 THEN
  283. wf_slpit_arr(s_mt.arg_configure_arr)
  284. ELSEIF NOT IsNull(s_mt.arg_col_value) THEN
  285. wf_slpit(s_mt.arg_col_value)
  286. END IF
  287. end event
  288. type cb_choice from w_publ_choice`cb_choice within w_configure_pzmx_ch
  289. integer x = 754
  290. end type
  291. event cb_choice::clicked;call super::clicked;Long ls_row,i
  292. String ls_name
  293. rst_str = ""
  294. dw_ch.AcceptText()
  295. FOR i = 1 TO dw_ch.RowCount( )
  296. IF Trim(dw_ch.Object.namemx[i]) = "" THEN
  297. //rst_str += "|"
  298. ELSE
  299. rst_str += trim(dw_ch.Object.Name[i]) + ':' +trim(dw_ch.Object.namemx[i])+"|"
  300. END IF
  301. NEXT
  302. CLOSE(PARENT)
  303. end event
  304. type ln_bar from w_publ_choice`ln_bar within w_configure_pzmx_ch
  305. end type
  306. type ln_bar2 from w_publ_choice`ln_bar2 within w_configure_pzmx_ch
  307. end type
  308. type r_bar from w_publ_choice`r_bar within w_configure_pzmx_ch
  309. integer x = 1248
  310. integer y = 4
  311. end type
  312. type ln_1 from w_publ_choice`ln_1 within w_configure_pzmx_ch
  313. boolean visible = false
  314. end type
  315. type ln_2 from w_publ_choice`ln_2 within w_configure_pzmx_ch
  316. boolean visible = false
  317. end type
  318. type cb_clean from uo_imflatbutton within w_configure_pzmx_ch
  319. integer x = 302
  320. integer width = 151
  321. integer height = 164
  322. integer taborder = 50
  323. boolean bringtotop = true
  324. string text = "清除"
  325. string normalpicname = "DELETE.BMP"
  326. integer picsize = 16
  327. toolbaralignment pic_align = alignattop!
  328. boolean border = false
  329. end type
  330. event clicked;call super::clicked;IF dw_ch.GetRow() > 0 THEN
  331. dw_ch.Object.namemx[dw_ch.GetRow()] = ''
  332. dw_ch.AcceptText()
  333. END IF
  334. end event
  335. type cb_del_all from uo_imflatbutton within w_configure_pzmx_ch
  336. integer x = 453
  337. integer height = 164
  338. integer taborder = 30
  339. boolean bringtotop = true
  340. string text = "清除全部"
  341. string normalpicname = "DELETE.BMP"
  342. integer picsize = 16
  343. toolbaralignment pic_align = alignattop!
  344. boolean border = false
  345. end type
  346. event clicked;call super::clicked;IF MessageBox('询问','是否确认清空全部配置项明细内容?',question!,yesno!) = 2 THEN RETURN
  347. Long ll_i
  348. dw_ch.SetRedraw(False)
  349. FOR ll_i = 1 To dw_ch.RowCount()
  350. dw_ch.Object.namemx[ll_i] = ''
  351. NEXT
  352. dw_ch.SetRedraw(True)
  353. dw_ch.AcceptText()
  354. end event