$PBExportHeader$w_addqty_input.srw forward global type w_addqty_input from w_publ_base end type type dw_1 from u_dw_rbtnfilter within w_addqty_input end type type cbx_3 from checkbox within w_addqty_input end type type cbx_1 from checkbox within w_addqty_input end type type cbx_2 from checkbox within w_addqty_input end type type em_1 from editmask within w_addqty_input end type type cbx_4 from checkbox within w_addqty_input end type type cbx_5 from checkbox within w_addqty_input end type end forward global type w_addqty_input from w_publ_base integer width = 1819 integer height = 1468 string title = "生成辅数串" boolean controlmenu = false boolean minbox = false windowtype windowtype = response! event insert_childrow ( ) dw_1 dw_1 cbx_3 cbx_3 cbx_1 cbx_1 cbx_2 cbx_2 em_1 em_1 cbx_4 cbx_4 cbx_5 cbx_5 end type global w_addqty_input w_addqty_input type variables int if_addmxdscrp=0 int if_addformula = 0 int if_sumqty = 0 int if_format = 0 String cur_mxdscrp = '' String cur_formula = '' s_addqty_input s_input end variables forward prototypes public function integer wf_new () end prototypes event insert_childrow();long li_row li_row=dw_1.insertrow(0) dw_1.scrolltorow(li_row) dw_1.SetColumn ('num1') end event public function integer wf_new ();long ll_ucrow,i dw_1.reset() for i = 1 to 30 dw_1.insertrow(0) next dw_1.setfocus() dw_1.setcolumn('num1') return 1 end function on w_addqty_input.create int iCurrent call super::create this.dw_1=create dw_1 this.cbx_3=create cbx_3 this.cbx_1=create cbx_1 this.cbx_2=create cbx_2 this.em_1=create em_1 this.cbx_4=create cbx_4 this.cbx_5=create cbx_5 iCurrent=UpperBound(this.Control) this.Control[iCurrent+1]=this.dw_1 this.Control[iCurrent+2]=this.cbx_3 this.Control[iCurrent+3]=this.cbx_1 this.Control[iCurrent+4]=this.cbx_2 this.Control[iCurrent+5]=this.em_1 this.Control[iCurrent+6]=this.cbx_4 this.Control[iCurrent+7]=this.cbx_5 end on on w_addqty_input.destroy call super::destroy destroy(this.dw_1) destroy(this.cbx_3) destroy(this.cbx_1) destroy(this.cbx_2) destroy(this.em_1) destroy(this.cbx_4) destroy(this.cbx_5) end on event open;call super::open;Long i,j,k,li_pos,chc=0 Dec ld_num[] Dec ld_tmpnum String ls_mxdscrp,ls_num long li_pos1,li_pos2 String ls_num1,ls_num2 if_addmxdscrp = long( f_profilestring (sys_empid,'addqty_input', "if_addmxdscrp", '0')) IF if_addmxdscrp = 1 THEN cbx_1.Checked = true ELSE cbx_1.Checked = false END IF if_addformula = long( f_profilestring (sys_empid,'addqty_input', "if_addformula", '0')) IF if_addformula = 1 THEN cbx_2.Checked = true ELSE cbx_2.Checked = false END IF if_sumqty = long( f_profilestring (sys_empid,'addqty_input', "if_sumqty", '0')) IF if_sumqty = 1 THEN cbx_3.Checked = true ELSE cbx_3.Checked = false END IF if_format = long( f_profilestring (sys_empid,'addqty_input', "if_format", '0')) IF if_format = 1 THEN cbx_4.Checked = true int li_formatnum li_formatnum = long( f_profilestring (sys_empid,'addqty_input', "formatnum", '0')) em_1.text = string(li_formatnum) ELSE cbx_4.Checked = false END IF wf_new() cur_mxdscrp = message.stringparm ls_mxdscrp = cur_mxdscrp + ' ' IF if_addmxdscrp = 0 THEN RETURN IF POS(ls_mxdscrp,'/')<=0 THEN Do while len(ls_mxdscrp) <> 0 li_pos = pos(ls_mxdscrp,' ') IF li_pos > 0 THEN ls_num = left(ls_mxdscrp,li_pos - 1) IF isNumber(ls_num) THEN chc++ ld_num[chc] = Dec(ls_num) END IF END IF ls_mxdscrp = mid(ls_mxdscrp,li_pos+1,len(ls_mxdscrp)) Loop //填格 k = 1 FOR i = 1 TO dw_1.Rowcount() FOR j = 1 TO 6 IF k > chc THEN RETURN dw_1.setitem(i,j,ld_num[k]) k++ NEXT NEXT ELSE DO WHILE pos(ls_mxdscrp,'/')>0 li_pos1 = pos(ls_mxdscrp,'/') li_pos2 = pos(ls_mxdscrp,'*') IF li_pos1 > 0 THEN ls_num1 = left(ls_mxdscrp,li_pos2 - 1) ls_num2 = MID(ls_mxdscrp,li_pos2 + 1,li_pos1 - li_pos2 - 1) IF NOT isNumber(ls_num1) THEN ls_num1 = '0' IF NOT isNumber(ls_num2) THEN ls_num2 ='0' chc++ ld_num[chc] = Dec(ls_num1) chc++ ld_num[chc] = Dec(ls_num2) END IF ls_mxdscrp = mid(ls_mxdscrp,li_pos1+1,len(ls_mxdscrp)) LOOP k = 1 FOR i = 1 TO (CHC /2) FOR j = 1 TO 2 dw_1.setitem(i,j,ld_num[k]) k++ NEXT NEXT END IF end event event close;call super::close;IF cbx_4.Checked THEN Int li_formatnum li_formatnum = Long(em_1.Text) f_SetProfileString (sys_empid,'addqty_input', "formatnum", String(li_formatnum)) END IF CloseWithReturn(This,s_input) end event type cb_func from w_publ_base`cb_func within w_addqty_input integer x = 1157 integer y = 1180 integer width = 311 integer height = 96 string text = "确定" integer picsize = 0 toolbaralignment pic_align = alignatleft! boolean border = true end type event cb_func::clicked;call super::clicked;//ld_tnum 总数量 //ls_numstr 明细 Long i,j,num = 0 Dec ld_num,ld_tnum,ld_A,ld_B String ls_numstr String ls_numstr1 String ld_Aa,ld_Bb int li_pos string ls_formatstr li_pos = long(em_1.text) IF cbx_5.checked = true then dw_1.AcceptText( ) FOR i = 1 TO dw_1.RowCount() ld_A = dw_1.GetItemDecimal(i,1) ld_B = dw_1.GetItemDecimal(i,2) IF IsNull(ld_A) OR ld_A = 0 or IsNull(ld_B) OR ld_B = 0 THEN CONTINUE ld_Aa = String(ld_A,'#,#0.#####') ld_Bb = String(ld_B,'#,#0.#####') IF right(ld_Aa,1) = '.' then ld_Aa = left(ld_Aa,len(ld_Aa) - 1) IF right(ld_Bb,1) = '.' then ld_Bb = left(ld_Bb,len(ld_Bb) - 1) // ls_numstr = ls_numstr + String(ld_A,'#,##.#####')+'*'+String(ld_B,'#,##.#####')+ '/' // ls_numstr1 = ls_numstr1 + String(ld_A,'#,##.#####')+'*'+String(ld_B,'#,##.#####')+ '/' ls_numstr = ls_numstr + ld_Aa+'*'+ld_Bb+ '/' ls_numstr1 = ls_numstr1 + ld_Aa+'*'+ld_Bb+ '/' ld_tnum = ld_tnum + (ld_A * ld_B) num = num +ld_B NEXT s_input.addqty = num s_input.qty = ld_tnum s_input.addqtystr = ls_numstr s_input.formula = ls_numstr1 s_input.flag = 1 ELSE if not cbx_4.checked then ls_formatstr = '#######' else ls_formatstr = '#0.' do while li_pos > 0 ls_formatstr += '0' li_pos = li_pos - 1 loop end if dw_1.AcceptText( ) FOR i = 1 TO dw_1.RowCount() FOR j = 1 TO 6 ld_num = dw_1.GetItemDecimal(i,j) IF IsNull(ld_num) OR ld_num = 0 THEN CONTINUE if ls_formatstr = '#######' then //位数不固定 IF Round(ld_num,0) = ld_num THEN ls_numstr = ls_numstr + String(ld_num,'#######') + ' ' ls_numstr1 = ls_numstr1 + String(ld_num,'#######') + '+' ELSE ls_numstr = ls_numstr + String(ld_num,'#0.#####') + ' ' ls_numstr1 = ls_numstr1 + String(ld_num,'#0.#####') + '+' END IF else ls_numstr = ls_numstr + String(ld_num,ls_formatstr) + ' ' ls_numstr1 = ls_numstr1 + String(ld_num,ls_formatstr) + '+' end if ld_tnum = ld_tnum + ld_num num++ NEXT NEXT ls_numstr = Left(ls_numstr,Len(ls_numstr) - 1) ls_numstr1 = Left(ls_numstr1,Len(ls_numstr1) - 1) IF ld_tnum = 0 THEN MessageBox('提示','请输入数量', Information!, OK! ) RETURN END IF s_input.addqty = num IF if_sumqty = 1 THEN s_input.flag = 1 s_input.qty = ld_tnum ELSE s_input.flag = 0 END IF IF if_addmxdscrp = 1 THEN s_input.addqtystr = ls_numstr ELSE s_input.addqtystr = '' END IF IF if_addformula = 1 THEN s_input.formula = ls_numstr1 ELSE s_input.formula = '' END IF END IF Close(PARENT) end event type cb_exit from w_publ_base`cb_exit within w_addqty_input integer x = 1467 integer y = 1180 end type event cb_exit::clicked;s_input.addqty = -1 s_input.addqtystr = '' close(parent) end event type dw_1 from u_dw_rbtnfilter within w_addqty_input integer width = 1774 integer height = 1104 integer taborder = 20 boolean bringtotop = true string dataobject = "dw_addqty_input" boolean vscrollbar = true end type event dwnkey;call super::dwnkey;IF KeyDown(Keydownarrow!) THEN IF dw_1.GetRow() = dw_1.RowCount() THEN PARENT.TriggerEvent('insert_childrow') END IF ELSE IF KeyDown(KeyEnter!) AND NOT KeyDown(KeyControl!) AND NOT KeyDown(KeyShift!) THEN IF Key = KeyEnter! THEN // keybd_event ( 9, 0, 0 , 0 ) // 按下tab keybd_event ( 9, 0, 2, 0 ) // 释放tab RETURN 1 END IF IF dw_1.GetColumnName( ) = 'num6' AND dw_1.GetRow() = dw_1.RowCount() THEN PARENT.TriggerEvent("insert_childrow") RETURN 1 END IF END IF END IF end event type cbx_3 from checkbox within w_addqty_input integer x = 530 integer y = 1124 integer width = 375 integer height = 64 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long backcolor = 134217739 string text = "合计到数量" end type event clicked;IF THIS.Checked THEN if_sumqty = 1 ELSE if_sumqty = 0 END IF f_SetProfileString (sys_empid,'addqty_input', "if_sumqty", String(if_sumqty)) end event type cbx_1 from checkbox within w_addqty_input integer y = 1120 integer width = 521 integer height = 60 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long backcolor = 134217739 string text = "生成辅数串到备注" end type event clicked;IF THIS.Checked THEN if_addmxdscrp = 1 ELSE if_addmxdscrp = 0 END IF f_SetProfileString (sys_empid,'addqty_input', "if_addmxdscrp", String(if_addmxdscrp)) end event type cbx_2 from checkbox within w_addqty_input integer y = 1196 integer width = 521 integer height = 60 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long backcolor = 134217739 string text = "生成辅数串到公式" end type event clicked;IF THIS.Checked THEN if_addformula = 1 ELSE if_addformula = 0 END IF f_SetProfileString (sys_empid,'addqty_input', "if_addformula", String(if_addformula)) end event type em_1 from editmask within w_addqty_input integer x = 530 integer y = 1252 integer width = 183 integer height = 84 integer taborder = 30 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long textcolor = 33554432 string text = "1" alignment alignment = center! borderstyle borderstyle = stylelowered! string mask = "0" boolean spin = true string minmax = "1~~5" end type type cbx_4 from checkbox within w_addqty_input integer y = 1264 integer width = 507 integer height = 60 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long textcolor = 33554432 long backcolor = 134217739 string text = "辅数串固定小数位" end type event clicked;IF THIS.Checked THEN if_format = 1 ELSE if_format = 0 END IF f_SetProfileString (sys_empid,'addqty_input', "if_format", String(if_format)) end event type cbx_5 from checkbox within w_addqty_input integer y = 1336 integer width = 805 integer height = 64 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long backcolor = 134217739 string text = "新模式 前两列(规格,数量)" end type event clicked;long flag IF THIS.CHECKED = TRUE THEN flag = 1 ELSE flag = 0 END IF f_SetProfileString (sys_empid,'newmode', "flag", String(flag)) end event event constructor; IF long( f_profilestring (sys_empid,'NEWMODE', "flag", '0')) = 1 THEN THIS.CHECKED = TRUE ELSE THIS.CHECKED = FALSE END IF end event