$PBExportHeader$w_dwprint_dynamic_mod.srw forward global type w_dwprint_dynamic_mod from w_publ_base end type type cb_2 from uo_imflatbutton within w_dwprint_dynamic_mod end type type cb_1 from uo_imflatbutton within w_dwprint_dynamic_mod end type type gb_1 from groupbox within w_dwprint_dynamic_mod end type type dw_1 from datawindow within w_dwprint_dynamic_mod end type end forward global type w_dwprint_dynamic_mod from w_publ_base integer width = 1975 integer height = 1024 string title = "单据打印格式指定设置" boolean minbox = false windowtype windowtype = response! long backcolor = 80269524 event ue_f7 ( ) event ue_f8 ( ) event ue_f9 ( ) cb_2 cb_2 cb_1 cb_1 gb_1 gb_1 dw_1 dw_1 end type global w_dwprint_dynamic_mod w_dwprint_dynamic_mod type variables s_edit_index_tran s_tran long ll_dwprintid string ls_dwtype DataWindowChild dw_child long ll_printid DataWindowChild dw_child2 end variables forward prototypes public function integer wf_save () public function integer wf_insertrow () public subroutine wf_dwchild (string fs, datawindowchild fdw) end prototypes event ue_f7();string ls_dw,ls_pblname dw_1.accepttext() if dw_1.getrow() = 0 then return ls_dw = dw_1.object.dft_new_dwname[dw_1.getrow()] ls_pblname= dw_1.object.pblname[dw_1.getrow()] Long lib_row Long list_row str_rpt s_parm s_parm.auto = "auto" s_parm.transation = sqlca//数据库连接 s_parm.oname = ls_dw s_parm.otype = sys_cur_path + ls_pblname s_parm.rcname = ls_dw s_parm.retr_pram_falg = -1 s_parm.retr_flag = true s_parm.import_flag = true s_parm.pblpath = sys_cur_path + ls_pblname OpenWithParm(w_rpt_main,s_parm) end event event ue_f8(); integer i string pathname string filename if dw_1.getrow() = 0 then return dw_1.accepttext() i = getfilesavename("选择文件",pathname,filename,"pbl","pbl,*.pbl") if i = 1 and trim(pathname) <> "" and trim(filename) <> "" then dw_1.object.pblname[dw_1.getrow()] = filename end if return end event event ue_f9();integer i string pathname string filename if dw_1.getrow() = 0 then return dw_1.accepttext() filename = dw_1.object.pblname[dw_1.getrow()] wf_dwchild(sys_cur_path + filename,dw_child) return end event public function integer wf_save ();Int rslt = 1 Long li_row dw_1.AcceptText() li_row = dw_1.GetRow() IF li_row <= 0 THEN MessageBox('提示','记录错误',information!,ok!) rslt = 0 GOTO ext END IF String dft_old_dwname String dft_new_dwname String chnname Long powerid String dwtype Long auditprint Long prownum Long ptype String pblname Long dwprintid Long ll_newid String errmsg Int ifuse int ifpic dwprintid = dw_1.Object.dwprintid[li_row] dft_new_dwname = dw_1.Object.dft_new_dwname[li_row] chnname = dw_1.Object.chnname[li_row] powerid = dw_1.Object.powerid[li_row] dwtype = dw_1.Object.dwtype[li_row] auditprint = dw_1.Object.auditprint[li_row] prownum = dw_1.Object.prownum[li_row] ptype = dw_1.Object.ptype[li_row] pblname = dw_1.Object.pblname[li_row] ifuse = dw_1.Object.ifuse[li_row] ifpic = dw_1.Object.ifpic[li_row] IF Trim(chnname) = '' THEN MessageBox('提示','请输入格式名称', information!, ok! ) rslt = 0 GOTO ext END IF IF Trim(pblname) = '' THEN MessageBox('提示','所属格式库文件', information!, ok! ) rslt = 0 GOTO ext END IF IF Trim(dft_new_dwname) = '' THEN MessageBox('提示','请输入数据窗口名称', information!, ok! ) rslt = 0 GOTO ext END IF IF Trim(dwtype) = '' THEN MessageBox('提示','请输入窗口名称', information!, ok! ) rslt = 0 GOTO ext END IF IF dwprintid = 0 THEN ll_newid = f_sys_scidentity(0,"sys_dft_dwprint_dynamic","dwprintid",errmsg,FALSE,sqlca) IF ll_newid <= 0 THEN MessageBox('错误',errmsg,stopsign!,ok!) rslt = 0 GOTO ext END IF INSERT INTO sys_dft_dwprint_dynamic ( dwprintid, dft_new_dwname, chnname, powerid, dwtype, auditprint, prownum, ptype, pblname, ifuse, ifpic) VALUES ( :ll_newid , :dft_new_dwname, :chnname, :powerid, :dwtype, :auditprint, :prownum, :ptype, :pblname, :ifuse, :ifpic) ; IF sqlca.SQLCode <> 0 THEN IF Pos(sqlca.SQLErrText,"IX_sys_dft_dwprint_dynamic1") > 0 THEN MessageBox('错误','打印格式名称不能重复,增加打印格式失败!',stopsign!,ok!) ELSEIF Pos(sqlca.SQLErrText,"IX_sys_dft_dwprint_dynamic") > 0 THEN MessageBox('错误','打印格式数据窗口不能重复,增加打印格式失败!',stopsign!,ok!) ELSE MessageBox('错误','增加打印格式失败!',stopsign!,ok!) END IF rslt = 0 GOTO ext END IF ELSE UPDATE sys_dft_dwprint_dynamic SET dft_new_dwname = :dft_new_dwname, chnname = :chnname, dwtype = :dwtype, auditprint = :auditprint, prownum = :prownum, ptype = :ptype, pblname = :pblname, ifuse = :ifuse, ifpic = :ifpic Where dwprintid = :dwprintid; IF sqlca.SQLCode <> 0 THEN IF Pos(sqlca.SQLErrText,"IX_sys_dft_dwprint_dynamic1") > 0 THEN MessageBox('错误','打印格式名称不能重复,更新打印格式失败!',stopsign!,ok!) ELSEIF Pos(sqlca.SQLErrText,"IX_sys_dft_dwprint_dynamic") > 0 THEN MessageBox('错误','打印格式数据窗口不能重复,增加打印格式失败!',stopsign!,ok!) ELSE MessageBox('错误','更新打印格式失败!',stopsign!,ok!) END IF rslt = 0 GOTO ext END IF END IF ext: IF rslt = 0 THEN ROLLBACK; ELSE COMMIT; END IF RETURN rslt end function public function integer wf_insertrow ();Long li_newrow dw_1.SetRedraw(FALSE) li_newrow = dw_1.InsertRow(0) dw_1.Object.dwtype[li_newrow] = ls_dwtype String ll_pblname SELECT top 1 pblname INTO :ll_pblname FROM sys_dft_dwprint_dynamic; IF IsNull(ll_pblname) THEN ll_pblname = '' dw_1.Object.pblname[li_newrow] = ll_pblname dw_1.SetFocus() dw_1.SetColumn('chnname') dw_1.SetRedraw(TRUE) THIS.TriggerEvent('ue_f9') RETURN 1 end function public subroutine wf_dwchild (string fs, datawindowchild fdw);String s[] Long j s[4] = LibraryDirectory(fs,DirDataWindow!) //name ~t date/time modified ~t comments ~n fdw.Reset() fdw.SetRedraw(FALSE) DO WHILE TRUE j = Pos(s[4],'~t') IF j = 0 THEN EXIT s[1] = Left(s[4],j -1) s[4] = Mid(s[4],j+1) j = Pos(s[4],'~t') s[3] = Left(s[4],j -1) s[4] = Mid(s[4],j+1) j = Pos(s[4],'~n') s[2] = Left(s[4],j -1) s[4] = Mid(s[4],j+1) j = fdw.InsertRow(0) fdw.SetItem(j,1,trim(s[1])) fdw.SetItem(j,2,trim(s[2])) fdw.SetItem(j,3,trim(s[3])) LOOP fdw.SetSort('ctag a') fdw.Sort() fdw.SetRedraw(TRUE) end subroutine on w_dwprint_dynamic_mod.create int iCurrent call super::create this.cb_2=create cb_2 this.cb_1=create cb_1 this.gb_1=create gb_1 this.dw_1=create dw_1 iCurrent=UpperBound(this.Control) this.Control[iCurrent+1]=this.cb_2 this.Control[iCurrent+2]=this.cb_1 this.Control[iCurrent+3]=this.gb_1 this.Control[iCurrent+4]=this.dw_1 end on on w_dwprint_dynamic_mod.destroy call super::destroy destroy(this.cb_2) destroy(this.cb_1) destroy(this.gb_1) destroy(this.dw_1) end on event open;call super::open;Long i,ll_row2 s_tran = Message.PowerObjectParm ll_dwprintid = s_tran.b_long ls_dwtype = s_tran.b_string ll_printid = s_tran.d_long dw_1.SetTransObject(sqlca) dw_1.GetChild('dft_new_dwname',dw_child) dw_1.GetChild('dwtype',dw_child2) FOR i = 1 To UpperBound(s_sys_bill) CHOOSE CASE sys_version_type CASE 0,1 IF s_sys_bill[i].versiontype = sys_version_type Or s_sys_bill[i].versiontype = -1 THEN ll_row2 = dw_child2.InsertRow(0) dw_child2.SetItem(ll_row2,1,s_sys_bill[i].winname) dw_child2.SetItem(ll_row2,2,s_sys_bill[i].billname) END IF CASE 2 IF s_sys_bill[i].versiontype = 0 Or s_sys_bill[i].versiontype = 2 Or s_sys_bill[i].versiontype = -1 THEN ll_row2 = dw_child2.InsertRow(0) dw_child2.SetItem(ll_row2,1,s_sys_bill[i].winname) dw_child2.SetItem(ll_row2,2,s_sys_bill[i].billname) END IF END CHOOSE NEXT IF ll_dwprintid > 0 THEN dw_1.Retrieve(ll_dwprintid) This.TriggerEvent('ue_f9') ELSE wf_insertrow() END IF IF ll_printid <> 100000 THEN dw_1.Modify('dwtype.protect=1 ') end event type cb_func from w_publ_base`cb_func within w_dwprint_dynamic_mod boolean visible = false integer x = 2354 integer y = 12 end type type cb_exit from w_publ_base`cb_exit within w_dwprint_dynamic_mod integer x = 1550 integer y = 820 integer taborder = 30 string text = "取消" end type type cb_2 from uo_imflatbutton within w_dwprint_dynamic_mod integer x = 1225 integer y = 820 integer width = 329 integer height = 96 integer taborder = 40 string text = "保存[C^+S]" end type event clicked;call super::clicked;if wf_save() = 0 then return close(parent) end event type cb_1 from uo_imflatbutton within w_dwprint_dynamic_mod integer x = 823 integer y = 820 integer width = 407 integer height = 96 integer taborder = 40 string text = "保存&新增[&S]" end type event clicked;call super::clicked;if wf_save() = 0 then return long li_newrow dw_1.reset() wf_insertrow() end event type gb_1 from groupbox within w_dwprint_dynamic_mod integer width = 1929 integer height = 796 integer taborder = 10 integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long textcolor = 33554432 long backcolor = 67108864 string text = "资料录入" end type type dw_1 from datawindow within w_dwprint_dynamic_mod event key pbm_dwnkey event dwnkey pbm_dwnkey integer x = 14 integer y = 52 integer width = 1874 integer height = 708 integer taborder = 10 boolean bringtotop = true string dataobject = "dw_dwprint_dynamic_edit" boolean livescroll = true borderstyle borderstyle = stylelowered! end type event dwnkey;if key = keydownarrow! then return 1 if key = keyenter! or key = keydownarrow! then // keybd_event ( 9, 0, 0 , 0 ) // 按下tab keybd_event ( 9, 0, 2, 0 ) // 释放tab return 0 elseif key = keyuparrow! then keybd_event ( 16, 0, 0 , 0 ) keybd_event ( 9, 0, 0 , 0 ) keybd_event ( 9, 0, 2, 0 ) keybd_event ( 16, 0, 2, 0 ) return 0 end if end event event rbuttondown;Long ll_row,ll_column ll_row = THIS.GetRow() ll_column = THIS.GetColumn() IF ll_row <= 0 THEN RETURN IF ll_column <= 0 THEN RETURN IF Left( THIS.Describe( dwo.Name+ ".coltype"),4) = 'date' THEN s_calender_arg s_calender s_calender.PointerX = THIS.PointerX() s_calender.PointerY = THIS.PointerY() s_calender.X = THIS.X + PARENT.X s_calender.Y = THIS.Y + PARENT.Y OpenWithParm(w_calendar,s_calender) THIS.SetItem(ll_row,ll_column,id_date_selected) end if end event event clicked;IF dwo.Name = 'p_dview' THEN PARENT.TriggerEvent('ue_f7') elseif dwo.Name = 'p_pbl' THEN PARENT.TriggerEvent('ue_f8') elseif dwo.Name = 'b_1' THEN PARENT.TriggerEvent('ue_f9') END IF end event