$PBExportHeader$w_publ_preview.srw forward global type w_publ_preview from w_publ_base end type type cb_refresh from uo_imflatbutton within w_publ_preview end type type st_1 from statictext within w_publ_preview end type type cb_savestyle from uo_imflatbutton within w_publ_preview end type type cb_3 from uo_imflatbutton within w_publ_preview end type type ddlb_1 from dropdownlistbox within w_publ_preview end type type dw_1 from datawindow within w_publ_preview end type type ddlb_printerlist from dropdownlistbox within w_publ_preview end type type em_1 from editmask within w_publ_preview end type type st_2 from statictext within w_publ_preview end type type cbx_select_page from checkbox within w_publ_preview end type type cb_mdfmxrp from commandbutton within w_publ_preview end type type st_3 from statictext within w_publ_preview end type type st_4 from statictext within w_publ_preview end type type cb_1 from uo_imflatbutton within w_publ_preview end type type lb_1 from listbox within w_publ_preview end type type st_5 from statictext within w_publ_preview end type type st_6 from statictext within w_publ_preview end type type cbx_ifprint_xj from checkbox within w_publ_preview end type type cbx_ifprint_hj from checkbox within w_publ_preview end type type cb_2 from commandbutton within w_publ_preview end type type ln_bar from line within w_publ_preview end type type ln_bar2 from line within w_publ_preview end type type r_bar from rectangle within w_publ_preview end type type ln_1 from line within w_publ_preview end type type ln_2 from line within w_publ_preview end type end forward global type w_publ_preview from w_publ_base integer x = 9 integer y = 24 integer width = 4494 integer height = 2372 string title = "打印预览" boolean minbox = false windowtype windowtype = response! windowstate windowstate = maximized! event ue_filter ( ) event ue_sentdataout ( ) event ue_setprintpage_value ( ) event ue_spp ( ) event ue_snp ( ) event ue_mod_printbill ( ) cb_refresh cb_refresh st_1 st_1 cb_savestyle cb_savestyle cb_3 cb_3 ddlb_1 ddlb_1 dw_1 dw_1 ddlb_printerlist ddlb_printerlist em_1 em_1 st_2 st_2 cbx_select_page cbx_select_page cb_mdfmxrp cb_mdfmxrp st_3 st_3 st_4 st_4 cb_1 cb_1 lb_1 lb_1 st_5 st_5 st_6 st_6 cbx_ifprint_xj cbx_ifprint_xj cbx_ifprint_hj cbx_ifprint_hj cb_2 cb_2 ln_bar ln_bar ln_bar2 ln_bar2 r_bar r_bar ln_1 ln_1 ln_2 ln_2 end type global w_publ_preview w_publ_preview type prototypes //function boolean IsWindowsNT() library "PrintCtrl.dll" //SUBROUTINE About() library "PrintCtrl.dll" //function boolean GetDefaultPrinter(ref string PrinterName, int BufferLen) library "PrintCtrl.dll" //function boolean GetPrinterPort(ref string PrinterName, ref string Port, int PortLen, ref string Driver, int DriverLen) library "PrintCtrl.dll" //function boolean GetPrinterList(ref string PrinterList, ref long bufferLen) library "PrintCtrl.dll" //function boolean GetPrinterStatus(ref string Printer, ref long status) library "PrintCtrl.dll" //function boolean GetPaperList(ref string Printer, ref string PaperList, ref long bufferLen) library "PrintCtrl.dll" //function boolean SetPrinterDefault(ref string Printer) library "PrintCtrl.dll" //function boolean AddCustomPaper( ref string Printer, ref string PaperName, long pwidth, long pheight, long left, long right, long top, long bottom) library "PrintCtrl.dll" //function boolean DeleteCustomPaper(ref string Printer, ref string PaperName) library "PrintCtrl.dll" //function boolean SetUserDefinePaper(ref string Printer, ref long pWidth, ref long pHeight) library "PrintCtrl.dll" //function boolean GetUserDefinePaperMinMax(ref string Printer, ref long minWidth, ref long minHeight, ref long maxWidth, ref long maxHeight) library "PrintCtrl.dll" //function boolean GetDefaultPaper(ref string Printer, ref string PaperName, ref int nOrientation) library "PrintCtrl.dll" //function boolean SetDefaultPaper(ref string Printer, ref string PaperName, int nOrientation) library "PrintCtrl.dll" //function boolean GetDefaultPaper(ref string Printer, ref string PaperName,ref long nPapserSize, ref long nOrientation) library "PrintCtrl.dll" //function boolean GetPaperName(ref string Printer, ref string PaperName, int PaperSize) library "PrintCtrl.dll" //function boolean GetPaperSize(ref string Printer, ref string PaperName, ref int PaperSize) library "PrintCtrl.dll" //function boolean GetBinNameList(ref string Printer, ref string BinNameList) library "PrintCtrl.dll" //function boolean GetBin(ref string Printer, ref string BinName, ref int Bin) library "PrintCtrl.dll" //function boolean GetBinName(ref string Printer, ref string BinName, int Bin) library "PrintCtrl.dll" end prototypes type variables s_print_msg fact_print_msg String dwdataobject datawindowchild ins_dwcld s_childreportxwidth s_xwidth dwobject dwod Long retrieveid = 0,secondretrieveid = 0 String retrievestr = '' uo_printer_setting lnv_printer String ins_printerlist [ ] Int p_printerlist = 0 String dw_default_printer = '',default_printer = '' String default_printer_info = '' Long print_row String default_dwname,default_dname Int rslt_printnum = 0 string obj_dwname string ls_dw_arr[] long it_max long ifwork = 1 string ls_comments[] dwobject childwod end variables forward prototypes public function integer wf_mdfmxreport (s_childreportxwidth s_xw) public function integer wf_mdfx (s_childreportxwidth s_xw, integer pt) public function integer wf_initprinterinfo () public function integer wf_setdefaultprinter () public function integer wf_write_childdw_pos (string arg_childdw_name, s_childreportxwidth arg_s_xwidth) public function integer wf_read_childdw_pos (string arg_childdw_name, ref s_childreportxwidth arg_s_xwidth) public subroutine wf_readini_begin () public function integer wf_trycreate_sys_dwnsyntax (ref string arg_msg) public function integer wf_dwcreate (string arg_dwname, string arg_formatname, ref string arg_errmsg) public subroutine wf_defdataobject () public subroutine wf_subdwpos_strutoblob (s_childreportxwidth arg_s_xwidth, ref blob subdwpos) public subroutine wf_subdwpos_blobtostru (blob arg_blob, ref s_childreportxwidth arg_s_xwidth) public subroutine wf_dowithm (integer commid) public function integer wf_read_subdwpos (string arg_dwname, string arg_dname, ref s_childreportxwidth s_subdwwidth, ref string arg_msg) public subroutine wf_nullrow (long arg_rowcnt, long arg_pagerow, ref long arg_nullrow) public function integer f_export () public function integer f_inport () public function integer wf_check_mxreport () public subroutine dw_retrieve () public subroutine wf_add_pic () public subroutine wf_clear_temp () end prototypes event ue_filter();OPENWITHPARM(w_filter_query,dw_1) STRING LS_EXPR LS_EXPR=Message.StringParm if len(LS_EXPR)>2 and trim(LS_EXPR)='' then return dw_1.setfilter(LS_EXPR) dw_1.SetRedraw (false) dw_1.filter() dw_1.SetRedraw (TRUE) end event event ue_sentdataout;IF NOT f_power_ind(sys_func_print_sentdataout) THEN MessageBox(publ_operator,sys_msg_pow) RETURN END IF OPENWITHPARM(w_sentdataout,dw_1) end event event ue_setprintpage_value();s_print_value s_print s_print.obj_dw = DW_1 s_print.dft_printername = ddlb_printerlist.text OpenWithParm(w_sys_printpage_value,s_print) end event event ue_spp();dw_1.ScrollPriorPage() end event event ue_snp();dw_1.ScrollNextPage() end event event ue_mod_printbill();// IF NOT sys_power_issuper THEN MessageBox('提示','只有管理员才能编辑打印格式') RETURN END IF String ls_dwname,ls_pblname ls_dwname = fact_print_msg.obj_dwname SELECT pblname INTO :ls_pblname FROM sys_dft_dwprint_dynamic Where dft_new_dwname = :ls_dwname; IF sqlca.SQLCode <> 0 THEN ls_pblname = '' END IF IF ls_pblname = '' THEN MessageBox('提示','该格式没有指定格式库文件,不能编辑!') RETURN END IF Long lib_row Long list_row str_rpt s_rpt_parm s_rpt_parm.auto = "auto" s_rpt_parm.transation = sqlca //数据库连接 s_rpt_parm.oname = ls_dwname s_rpt_parm.otype = sys_cur_path + ls_pblname s_rpt_parm.rcname = ls_dwname s_rpt_parm.retr_pram_falg = -1 s_rpt_parm.retr_flag = TRUE s_rpt_parm.import_flag = TRUE s_rpt_parm.pblpath = sys_cur_path + ls_pblname OpenWithParm(w_rpt_main,s_rpt_parm) end event public function integer wf_mdfmxreport (s_childreportxwidth s_xw);//wf_mdfmxreport(s_childreportxwidth) if s_xw.p=0 then return 0 end if if mod(s_xw.cmplp,2)=1 then if s_xw.cmplx[1]>0 then dwod.object.cmpl1.width=s_xw.cmplwidth[1] end if if s_xw.cmplp=2 or s_xw.cmplp=3 then if s_xw.cmplx[2]>0 then dwod.object.cmpl2.width= s_xw.cmplwidth[2] end if if s_xw.cmplp=4 or s_xw.cmplp=6 or s_xw.cmplp=7 then if s_xw.cmplx[3]>0 then dwod.object.cmpl3.width= s_xw.cmplwidth[3] end if if s_xw.x[1]>0 then dwod.object.#1.width=s_xw.width[1] if s_xw.p<2 then goto mdfx if s_xw.x[2]>0 then dwod.object.#2.width=s_xw.width[2] if s_xw.p<3 then goto mdfx if s_xw.x[3]>0 then dwod.object.#3.width=s_xw.width[3] if s_xw.p<4 then goto mdfx if s_xw.x[4]>0 then dwod.object.#4.width=s_xw.width[4] if s_xw.p<5 then goto mdfx if s_xw.x[5]>0 then dwod.object.#5.width=s_xw.width[5] if s_xw.p<6 then goto mdfx if s_xw.x[6]>0 then dwod.object.#6.width=s_xw.width[6] if s_xw.p<7 then goto mdfx if s_xw.x[7]>0 then dwod.object.#7.width=s_xw.width[7] if s_xw.p<8 then goto mdfx if s_xw.x[8]>0 then dwod.object.#8.width=s_xw.width[8] if s_xw.p<9 then goto mdfx if s_xw.x[9]>0 then dwod.object.#9.width=s_xw.width[9] if s_xw.p<10 then goto mdfx if s_xw.x[10]>0 then dwod.object.#10.width=s_xw.width[10] if s_xw.p<11 then goto mdfx if s_xw.x[11]>0 then dwod.object.#11.width=s_xw.width[11] if s_xw.p<12 then goto mdfx if s_xw.x[12]>0 then dwod.object.#12.width=s_xw.width[12] if s_xw.p<13 then goto mdfx if s_xw.x[13]>0 then dwod.object.#13.width=s_xw.width[13] if s_xw.p<14 then goto mdfx if s_xw.x[14]>0 then dwod.object.#14.width=s_xw.width[14] if s_xw.p<15 then goto mdfx if s_xw.x[15]>0 then dwod.object.#15.width=s_xw.width[15] if s_xw.p<16 then goto mdfx if s_xw.x[16]>0 then dwod.object.#16.width=s_xw.width[16] if s_xw.p<17 then goto mdfx if s_xw.x[17]>0 then dwod.object.#17.width=s_xw.width[17] if s_xw.p<18 then goto mdfx if s_xw.x[18]>0 then dwod.object.#18.width=s_xw.width[18] if s_xw.p<19 then goto mdfx if s_xw.x[19]>0 then dwod.object.#19.width=s_xw.width[19] if s_xw.p<20 then goto mdfx if s_xw.x[20]>0 then dwod.object.#20.width=s_xw.width[20] if s_xw.p<21 then goto mdfx if s_xw.x[21]>0 then dwod.object.#21.width=s_xw.width[21] if s_xw.p<22 then goto mdfx if s_xw.x[22]>0 then dwod.object.#22.width=s_xw.width[22] if s_xw.p<23 then goto mdfx if s_xw.x[23]>0 then dwod.object.#23.width=s_xw.width[23] if s_xw.p<24 then goto mdfx if s_xw.x[24]>0 then dwod.object.#24.width=s_xw.width[24] if s_xw.p<25 then goto mdfx if s_xw.x[25]>0 then dwod.object.#25.width=s_xw.width[25] if s_xw.p<26 then goto mdfx if s_xw.x[26]>0 then dwod.object.#26.width=s_xw.width[26] if s_xw.p<27 then goto mdfx if s_xw.x[27]>0 then dwod.object.#27.width=s_xw.width[27] if s_xw.p<28 then goto mdfx if s_xw.x[28]>0 then dwod.object.#28.width=s_xw.width[28] if s_xw.p<29 then goto mdfx if s_xw.x[29]>0 then dwod.object.#29.width=s_xw.width[29] mdfx: if mod(s_xw.cmplp,2)=1 then if s_xw.cmplx[1]>0 then dwod.object.cmpl1.x= s_xw.cmplx[1] - 9 end if if s_xw.cmplp=2 or s_xw.cmplp=3 then if s_xw.cmplx[2]>0 then dwod.object.cmpl2.x= s_xw.cmplx[2] - 9 end if if s_xw.cmplp=4 or s_xw.cmplp=6 or s_xw.cmplp=7 then if s_xw.cmplx[3]>0 then dwod.object.cmpl3.x= s_xw.cmplx[3] - 9 end if long obp,bp,bi,bj,bk obp=0 for bi=1 to s_xw.p bp=50000 bk=0 for bj=1 to s_xw.p if s_xw.x[bj]obp and s_xw.x[bj]>0 then bp=s_xw.x[bj] bk=bj end if next if mod(s_xw.cmplp,2)=1 then if s_xw.cmplx[1]obp and s_xw.cmplx[1]>0 then bp=s_xw.cmplx[1] bk=0 bi = bi -1 dwod.object.cmpl1.x= s_xw.cmplx[1] - 9 end if end if wf_mdfx(s_xw,bk) obp=bp next if mod(s_xw.cmplp,2)=1 then if s_xw.cmplx[1]>0 then dwod.object.cmpl1.x= s_xw.cmplx[1] - 9 end if if s_xw.cmplp=2 or s_xw.cmplp=3 then if s_xw.cmplx[2]>0 then dwod.object.cmpl2.x= s_xw.cmplx[2] - 9 end if if s_xw.cmplp=4 or s_xw.cmplp=6 or s_xw.cmplp=7 then if s_xw.cmplx[3]>0 then dwod.object.cmpl3.x= s_xw.cmplx[3] - 9 end if //if s_xw.x[1]>0 then dwod.object.#1.x=s_xw.x[1] - 1 //if s_xw.p<2 then goto ext //if s_xw.x[2]>0 then dwod.object.#2.x=s_xw.x[2] - 1 //if s_xw.p<3 then goto ext //if s_xw.x[3]>0 then dwod.object.#3.x=s_xw.x[3] - 1 //if s_xw.p<4 then goto ext //if s_xw.x[4]>0 then dwod.object.#4.x=s_xw.x[4] - 1 //if s_xw.p<5 then goto ext //if s_xw.x[5]>0 then dwod.object.#5.x=s_xw.x[5] - 1 //if s_xw.p<6 then goto ext //if s_xw.x[6]>0 then dwod.object.#6.x=s_xw.x[6] - 1 //if s_xw.p<7 then goto ext //if s_xw.x[7]>0 then dwod.object.#7.x=s_xw.x[7] - 1 //if s_xw.p<8 then goto ext //if s_xw.x[8]>0 then dwod.object.#8.x=s_xw.x[8] - 1 //if s_xw.p<9 then goto ext //if s_xw.x[9]>0 then dwod.object.#9.x=s_xw.x[9] - 1 //if s_xw.p<10 then goto ext //if s_xw.x[10]>0 then dwod.object.#10.x=s_xw.x[10] - 1 //if s_xw.p<11 then goto ext //if s_xw.x[11]>0 then dwod.object.#11.x=s_xw.x[11] - 1 //if s_xw.p<12 then goto ext //if s_xw.x[12]>0 then dwod.object.#12.x=s_xw.x[12] - 1 //if s_xw.p<13 then goto ext //if s_xw.x[13]>0 then dwod.object.#13.x=s_xw.x[13] - 1 //if s_xw.p<14 then goto ext //if s_xw.x[14]>0 then dwod.object.#14.x=s_xw.x[14] - 1 //if s_xw.p<15 then goto ext //if s_xw.x[15]>0 then dwod.object.#15.x=s_xw.x[15] - 1 //if s_xw.p<16 then goto ext //if s_xw.x[16]>0 then dwod.object.#16.x=s_xw.x[16] - 1 //if s_xw.p<17 then goto ext //if s_xw.x[17]>0 then dwod.object.#17.x=s_xw.x[17] - 1 //if s_xw.p<18 then goto ext //if s_xw.x[18]>0 then dwod.object.#18.x=s_xw.x[18] - 1 //if s_xw.p<19 then goto ext //if s_xw.x[19]>0 then dwod.object.#19.x=s_xw.x[19] - 1 //if s_xw.p<20 then goto ext //if s_xw.x[20]>0 then dwod.object.#20.x=s_xw.x[20] - 1 //if s_xw.p<21 then goto ext //if s_xw.x[21]>0 then dwod.object.#21.x=s_xw.x[21] - 1 //if s_xw.p<22 then goto ext //if s_xw.x[22]>0 then dwod.object.#22.x=s_xw.x[22] - 1 //if s_xw.p<23 then goto ext //if s_xw.x[23]>0 then dwod.object.#23.x=s_xw.x[23] - 1 //if s_xw.p<24 then goto ext //if s_xw.x[24]>0 then dwod.object.#24.x=s_xw.x[24] - 1 //if s_xw.p<25 then goto ext //if s_xw.x[25]>0 then dwod.object.#25.x=s_xw.x[25] - 1 //if s_xw.p<26 then goto ext //if s_xw.x[26]>0 then dwod.object.#26.x=s_xw.x[26] - 1 //if s_xw.p<27 then goto ext //if s_xw.x[27]>0 then dwod.object.#27.x=s_xw.x[27] - 1 //if s_xw.p<28 then goto ext //if s_xw.x[28]>0 then dwod.object.#28.x=s_xw.x[28] - 1 //if s_xw.p<29 then goto ext //if s_xw.x[29]>0 then dwod.object.#29.x=s_xw.x[29] - 1 // //ext: return 0 end function public function integer wf_mdfx (s_childreportxwidth s_xw, integer pt);//wf_mdfx(s_childreportxwidth,int) if s_xw.p=0 or pt=0 then return 0 end if CHOOSE CASE pt CASE 1 if s_xw.p>=1 and s_xw.x[1]>0 then dwod.object.#1.x=s_xw.x[1] - 9 CASE 2 if s_xw.p>=2 and s_xw.x[2]>0 then dwod.object.#2.x=s_xw.x[2] - 9 CASE 3 if s_xw.p>=3 and s_xw.x[3]>0 then dwod.object.#3.x=s_xw.x[3] - 9 CASE 4 if s_xw.p>=4 and s_xw.x[4]>0 then dwod.object.#4.x=s_xw.x[4] - 9 CASE 5 if s_xw.p>=5 and s_xw.x[5]>0 then dwod.object.#5.x=s_xw.x[5] - 9 CASE 6 if s_xw.p>=6 and s_xw.x[6]>0 then dwod.object.#6.x=s_xw.x[6] - 9 CASE 7 if s_xw.p>=7 and s_xw.x[7]>0 then dwod.object.#7.x=s_xw.x[7] - 9 CASE 8 if s_xw.p>=8 and s_xw.x[8]>0 then dwod.object.#8.x=s_xw.x[8] - 9 CASE 9 if s_xw.p>=9 and s_xw.x[9]>0 then dwod.object.#9.x=s_xw.x[9] - 9 CASE 10 if s_xw.p>=10 and s_xw.x[10]>0 then dwod.object.#10.x=s_xw.x[10] - 9 CASE 11 if s_xw.p>=11 and s_xw.x[11]>0 then dwod.object.#11.x=s_xw.x[11] - 9 CASE 12 if s_xw.p>=12 and s_xw.x[12]>0 then dwod.object.#12.x=s_xw.x[12] - 9 CASE 13 if s_xw.p>=13 and s_xw.x[13]>0 then dwod.object.#13.x=s_xw.x[13] - 9 CASE 14 if s_xw.p>=14 and s_xw.x[14]>0 then dwod.object.#14.x=s_xw.x[14] - 9 CASE 15 if s_xw.p>=15 and s_xw.x[15]>0 then dwod.object.#15.x=s_xw.x[15] - 9 CASE 16 if s_xw.p>=16 and s_xw.x[16]>0 then dwod.object.#16.x=s_xw.x[16] - 9 CASE 17 if s_xw.p>=17 and s_xw.x[17]>0 then dwod.object.#17.x=s_xw.x[17] - 9 CASE 18 if s_xw.p>=18 and s_xw.x[18]>0 then dwod.object.#18.x=s_xw.x[18] - 9 CASE 19 if s_xw.p>=19 and s_xw.x[19]>0 then dwod.object.#19.x=s_xw.x[19] - 9 CASE 20 if s_xw.p>=20 and s_xw.x[20]>0 then dwod.object.#20.x=s_xw.x[20] - 9 CASE 21 if s_xw.p>=21 and s_xw.x[21]>0 then dwod.object.#21.x=s_xw.x[21] - 9 CASE 22 if s_xw.p>=22 and s_xw.x[22]>0 then dwod.object.#22.x=s_xw.x[22] - 9 CASE 23 if s_xw.p>=23 and s_xw.x[23]>0 then dwod.object.#23.x=s_xw.x[23] - 9 CASE 24 if s_xw.p>=24 and s_xw.x[24]>0 then dwod.object.#24.x=s_xw.x[24] - 9 CASE 25 if s_xw.p>=25 and s_xw.x[25]>0 then dwod.object.#25.x=s_xw.x[25] - 9 CASE 26 if s_xw.p>=26 and s_xw.x[26]>0 then dwod.object.#26.x=s_xw.x[26] - 9 CASE 27 if s_xw.p>=27 and s_xw.x[27]>0 then dwod.object.#27.x=s_xw.x[27] - 9 CASE 28 if s_xw.p>=28 and s_xw.x[28]>0 then dwod.object.#28.x=s_xw.x[28] - 9 CASE 29 if s_xw.p>=29 and s_xw.x[29]>0 then dwod.object.#29.x=s_xw.x[29] - 9 END CHOOSE return 0 end function public function integer wf_initprinterinfo ();///////////////////////读取打印机信息 //// 用uo取打印机列表 //int ls_ii //p_printerlist = lnv_printer.of_GetPrinterList ( ins_printerlist ) // //for ls_ii=1 to p_printerlist // ddlb_printerlist.additem(ins_printerlist[ls_ii]) //next ////用dll取打印机列表 //String printerlist = Space(512) //Long bufferlen = 512 //Boolean rt //ddlb_printerlist.Reset() //Long p1,p2 //p1 = 1 //p2 = 0 //rt = GetPrinterList(REF printerlist, REF bufferlen) //IF rt THEN // p2 = Pos(printerlist,"~t",p1) // DO WHILE p2 > 0 // ddlb_printerlist.AddItem(Mid(printerlist,p1,p2 - p1)) // p1 = p2+1 // p2 = Pos(printerlist,"~t",p1) // LOOP //END IF //用pb取打印机列表 String ls_left, ls_prntrs,ls_printername Long ll_pos_n,ll_pos_t ddlb_printerlist.Reset() ls_prntrs = PrintGetPrinters() DO WHILE Len(Trim(ls_prntrs)) > 0 ll_pos_n = Pos (ls_prntrs, "~n" ) IF ll_pos_n > 0 THEN ls_left = Left (ls_prntrs, ll_pos_n - 1) ll_pos_t = Pos (ls_left, "~t" ) ls_printername = Left (ls_left, ll_pos_t - 1) ddlb_printerlist.AddItem(ls_printername) ls_prntrs = Mid (ls_prntrs, ll_pos_n + 1) ELSE ll_pos_t = Pos (ls_prntrs, "~t" ) ls_printername = Left (ls_prntrs, ll_pos_t - 1) ddlb_printerlist.AddItem(ls_printername) ls_prntrs = '' END IF LOOP // 取PB缺省打印机 default_printer = lnv_printer.of_GetPBPrinter ( ) //// 取dll缺省打印机 //String printerName //Boolean rt_1 //printerName = Space(255) //rt_1 = GetDefaultPrinter(REF printerName, 255) //IF rt_1 THEN // default_printer = Trim(printerName) //ELSE // default_printer = '' //END IF //取PB缺省打印机设置字符串 default_printer_info=ProfileString ( "win.ini", "windows", "device", "" ) return 0 end function public function integer wf_setdefaultprinter ();///wf_setdefaultprinter if default_printer_info='' or pos(default_printer_info,',')=0 then return 0 setProfileString ( "win.ini", "windows", "device", default_printer_info ) return 1 end function public function integer wf_write_childdw_pos (string arg_childdw_name, s_childreportxwidth arg_s_xwidth);//wf_write_childdw_pos(string arg_childdw_name,s_childreportxwidth arg_s_xwidth) // long ls_clmxp,ls_clm_cmplxp long i,j //列数 ls_clmxp=arg_s_xwidth.p if ls_clmxp > 0 then for i=1 to ls_clmxp SetProfileString (sys_inifilename,arg_childdw_name, string(i)+".x",string(arg_s_xwidth.x[i])) SetProfileString (sys_inifilename,arg_childdw_name, string(i)+".width",string(arg_s_xwidth.width[i])) next end if //计算列数量 ls_clm_cmplxp=arg_s_xwidth.cmplp choose case ls_clm_cmplxp case 1 SetProfileString (sys_inifilename,arg_childdw_name, "cmpl"+string(1)+".x",string(arg_s_xwidth.cmplx[1])) SetProfileString (sys_inifilename,arg_childdw_name, "cmpl"+string(1)+".width",string(arg_s_xwidth.cmplwidth[1])) case 2 SetProfileString (sys_inifilename,arg_childdw_name, "cmpl"+string(2)+".x",string(arg_s_xwidth.cmplx[2])) SetProfileString (sys_inifilename,arg_childdw_name, "cmpl"+string(2)+".width",string(arg_s_xwidth.cmplwidth[2])) case 3 SetProfileString (sys_inifilename,arg_childdw_name, "cmpl"+string(1)+".x",string(arg_s_xwidth.cmplx[1])) SetProfileString (sys_inifilename,arg_childdw_name, "cmpl"+string(1)+".width",string(arg_s_xwidth.cmplwidth[1])) SetProfileString (sys_inifilename,arg_childdw_name, "cmpl"+string(2)+".x",string(arg_s_xwidth.cmplx[2])) SetProfileString (sys_inifilename,arg_childdw_name, "cmpl"+string(2)+".width",string(arg_s_xwidth.cmplwidth[2])) case 4 SetProfileString (sys_inifilename,arg_childdw_name, "cmpl"+string(4)+".x",string(arg_s_xwidth.cmplx[4])) SetProfileString (sys_inifilename,arg_childdw_name, "cmpl"+string(4)+".width",string(arg_s_xwidth.cmplwidth[4])) case 5 SetProfileString (sys_inifilename,arg_childdw_name, "cmpl"+string(2)+".x",string(arg_s_xwidth.cmplx[2])) SetProfileString (sys_inifilename,arg_childdw_name, "cmpl"+string(2)+".width",string(arg_s_xwidth.cmplwidth[2])) SetProfileString (sys_inifilename,arg_childdw_name, "cmpl"+string(3)+".x",string(arg_s_xwidth.cmplx[3])) SetProfileString (sys_inifilename,arg_childdw_name, "cmpl"+string(3)+".width",string(arg_s_xwidth.cmplwidth[3])) case 6 SetProfileString (sys_inifilename,arg_childdw_name, "cmpl"+string(2)+".x",string(arg_s_xwidth.cmplx[2])) SetProfileString (sys_inifilename,arg_childdw_name, "cmpl"+string(2)+".width",string(arg_s_xwidth.cmplwidth[2])) SetProfileString (sys_inifilename,arg_childdw_name, "cmpl"+string(4)+".x",string(arg_s_xwidth.cmplx[3])) SetProfileString (sys_inifilename,arg_childdw_name, "cmpl"+string(4)+".width",string(arg_s_xwidth.cmplwidth[3])) case 7 SetProfileString (sys_inifilename,arg_childdw_name, "cmpl"+string(1)+".x",string(arg_s_xwidth.cmplx[1])) SetProfileString (sys_inifilename,arg_childdw_name, "cmpl"+string(1)+".width",string(arg_s_xwidth.cmplwidth[1])) SetProfileString (sys_inifilename,arg_childdw_name, "cmpl"+string(2)+".x",string(arg_s_xwidth.cmplx[2])) SetProfileString (sys_inifilename,arg_childdw_name, "cmpl"+string(2)+".width",string(arg_s_xwidth.cmplwidth[2])) SetProfileString (sys_inifilename,arg_childdw_name, "cmpl"+string(4)+".x",string(arg_s_xwidth.cmplx[3])) SetProfileString (sys_inifilename,arg_childdw_name, "cmpl"+string(4)+".width",string(arg_s_xwidth.cmplwidth[3])) end choose return 1 end function public function integer wf_read_childdw_pos (string arg_childdw_name, ref s_childreportxwidth arg_s_xwidth);//f_read_childdw_pos(string arg_childdw_name,s_childreportxwidth arg_s_xwidth) // int ls_i,ls_clmno int rslt=1 datastore obj_dw obj_dw =create datastore obj_dw.dataobject=arg_childdw_name obj_dw.settransobject(sqlca) ls_clmno=integer(obj_dw.Describe('DataWindow.Column.Count')) if ls_clmno=0 then rslt=0 goto ext end if for ls_i=1 to ls_clmno long column_xpos,column_width column_xpos=long(ProfileString(sys_inifilename,arg_childdw_name, string(ls_i)+".x",'-1')) column_width=long(ProfileString(sys_inifilename,arg_childdw_name, string(ls_i)+".width",'-1')) if column_xpos = -1 or column_width = -1 then rslt=0 goto ext end if arg_s_xwidth.width[ls_i]=column_width arg_s_xwidth.x[ls_i]=column_xpos next arg_s_xwidth.p=ls_clmno if obj_dw.Describe('cmpl1.name')='cmpl1' then arg_s_xwidth.cmplwidth[1]=long(ProfileString(sys_inifilename,arg_childdw_name, "cmpl1.width",'-1')) arg_s_xwidth.cmplx[1]=long(ProfileString(sys_inifilename,arg_childdw_name, "cmpl1.x",'-1')) if arg_s_xwidth.cmplx[1] = -1 or arg_s_xwidth.cmplwidth[1] = -1 then rslt=0 goto ext end if arg_s_xwidth.cmplp=1 end if if obj_dw.Describe('cmpl2.name')='cmpl2' then arg_s_xwidth.cmplwidth[2]=long(ProfileString(sys_inifilename,arg_childdw_name, "cmpl2.width",'-1')) arg_s_xwidth.cmplx[2]=long(ProfileString(sys_inifilename,arg_childdw_name, "cmpl2.x",'-1')) if arg_s_xwidth.cmplx[2] = -1 or arg_s_xwidth.cmplwidth[2] = -1 then rslt=0 goto ext end if arg_s_xwidth.cmplp=arg_s_xwidth.cmplp+2 end if if obj_dw.Describe('cmpl3.name')='cmpl3' then arg_s_xwidth.cmplwidth[3]=long(ProfileString(sys_inifilename,arg_childdw_name, "cmpl3.width",'-1')) arg_s_xwidth.cmplx[3]=long(ProfileString(sys_inifilename,arg_childdw_name, "cmpl3.x",'-1')) if arg_s_xwidth.cmplx[3] = -1 or arg_s_xwidth.cmplwidth[3] = -1 then rslt=0 goto ext end if arg_s_xwidth.cmplp=arg_s_xwidth.cmplp+4 end if ext: return rslt end function public subroutine wf_readini_begin ();dwod=dw_1.object.mxreport s_mdfxwidth_tran s_mdfxw_tran s_mdfxw_tran.retrieveid=retrieveid if em_1.enabled then secondretrieveid=long(em_1.text) end if s_mdfxw_tran.secondretrieveid=secondretrieveid s_mdfxw_tran.dataobject=dwod.dataobject if wf_read_childdw_pos(dwod.dataobject,s_xwidth)=0 then return end if wf_mdfmxreport(s_xwidth) end subroutine public function integer wf_trycreate_sys_dwnsyntax (ref string arg_msg);//wf_trycreate_sys_dwnsyntax long rslt=1 long cnt string createsql_string,t_str createsql_string="CREATE TABLE sys_dwnSyntax ( dwname char (50) NOT NULL,dname char (50) NOT NULL,default_flag tinyint not null default (0),dwSyntaxB image not NULL DEFAULT (''),subdwSyntaxB image not NULL DEFAULT ('')) "+& " ~n ALTER TABLE sys_dwnSyntax WITH NOCHECK ADD CONSTRAINT PK_sys_dwnSyntax PRIMARY KEY CLUSTERED (dwname,dname)" t_str="select count(*) from sys_dwnSyntax" Execute immediate :t_str; if sqlca.sqlcode=0 then //已经存在该表 rslt=1 goto ext end if Execute immediate :createsql_string ; if sqlca.sqlcode<>0 then arg_msg='建立表sys_dwnSyntax失败>>'+sqlca.sqlerrtext rollback ; rslt=0 goto ext end if commit ; ext: return rslt return 0 end function public function integer wf_dwcreate (string arg_dwname, string arg_formatname, ref string arg_errmsg);blob dwSyntax int rslt=1 selectblob dwSyntaxB into :dwSyntax from sys_dwnSyntax where dwname=:arg_dwname and dname=:arg_formatname; if sqlca.sqlcode=-1 then Messagebox('系统提示','查询单据格式失败,原因:'+sqlca.sqlerrtext) rslt=0 goto ext end if //Messagebox('string(dwSyntax)',string(dwSyntax)) if dw_1.create(string(dwSyntax),arg_errmsg)<>1 then Messagebox('系统提示',arg_errmsg) goto ext end if dw_1.object.DataWindow.Print.Preview = 'yes' // dw_1.Object.DataWindow.Print.Duplex = 2 dw_1.Object.DataWindow.Print.Preview.Rulers = "yes" ext: return rslt end function public subroutine wf_defdataobject ();String errmsg Long ls_count,rslt = 1 Blob sqlblob SELECT count(*) INTO :ls_count FROM sys_dwnSyntax Where dwname = :fact_print_msg.obj_dwname AND default_flag = 1 ; IF sqlca.SQLCode = -1 THEN MessageBox('系统提示','查询单据格式失败'+sqlca.SQLErrText) RETURN END IF IF ls_count = 1 THEN SELECT dwname,dname INTO :default_dwname,:default_dname FROM sys_dwnSyntax Where dwname = :fact_print_msg.obj_dwname AND default_flag = 1 ; IF sqlca.SQLCode = -1 THEN MessageBox('系统提示','查询单据格式失败'+sqlca.SQLErrText) RETURN END IF IF wf_dwcreate(default_dwname,default_dname,errmsg) = 0 THEN MessageBox('系统提示','打开单据格式失败!原因:'+errmsg) RETURN END IF st_4.Text = default_dname dw_1.SetTransObject(sqlca) ELSEIF ls_count = 0 THEN st_4.Text = '标准格式' END IF st_5.text = dw_1.dataobject end subroutine public subroutine wf_subdwpos_strutoblob (s_childreportxwidth arg_s_xwidth, ref blob subdwpos);long ls_clmxp,ls_cmplxp long i,j string x_str,width_str,clmxp_str,cmpx_str,cmpwidth_str,cmp_str,subdwstr //列数 ls_clmxp=arg_s_xwidth.p if ls_clmxp > 0 then for i=1 to ls_clmxp x_str=x_str+string(arg_s_xwidth.x[i])+',' width_str=width_str+string(arg_s_xwidth.width[i])+',' next x_str=left(x_str,len(x_str) - 1)+';' width_str=left(width_str,len(width_str) - 1)+';' clmxp_str='P:'+string(ls_clmxp)+';x:'+x_str+'width:'+width_str end if //Messagebox('clmxp_str',clmxp_str) ls_cmplxp=arg_s_xwidth.cmplp if ls_cmplxp>0 then for i= 1 to upperbound(arg_s_xwidth.cmplx) cmpwidth_str=cmpwidth_str+string(arg_s_xwidth.cmplwidth[i])+',' cmpx_str=cmpx_str+string(arg_s_xwidth.cmplx[i])+',' next cmpx_str=left(cmpx_str,len(cmpx_str) - 1)+';' cmpwidth_str=left(cmpwidth_str,len(cmpwidth_str) - 1)+';' cmp_str='cmplp:'+string(ls_cmplxp)+';x:'+cmpx_str+'width:'+cmpwidth_str end if //Messagebox('cmp_str',cmp_str) //Messagebox('',clmxp_str+cmp_str) subdwpos=blob(clmxp_str+cmp_str) //s_subdwxwidth end subroutine public subroutine wf_subdwpos_blobtostru (blob arg_blob, ref s_childreportxwidth arg_s_xwidth);//wf_subdwpos_blobtostru(arg_blob,arg_s_xwidth) string subdwpos_str,clm_str,cmp_str,clm_strx,clm_strwidth,cmplp_x,cmplp_width long clm_p,cmplp,i subdwpos_str=string(arg_blob) if pos(subdwpos_str,'cmplp:') > 0 then clm_str=mid(subdwpos_str,1,pos(subdwpos_str,'cmplp:') - 1) else clm_str=mid(subdwpos_str,1) end if cmp_str=mid(subdwpos_str,pos(subdwpos_str,'cmplp:')) clm_strx=mid(clm_str,pos(clm_str,'x:')+2,pos(clm_str,';width:') - pos(clm_str,'x:') - 1 ) //x_str clm_strwidth=mid(clm_str,pos(clm_str,'width:') + 6) //width_str cmplp_x=mid(cmp_str,pos(cmp_str,'x:')+2,pos(cmp_str,';width:') - pos(cmp_str,'x:') - 1 ) cmplp_width=mid(cmp_str,pos(cmp_str,'width:') + 6) //cmplpwidth_str clm_p=long(mid(clm_str,3,pos(clm_str,';') - 3)) //P cmplp=long(mid(cmp_str,7,pos(cmp_str,';') - 7)) //cmplp arg_s_xwidth.p=clm_p arg_s_xwidth.cmplp=cmplp //messagebox('all',subdwpos_str) //MEssagebox('clm_str',clm_str) //MEssagebox('cmp_str',cmp_str) // //MEssagebox('clm_p',clm_p) //MEssagebox('cmplp',cmplp) // //MEssagebox('clm_strx',clm_strx) //MEssagebox('clm_strwidth',clm_strwidth) long xmx string xstr xmx=0 xstr='' for i =1 to len(clm_strx) //x if mid(clm_strx,i,1)<>',' and mid(clm_strx,i,1)<>';' then xstr=xstr+mid(clm_strx,i,1) else xmx++ arg_s_xwidth.x[xmx]=long(xstr) xstr='' end if next xmx=0 xstr='' for i =1 to len(clm_strwidth) //width if mid(clm_strwidth,i,1)<>',' and mid(clm_strwidth,i,1)<>';' then xstr=xstr+mid(clm_strwidth,i,1) else xmx++ arg_s_xwidth.width[xmx]=long(xstr) xstr='' end if next xmx=0 xstr='' for i =1 to len(cmplp_x) //cmplp_x if mid(cmplp_x,i,1)<>',' and mid(cmplp_x,i,1)<>';' then xstr=xstr+mid(cmplp_x,i,1) else xmx++ arg_s_xwidth.cmplx[xmx]=long(xstr) xstr='' end if next xmx=0 xstr='' for i =1 to len(cmplp_width) //cmplp_width if mid(cmplp_width,i,1)<>',' and mid(cmplp_width,i,1)<>';' then xstr=xstr+mid(cmplp_width,i,1) else xmx++ arg_s_xwidth.cmplwidth[xmx]=long(xstr) xstr='' end if next //messagebox('','sdfsdf') end subroutine public subroutine wf_dowithm (integer commid);//wf_dowithm String errmsg Blob subdwpos s_childreportxwidth s_subdwpos CHOOSE CASE commid CASE 1 cb_mdfmxrp.TriggerEvent(Clicked!) CASE 21 String ls_STR,ls_subsy ls_STR = dw_1.Describe("DataWindow.Syntax") s_preview_billformatset_tran s_billformat s_billformat.dwname = dw_1.DataObject s_billformat.dname = st_4.Text s_billformat.dwsyntaxb = Blob(ls_STR) wf_subdwpos_strutoblob(s_xwidth,subdwpos) s_billformat.subdwsyntaxb = subdwpos OpenWithParm(w_publ_preview_billformatset,s_billformat) s_billformat = Message.PowerObjectParm IF s_billformat.dname <> '' And s_billformat.dname <> '标准格式' THEN IF wf_dwcreate(s_billformat.dwname,s_billformat.dname,errmsg) = 0 THEN MessageBox('系统提示','打开单据格式失败!原因:'+errmsg) RETURN END IF END IF IF s_billformat.dname = '标准格式' THEN dw_1.DataObject = dw_1.DataObject END IF IF s_billformat.dname <> '' THEN s_childreportxwidth s_subdw st_4.Text = s_billformat.dname // wf_subdwpos_blobtostru(s_billformat.subdwsyntaxb,s_subdw) // wf_mdfmxreport(s_subdw) dw_1.Object.DataWindow.Print.Preview = 'yes' // dw_1.Object.DataWindow.Print.Duplex = 2 dw_1.Object.DataWindow.Print.Preview.Rulers = "yes" dw_1.SetTransObject(sqlca) cb_refresh.TriggerEvent(Clicked!) END IF IF wf_read_subdwpos(dw_1.DataObject,s_billformat.dname,s_subdwpos,errmsg) = 0 THEN MessageBox('系统信息',errmsg) RETURN ELSE wf_mdfmxreport(s_subdwpos) END IF CASE 22 st_4.Text = '标准格式' dw_1.DataObject = dw_1.DataObject dw_1.Object.DataWindow.Print.Preview = 'yes' // dw_1.Object.DataWindow.Print.Duplex = 2 dw_1.Object.DataWindow.Print.Preview.Rulers = "yes" dw_1.SetTransObject(sqlca) dw_retrieve() END CHOOSE end subroutine public function integer wf_read_subdwpos (string arg_dwname, string arg_dname, ref s_childreportxwidth s_subdwwidth, ref string arg_msg);//wf_read_subdwpos(arg_dwname,arg_dname,arg_msg) Blob ls_subdwSyntaxB Int rslt = 1 SELECTBLOB subdwSyntaxB INTO :ls_subdwSyntaxB FROM sys_dwnSyntax Where dwname = :arg_dwname AND dname = :arg_dname; IF sqlca.SQLCode = -1 THEN arg_msg = '读取单据明细表格式失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF IF Len(trim(string(ls_subdwSyntaxB))) > 0 THEN dwod = dw_1.Object.mxreport wf_subdwpos_blobtostru(ls_subdwSyntaxB,s_subdwwidth) END IF ext: RETURN rslt end function public subroutine wf_nullrow (long arg_rowcnt, long arg_pagerow, ref long arg_nullrow);//==================================================================== // Function: wf_nullrow() //-------------------------------------------------------------------- // Description:返回加空行数 //-------------------------------------------------------------------- // Arguments: // value long arg_rowcnt // value long arg_pagerow // reference long arg_nullrow //-------------------------------------------------------------------- // Returns: (none) //-------------------------------------------------------------------- // Author: yyx Date: 2004.09.13 //-------------------------------------------------------------------- // Modify History: // //==================================================================== Long pagecnt,tal_rowcnt pagecnt = Long(arg_rowcnt / arg_pagerow) tal_rowcnt += arg_rowcnt //小计 IF cbx_ifprint_xj.Checked THEN tal_rowcnt += pagecnt END IF //合计 IF cbx_ifprint_hj.Checked THEN tal_rowcnt += 1 END IF //tal_rowcnt = arg_rowcnt + pagecnt + 1 IF Mod(tal_rowcnt,arg_pagerow) <> 0 THEN arg_nullrow = arg_pagerow - Mod(tal_rowcnt,arg_pagerow) ELSE arg_nullrow = 0 END IF end subroutine public function integer f_export ();Blob subdwpos String ls_STR,ls_subsy s_childreportxwidth s_subdwpos ls_STR = dw_1.Describe("DataWindow.Syntax") s_preview_billformatset_tran s_billformat s_billformat.dwname = dw_1.DataObject s_billformat.dname = st_4.Text s_billformat.dwsyntaxb = Blob(ls_STR) wf_subdwpos_strutoblob(s_xwidth,subdwpos) s_billformat.subdwsyntaxb = subdwpos s_billformat.ifimporflag = 1 OpenWithParm(w_report_inexport,s_billformat) RETURN 1 end function public function integer f_inport ();Blob subdwpos String ls_STR,ls_subsy s_childreportxwidth s_subdwpos // ls_STR=dw_1.Describe("DataWindow.Syntax") s_preview_billformatset_tran s_billformat // s_billformat.dwname=dw_1.dataobject // s_billformat.dname=st_4.text // s_billformat.dwsyntaxb=blob(ls_STR) // wf_subdwpos_strutoblob(s_xwidth,subdwpos) // s_billformat.subdwsyntaxb=subdwpos s_billformat.ifimporflag = 0 OpenWithParm(w_report_inexport,s_billformat) //s_billformat = message.powerobjectparm RETURN 1 end function public function integer wf_check_mxreport ();Int rslt = 1 //datawindowchild childdw // //dw_uc.GetChild("u_outware_storageid",childdw) //childdw.SetTransObject (sqlca) //IF childdw.Retrieve(cur_scid,sys_user_storageid) = 0 THEN // childdw.InsertRow(0) //END IF // RETURN rslt end function public subroutine dw_retrieve ();//dw_retrieve CHOOSE CASE fact_print_msg.retr_pram_falg CASE 0 //SHARE DATAWINDOW DATAWINDOW LS_DW LS_DW = fact_print_msg.SHARE_DW LS_DW.ShareData(DW_1) CASE 1 //ONE STRING PRAM DW_1.Retrieve(fact_print_msg.retr_pramstr) CASE 2 //ONE NUMBER PRAM DW_1.Retrieve(fact_print_msg.retr_pramnmb) retrieveid = fact_print_msg.retr_pramnmb CASE 3 //ONE DATE PRAM DW_1.Retrieve(fact_print_msg.retr_pramfd) CASE 4 //TWO DATE PRAM DW_1.Retrieve(fact_print_msg.retr_pramfd,fact_print_msg.retr_pramed) CASE 5 //TWO NUMBER PRAM DW_1.Retrieve(fact_print_msg.retr_pramnmb,fact_print_msg.b_long) CASE 6 //TWO DATETIME PRAM DW_1.Retrieve(fact_print_msg.retr_pramfdt,fact_print_msg.retr_pramedt) CASE 7 //scid and TWO DATETIME PRAM DW_1.Retrieve(fact_print_msg.retr_scid,fact_print_msg.retr_pramfdt,fact_print_msg.retr_pramedt) CASE 8 //scid,long and TWO DATETIME PRAM DW_1.Retrieve(fact_print_msg.retr_scid,fact_print_msg.retr_pramnmb,fact_print_msg.retr_pramfdt,fact_print_msg.retr_pramedt) CASE 9 //TWO NUMBER PRAM and one string pram DW_1.Retrieve(fact_print_msg.retr_pramnmb,fact_print_msg.retr_pramstr,fact_print_msg.b_long) CASE 11 //scid string DW_1.Retrieve(fact_print_msg.retr_scid,fact_print_msg.retr_pramstr) CASE 12 //scid long DW_1.Retrieve(fact_print_msg.retr_scid,fact_print_msg.retr_pramnmb) CASE 13 //scid long and TWO NUMBER PRAM DW_1.Retrieve(fact_print_msg.retr_scid,fact_print_msg.retr_pramnmb,fact_print_msg.b_long) CASE 14 //ONE NUMBER PRAM and ONE STRING PRAM DW_1.Retrieve(fact_print_msg.retr_pramnmb,fact_print_msg.retr_pramstr) CASE 15 //scid long and TWO NUMBER PRAM and null_row wf_nullrow(fact_print_msg.rowcnt,fact_print_msg.printrow,fact_print_msg.nullrow) DW_1.Retrieve(fact_print_msg.retr_scid,fact_print_msg.retr_pramnmb,fact_print_msg.printrow,fact_print_msg.nullrow) CASE 16 //scid long and TWO NUMBER PRAM and null_row wf_nullrow(fact_print_msg.rowcnt,fact_print_msg.printrow,fact_print_msg.nullrow) DW_1.Retrieve(fact_print_msg.retr_scid,fact_print_msg.retr_pramstr,fact_print_msg.printrow,fact_print_msg.nullrow) CASE 17 //SCID LONG AND STRING_ARRAY and null_row wf_nullrow(fact_print_msg.rowcnt,fact_print_msg.printrow,fact_print_msg.nullrow) DW_1.Retrieve(fact_print_msg.retr_scid,fact_print_msg.a_string_arr,fact_print_msg.printrow,fact_print_msg.nullrow,fact_print_msg.retr_pramfdt,fact_print_msg.retr_pramedt) case 18 DW_1.Retrieve(fact_print_msg.retr_scid,fact_print_msg.retr_pramnmb,fact_print_msg.b_long,fact_print_msg.c_long) CASE ELSE DW_1.Retrieve() END CHOOSE IF fact_print_msg.retr_pram_falg <> 0 THEN DW_1.SetFilter(fact_print_msg.FILTER_STRING) DW_1.Filter() END IF //dw_1.object.title.text=sys_message_report_title //messagebox('',sys_message_report_title) end subroutine public subroutine wf_add_pic ();Long Columns,i,j,k String ls_modify_str Boolean lb_find = False IF Pos(Lower(dw_1.Describe("DataWindow.Objects")),'print_picture') > 0 THEN Columns = Long(dw_1.Describe("DataWindow.Column.Count")) FOR i = 1 To Columns ls_modify_str = dw_1.Describe("#" + String(i) + ".name") ls_modify_str = Lower(ls_modify_str) IF Pos(ls_modify_str,'mtrlid') > 0 Or Pos(ls_modify_str,'_mtrlid') > 0 THEN lb_find = True EXIT END IF NEXT IF lb_find THEN FOR j = 1 To dw_1.RowCount() IF dw_1.GetItemNumber( j, ls_modify_str ) > 0 THEN FOR k = 1 To UpperBound(fact_print_msg.s_pic.path) IF dw_1.GetItemNumber( j, ls_modify_str ) = fact_print_msg.s_pic.mtrlid[k] THEN dw_1.Object.Print_Picture[j] = fact_print_msg.s_pic.path[k] END IF NEXT ELSE EXIT END IF NEXT END IF END IF //String a,c //a = childwod.dataobject //datastore b //b = create datastore //b.DataObject = a //b.SetTransObject (sqlca) // //IF dw_1.Describe('mxreport.type') = 'report' And Pos(Lower(b.Describe("DataWindow.Objects")),'print_picture') > 0 THEN // Columns = Long(b.Describe("DataWindow.Column.Count")) // childwod = dw_1.Object.mxreport // // FOR i = 1 To Columns // ls_modify_str = b.Describe("#" + String(i) + ".name") // ls_modify_str = Lower(ls_modify_str) // IF Pos(Lower(ls_modify_str),'mtrlid') > 0 Or Pos(Lower(ls_modify_str),'_mtrlid') > 0 THEN // FOR j = 1 To 1 // FOR k = 1 To UpperBound(fact_print_msg.s_pic.path) //// IF childwod.GetItemNumber( j, ls_modify_str ) = fact_print_msg.s_pic.mtrlid[k] THEN // childwod.Object.Print_Picture[j] = fact_print_msg.s_pic.path[k] //// END IF // NEXT // NEXT // END IF // NEXT //ELSE //END IF end subroutine public subroutine wf_clear_temp (); String ls_label String ls_type,LS_PATH Int li_count,i = 1 ls_type = "*.*" LS_PATH = sys_cur_path+ins_fjtemppath lb_1.Reset() lb_1.DirList(LS_PATH+'\'+ls_type, 0) li_count = lb_1.TotalItems() IF li_count > 0 THEN FOR i = li_count TO 1 STEP -1 ls_label = lb_1.Text(i) if pos(ls_label,String(sys_empid) + '_' + fact_print_msg.obj_dwname) > 0 then FileDelete(LS_PATH+'\' + ls_label) end if NEXT END IF end subroutine on w_publ_preview.create int iCurrent call super::create this.cb_refresh=create cb_refresh this.st_1=create st_1 this.cb_savestyle=create cb_savestyle this.cb_3=create cb_3 this.ddlb_1=create ddlb_1 this.dw_1=create dw_1 this.ddlb_printerlist=create ddlb_printerlist this.em_1=create em_1 this.st_2=create st_2 this.cbx_select_page=create cbx_select_page this.cb_mdfmxrp=create cb_mdfmxrp this.st_3=create st_3 this.st_4=create st_4 this.cb_1=create cb_1 this.lb_1=create lb_1 this.st_5=create st_5 this.st_6=create st_6 this.cbx_ifprint_xj=create cbx_ifprint_xj this.cbx_ifprint_hj=create cbx_ifprint_hj this.cb_2=create cb_2 this.ln_bar=create ln_bar this.ln_bar2=create ln_bar2 this.r_bar=create r_bar this.ln_1=create ln_1 this.ln_2=create ln_2 iCurrent=UpperBound(this.Control) this.Control[iCurrent+1]=this.cb_refresh this.Control[iCurrent+2]=this.st_1 this.Control[iCurrent+3]=this.cb_savestyle this.Control[iCurrent+4]=this.cb_3 this.Control[iCurrent+5]=this.ddlb_1 this.Control[iCurrent+6]=this.dw_1 this.Control[iCurrent+7]=this.ddlb_printerlist this.Control[iCurrent+8]=this.em_1 this.Control[iCurrent+9]=this.st_2 this.Control[iCurrent+10]=this.cbx_select_page this.Control[iCurrent+11]=this.cb_mdfmxrp this.Control[iCurrent+12]=this.st_3 this.Control[iCurrent+13]=this.st_4 this.Control[iCurrent+14]=this.cb_1 this.Control[iCurrent+15]=this.lb_1 this.Control[iCurrent+16]=this.st_5 this.Control[iCurrent+17]=this.st_6 this.Control[iCurrent+18]=this.cbx_ifprint_xj this.Control[iCurrent+19]=this.cbx_ifprint_hj this.Control[iCurrent+20]=this.cb_2 this.Control[iCurrent+21]=this.ln_bar this.Control[iCurrent+22]=this.ln_bar2 this.Control[iCurrent+23]=this.r_bar this.Control[iCurrent+24]=this.ln_1 this.Control[iCurrent+25]=this.ln_2 end on on w_publ_preview.destroy call super::destroy destroy(this.cb_refresh) destroy(this.st_1) destroy(this.cb_savestyle) destroy(this.cb_3) destroy(this.ddlb_1) destroy(this.dw_1) destroy(this.ddlb_printerlist) destroy(this.em_1) destroy(this.st_2) destroy(this.cbx_select_page) destroy(this.cb_mdfmxrp) destroy(this.st_3) destroy(this.st_4) destroy(this.cb_1) destroy(this.lb_1) destroy(this.st_5) destroy(this.st_6) destroy(this.cbx_ifprint_xj) destroy(this.cbx_ifprint_hj) destroy(this.cb_2) destroy(this.ln_bar) destroy(this.ln_bar2) destroy(this.r_bar) destroy(this.ln_1) destroy(this.ln_2) end on event open;call super::open;//检查本地的打印格式库跟服务器的修改时间是否一致 String ls_msg //初始化打印机 wf_initprinterinfo() ///////////////////// // String errmsg fact_print_msg = Message.PowerObjectParm Long ls_rslt String lls_str ls_comments[1] = '' obj_dwname = fact_print_msg.obj_dwname //获取DW嵌套子DW String ls_pblname,ls_pblpath,dwsyntax Long ll_beg,ll_end SELECT pblname INTO :ls_pblname FROM sys_dft_dwprint_dynamic Where dft_new_dwname = :obj_dwname; IF sqlca.SQLCode <> 0 THEN ls_pblname = '' END IF IF ls_pblname <> '' THEN IF f_init_dftpbl(ls_pblname,obj_dwname,ls_msg) = 0 THEN MessageBox('系统信息',ls_msg) RETURN END IF END IF st_1.Text = fact_print_msg.tag_text dw_1.DataObject = fact_print_msg.obj_dwname IF dw_1.Describe("DataWindow.Objects") = "" THEN MessageBox('提示','初始化打印格式失败,请检查重定向设置') dw_1.DataObject = '' RETURN END IF IF fact_print_msg.printrow = 0 THEN em_1.Enabled = True em_1.Text = ProfileString (sys_inifilename,dw_1.DataObject, "printrow", '10') fact_print_msg.printrow = Long(em_1.Text) ELSE em_1.Enabled = False em_1.Text = String(fact_print_msg.printrow) END IF IF f_ProfileString (sys_empid,dw_1.DataObject, "cbx_ifprint_xj", '1') = '1' THEN cbx_ifprint_xj.Checked = True ELSE cbx_ifprint_xj.Checked = False END IF IF f_ProfileString (sys_empid,dw_1.DataObject, "cbx_ifprint_hj", '1') = '1' THEN cbx_ifprint_hj.Checked = True ELSE cbx_ifprint_hj.Checked = False END IF retrieveid = fact_print_msg.retr_pramnmb retrievestr = fact_print_msg.retr_pramstr //******************** //==================================================================== // script - w_publ_preview inherited from w_publ_base for open // reason: //-------------------------------------------------------------------- // modified by: yyx date: 2004.05.09 //-------------------------------------------------------------------- IF fact_print_msg.obj_dwname = 'dw_rp_mtrlprocode_lsx' Or fact_print_msg.obj_dwname = 'dw_rp_mtrlprocode_lsx_mg' THEN cbx_select_page.Checked = True ELSE cbx_select_page.Checked = False END IF //==================================================================== dw_1.SetTransObject(sqlca) IF wf_trycreate_sys_dwnsyntax(errmsg) = 0 THEN MessageBox('提示',errmsg) END IF IF fact_print_msg.share_dw_title <> '' THEN dw_1.Object.rp_title.Text = fact_print_msg.share_dw_title END IF wf_defdataobject() dw_retrieve() IF wf_read_subdwpos(default_dwname,default_dname,s_xwidth,errmsg) = 0 THEN MessageBox('错误',errmsg) ELSE wf_mdfmxreport(s_xwidth) END IF dw_1.SetRedraw(False) IF /* Not IsNull(fact_print_msg.ini_group) And*/ Trim(dw_1.DataObject) <> '' THEN // integer li_test // li_test = Integer(ProfileString(sys_inifilename,dw_1.DataObject, "margin_top", "11")) // li_test = Integer(ProfileString(sys_inifilename,dw_1.DataObject, "margin_left", "10" )) // li_test = Integer(ProfileString(sys_inifilename,dw_1.DataObject, "margin_bottom", "11")) // li_test = Integer(ProfileString(sys_inifilename,dw_1.DataObject, "margin_right", "10" )) // dw_1.Object.datawindow.Print.margin.Top = Integer(ProfileString(sys_inifilename,dw_1.DataObject, "margin_top", "20")) // dw_1.Object.datawindow.Print.margin.Left = Integer(ProfileString(sys_inifilename,dw_1.DataObject, "margin_left", "15" )) // // dw_1.Object.datawindow.Print.margin.bottom = Integer(ProfileString(sys_inifilename,dw_1.DataObject, "margin_bottom", "20")) // dw_1.Object.datawindow.Print.margin.Right = Integer(ProfileString(sys_inifilename,dw_1.DataObject, "margin_right", "15" )) // // dw_1.Object.datawindow.Print.paper.size = Integer(ProfileString(sys_inifilename,dw_1.DataObject, "paper_size", "0" )) // dw_1.Object.datawindow.Print.orientation = Integer(ProfileString(sys_inifilename,dw_1.DataObject, "orientation", "0" )) Integer margin_top =-1,margin_left=-1,margin_bottom=-1,margin_right=-1,paper_size=-1,orientation=-1 margin_top = Integer(f_ProfileString(sys_empid,dw_1.DataObject, "margin_top", "-1")) margin_left= Integer(f_ProfileString(sys_empid,dw_1.DataObject, "margin_left", "-1" )) margin_bottom= Integer(f_ProfileString(sys_empid,dw_1.DataObject, "margin_bottom", "-1")) margin_right= Integer(f_ProfileString(sys_empid,dw_1.DataObject, "margin_right", "-1" )) paper_size= Integer(f_ProfileString(sys_empid,dw_1.DataObject, "paper_size", "-1" )) orientation= Integer(f_ProfileString(sys_empid,dw_1.DataObject, "orientation", "-1" )) // dw_1.Object.datawindow.Print.margin.Top = Integer(f_ProfileString(sys_empid,dw_1.DataObject, "margin_top", "20")) // dw_1.Object.datawindow.Print.margin.Left = Integer(f_ProfileString(sys_empid,dw_1.DataObject, "margin_left", "15" )) // // dw_1.Object.datawindow.Print.margin.bottom = Integer(f_ProfileString(sys_empid,dw_1.DataObject, "margin_bottom", "20")) // dw_1.Object.datawindow.Print.margin.Right = Integer(f_ProfileString(sys_empid,dw_1.DataObject, "margin_right", "15" )) // // dw_1.Object.datawindow.Print.paper.size = Integer(f_ProfileString(sys_empid,dw_1.DataObject, "paper_size", "0" )) // dw_1.Object.datawindow.Print.orientation = Integer(f_ProfileString(sys_empid,dw_1.DataObject, "orientation", "0" )) if margin_top > 0 then dw_1.Object.datawindow.Print.margin.Top =margin_top end if if margin_left > 0 then dw_1.Object.datawindow.Print.margin.Left =margin_left end if if margin_bottom > 0 then dw_1.Object.datawindow.Print.margin.bottom =margin_bottom end if if margin_right > 0 then dw_1.Object.datawindow.Print.margin.Right =margin_right end if if paper_size > 0 then dw_1.Object.datawindow.Print.paper.size =paper_size end if if orientation > 0 then dw_1.Object.datawindow.Print.orientation =orientation end if dw_default_printer = f_ProfileString(sys_empid,dw_1.DataObject, "dw_default_printer ", "" ) IF dw_default_printer = '' THEN ddlb_printerlist.Text = default_printer ELSE ddlb_printerlist.Text = dw_default_printer END IF END IF dw_1.SetRedraw(True) ///////////////////////////////////////////// // dw_1.Modify("DataWindow.Print.Paper.Size=256") // //25.4 centimeters long // dw_1.Modify("DataWindow.Print.CustomPage.Length=140") // //19.5 centimeters wide 94 // dw_1.Modify("DataWindow.Print.CustomPage.Width=210") ///////////////////////////////////////// dw_1.Object.datawindow.Print.Preview = 'yes' dw_1.Object.datawindow.Print.Preview.rulers = "yes" IF Not dw_1.Describe('mxreport.type') = 'report' Or retrieveid = 0 And retrievestr = '' THEN cb_mdfmxrp.Enabled = False //检查是否存在名为mxreport的report没有则此功能不可以用 END IF IF fact_print_msg.ifpic = 1 THEN wf_add_pic() END IF //read ini //if cb_mdfmxrp.enabled then // wf_readini_begin() //end if /// /* 使用调整子dw的列宽及序列功能的约定: 1.明细内嵌dw的名称必须为'mxreport' 2.mxreport的retrieve参数必须为主dw的第一列值,必须是一个,且必须是long 3.mxreport必须是grid 4.显示的列必须都是selete列,不可以是dw计算列 5.一般(14cm宽打印纸)mxreport.width=3287 6.mxreport中的计算列必须命名为(最多支持三个):cmpl1,cmpl2,cmpl3 */ //dw_1.modify('title.text="'+trim(fact_print_msg.tag_text)+'"') //dw_1.object.datawindow.print.preview.zoom = 100 /*structure: s_print_msg obj_dwname: retrieve datawindow 名称 share_dw : 目标 share datawindow 名称 retr_pram_falg :int 参数传递形式 case 0 //share datawindow datawindow ls_dw ls_dw=fact_print_msg.share_dw ls_dw.sharedata(dw_1) case 1 //one string pram dw_1.retrieve(fact_print_msg.retr_pramstr) case 2 //one number pram dw_1.retrieve(fact_print_msg.retr_pramnmb) case 3 //one date pram dw_1.retrieve(fact_print_msg.retr_pramfd) case 4 //two date pram dw_1.retrieve(fact_print_msg.retr_pramfd,fact_print_msg.retr_pramed) case else dw_1.retrieve() retr_pramstr retr_pramnmb retr_pramfd retr_pramed tag_text filter_string : filter 表达式 title :datawindow title titleobjectname :datawindow title setup_flag :0- printsetup enabled 1- printsetup disabled pagech_flag : 1 打印时提示选页打印 ini_group : 存取普通打印设置的系统 ini 文件组名,为空时不存取 */ end event event resize;dw_1.setredraw(false) ln_bar.endx = this.width ln_bar2.endx = this.width ln_1.endx = this.width ln_2.endx = this.width r_bar.width = this.width DW_1.WIDTH=THIS.WIDTH - DW_1.X - 40 DW_1.HEIGHT=THIS.HEIGHT - DW_1.Y - 150 dw_1.setredraw(true) end event event activate; if dw_1.DataObject <> '' then dw_1.Modify("DataWindow.Print.Preview = 'yes'") end event event close;call super::close;wf_clear_temp() CloseWithReturn(THIS,rslt_printnum) end event event ue_before_open;call super::ue_before_open;/// end event type cb_func from w_publ_base`cb_func within w_publ_preview boolean visible = false integer x = 155 integer y = 452 integer width = 265 integer height = 92 boolean enabled = false end type type cb_exit from w_publ_base`cb_exit within w_publ_preview integer x = 709 integer width = 151 integer height = 164 integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type type cb_refresh from uo_imflatbutton within w_publ_preview integer width = 151 integer height = 164 integer taborder = 110 string text = "刷新" string normalpicname = "refresh.bmp" integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type event clicked;call super::clicked;setProfileString (sys_inifilename,dw_1.DataObject, "printrow", em_1.text) fact_print_msg.printrow = Long(em_1.Text) dw_retrieve() String errmsg IF wf_read_subdwpos(default_dwname,default_dname,s_xwidth,errmsg) = 0 THEN MessageBox('系统信息',errmsg) ELSE wf_mdfmxreport(s_xwidth) END IF dw_1.SetRedraw(TRUE) end event type st_1 from statictext within w_publ_preview integer x = 928 integer y = 36 integer width = 1120 integer height = 60 integer textsize = -9 integer weight = 700 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long backcolor = 134217739 string text = "标题" boolean focusrectangle = false end type event constructor;this.backcolor = 14215660 end event type cb_savestyle from uo_imflatbutton within w_publ_preview integer x = 302 integer width = 256 integer height = 164 integer taborder = 120 string text = "单据格式" string normalpicname = "other.bmp" integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type event clicked;call super::clicked;m_publ_preview_dnset m_dnset m_dnset = CREATE m_publ_preview_dnset IF NOT dw_1.Describe('mxreport.type') = 'report' or retrieveid = 0 and retrievestr = '' THEN m_dnset.m_main.m_mxd.Enabled = FALSE //检查是否存在名为mxreport的report没有则此功能不可以用 m_dnset.m_main.PopMenu(THIS.X+50,THIS.Y+50) //m_Dfc_Control_PopupMenu dmPopupMenu //String menustr // //menustr = menustr + "|" + "Text=数据发送~tEvent=ue_sentdataout" //menustr = menustr + "|" + "Text=筛选~tEvent=ue_filter" //menustr = menustr + "|" + "Text=页面设置~tEvent=ue_setprintpage_value" //menustr = menustr + "|" + "Text=-" //menustr = menustr + "|" + "Text=下一页~tEvent=ue_snp" //menustr = menustr + "|" + "Text=上一页~tEvent=ue_spp" // //IF Len(Trim(menustr)) <> 0 THEN // dmPopupMenu = Create m_Dfc_Control_PopupMenu // dmPopupMenu.mf_BuildMenu(This, menustr) // dmPopupMenu.mf_PopMenu() // Destroy dmPopupMenu //END IF end event type cb_3 from uo_imflatbutton within w_publ_preview integer x = 151 integer width = 151 integer height = 164 integer taborder = 110 string text = "功能" string normalpicname = "setting.bmp" integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type event clicked;call super::clicked;//m_publ_preview_func m_func //m_func=create m_publ_preview_func //m_func.m_0.popmenu(this.x+50,this.y+50) m_Dfc_Control_PopupMenu dmPopupMenu String menustr menustr = menustr + "|" + "Text=数据发送~tEvent=ue_sentdataout" menustr = menustr + "|" + "Text=筛选~tEvent=ue_filter" menustr = menustr + "|" + "Text=页面设置~tEvent=ue_setprintpage_value" menustr = menustr + "|" + "Text=-" menustr = menustr + "|" + "Text=下一页~tEvent=ue_snp" menustr = menustr + "|" + "Text=上一页~tEvent=ue_spp" IF Len(Trim(menustr)) <> 0 THEN dmPopupMenu = Create m_Dfc_Control_PopupMenu dmPopupMenu.mf_BuildMenu(This, menustr) dmPopupMenu.mf_PopMenu() Destroy dmPopupMenu END IF end event type ddlb_1 from dropdownlistbox within w_publ_preview integer x = 411 integer y = 184 integer width = 283 integer height = 632 integer taborder = 100 integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long textcolor = 33554432 string text = "适当大小" boolean vscrollbar = true string item[] = {"100%","150%","200%","75%","50%","25%"} borderstyle borderstyle = stylelowered! end type event selectionchanged;dw_1.Object.DataWindow.Print.Preview.Zoom = INTEGER(LEFT(TRIM(this.text),LEN(TRIM(this.text)) - 1)) dw_1.object.DataWindow.Print.Preview = 'yes' end event event constructor;if THIS.TotalItems ( )>=1 then THIS.SelectItem(1) end event type dw_1 from datawindow within w_publ_preview integer y = 292 integer width = 2848 integer height = 1284 integer taborder = 90 boolean bringtotop = true boolean hscrollbar = true boolean vscrollbar = true boolean hsplitscroll = true boolean livescroll = true borderstyle borderstyle = stylelowered! end type event rbuttondown;if not f_power_ind(666) then // messagebox(publ_operator,'你没有使用权限!') return end if if LOWER(LEFT(dwo.type,4))='text' then s_inputbox S_SREU STRING LS_STR,column_name S_SREU.TITLE='目前标题为: '+dwo.TEXT+' 。请输入新标题: ' S_SREU.OLD_TEXT=dwo.TEXT column_name=DWO.NAME openwithparm(w_inputbox,S_SREU) LS_STR=Message.StringParm if trim(LS_STR)<>'' AND dwo.TEXT<>LS_STR then THIS.Modify(column_name+'.text="'+LS_STR+'"') END IF end if //if string(dwo.type)='report' then // messagebox('report',string(DWO.NAME)) //string str_mdf='',str_mdf_width='',str_mdf_x='',str_ls='' //int ls_i,ls_clmno,ls_rslt // ////ins_dwcld=create DataWindowChild //ls_rslt=dw_1.getchild(string(DWO.NAME),ins_dwcld) //messagebox('',string(ls_rslt)) // if ls_rslt =1 then // ls_clmno=integer(ins_dwcld.Describe('DataWindow.Column.Count')) // messagebox('DataWindow.Column.Count',string(ls_clmno)) // //integer(ins_dwcld.Object.DataWindow.Column.Count) // for ls_i=1 to ls_clmno // str_ls= '#'+string(ls_i)+'.width='+ins_dwcld.Describe('#'+string(ls_i)+'.width') // str_mdf_width=str_mdf_width+'~n'+str_ls // // str_ls= '#'+string(ls_i)+'.x='+ins_dwcld.Describe('#'+string(ls_i)+'.x') // str_mdf_x=str_mdf_x+'~n'+str_ls // // next // str_mdf=str_mdf_width+'~n'+str_mdf_x // // messagebox('str_mdf',str_mdf) // end if //end if // ////1.取子dw,及类型,是grid则处理 ////2.取dataobject, ////3.弹出窗口,设dataobject,sharedata ////4.记录语句descrp(列宽,列系列) ////5.修改原子dw(Modify) //// //// end event event doubleclicked;IF f_power_ind(666) AND NOT sys_power_issuper THEN MessageBox(publ_operator,'你没有使用权限!') RETURN END IF IF dwo.TYPE = 'datawindow' THEN RETURN IF dwo.TYPE = 'line' THEN RETURN s_preview_dwoprp_tran S_SREU S_SREU.yn = 0 S_SREU.X = Integer(dwo.X) S_SREU.Y = Integer(dwo.Y) S_SREU.Width = Integer(dwo.Width) S_SREU.Height = Integer(dwo.Height) S_SREU.dwotype = dwo.TYPE S_SREU.dwoname = dwo.Name IF Lower(Left(dwo.TYPE,4)) = 'text' THEN S_SREU.dwotext = dwo.Text ELSE S_SREU.dwotext = '' END IF OpenWithParm(w_publ_preview_setdwoprp,S_SREU) S_SREU = Message.PowerObjectParm IF S_SREU.yn = 1 THEN dwo.X = S_SREU.X dwo.Y = S_SREU.Y dwo.Width = S_SREU.Width dwo.Height = S_SREU.Height IF Lower(Left(dwo.TYPE,4)) = 'text' THEN THIS.Modify(dwo.Name+'.text="'+S_SREU.dwotext+'"') // dwo.TEXT=S_SREU.dwotext END IF END IF end event type ddlb_printerlist from dropdownlistbox within w_publ_preview integer x = 1408 integer y = 184 integer width = 1376 integer height = 1380 integer taborder = 110 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long textcolor = 33554432 boolean autohscroll = true boolean vscrollbar = true borderstyle borderstyle = stylelowered! end type type em_1 from editmask within w_publ_preview integer x = 256 integer y = 184 integer width = 151 integer height = 92 integer taborder = 120 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long textcolor = 33554432 alignment alignment = right! borderstyle borderstyle = stylelowered! string mask = "######" end type event constructor;//messagebox("",ProfileString (sys_inifilename,dw_1.DATAOBJECT, "printrow", '18')) // //this.text=ProfileString (sys_inifilename,dw_1.DATAOBJECT, "printrow", '18') //cb_6.triggerevent(clicked!) end event event modified;if long(trim(em_1.text))<=2 then em_1.text='2' end if setProfileString (sys_inifilename,dw_1.DATAOBJECT, "printrow", trim(em_1.text)) end event type st_2 from statictext within w_publ_preview integer x = 5 integer y = 204 integer width = 238 integer height = 52 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long textcolor = 33554432 long backcolor = 134217739 boolean enabled = false string text = "每页行数" alignment alignment = right! boolean focusrectangle = false end type type cbx_select_page from checkbox within w_publ_preview integer x = 718 integer y = 192 integer width = 343 integer height = 72 boolean bringtotop = true integer textsize = -9 integer weight = 700 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long textcolor = 16711680 long backcolor = 134217739 string text = "选页打印" end type type cb_mdfmxrp from commandbutton within w_publ_preview boolean visible = false integer x = 421 integer y = 456 integer width = 379 integer height = 92 integer taborder = 40 integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" string text = "明细网格调整" end type event clicked;dwod=dw_1.object.mxreport s_mdfxwidth_tran s_mdfxw_tran s_mdfxw_tran.retrievetype = fact_print_msg.retr_pram_falg s_mdfxw_tran.retrieveid=retrieveid ///////////yyx0821 if em_1.enabled then secondretrieveid=long(em_1.text) else secondretrieveid = sys_scid end if /////////// s_mdfxw_tran.secondretrieveid=secondretrieveid s_mdfxw_tran.retrievestr=fact_print_msg.retr_pramstr s_mdfxw_tran.dataobject=dwod.dataobject openwithparm(w_publ_preview_mdfcrptxwidth,s_mdfxw_tran) s_xwidth=message.powerobjectparm //write ini //wf_write_childdw_pos(s_mdfxw_tran.dataobject,s_xwidth) // wf_mdfmxreport(s_xwidth) end event type st_3 from statictext within w_publ_preview integer x = 2075 integer y = 36 integer width = 288 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 boolean enabled = false string text = "单据格式:" boolean focusrectangle = false end type event constructor;this.backcolor = 14215660 end event type st_4 from statictext within w_publ_preview integer x = 2368 integer y = 36 integer width = 1001 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 boolean enabled = false boolean focusrectangle = false end type event constructor;this.backcolor = 14215660 end event type cb_1 from uo_imflatbutton within w_publ_preview integer x = 558 integer width = 151 integer height = 164 integer taborder = 130 boolean bringtotop = true string text = "打印" boolean default = true string normalpicname = "print.bmp" integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type event clicked;call super::clicked;IF cbx_select_page.Checked THEN dw_default_printer = ddlb_printerlist.Text IF dw_default_printer = '' THEN MessageBox('提示','请选择打印机') RETURN END IF lnv_printer.of_setdefault ( dw_default_printer ) OpenWithParm(w_sys_printpagesetting,dw_1) wf_setdefaultprinter() ELSE dw_default_printer = ddlb_printerlist.Text IF dw_default_printer = '' THEN MessageBox('提示','请选择打印机') RETURN END IF lnv_printer.of_setdefault ( dw_default_printer ) dw_1.Print() wf_setdefaultprinter() END IF IF IsNull(fact_print_msg.ini_group) OR Trim(dw_1.DataObject) = '' THEN RETURN f_SetProfileString (sys_empid,dw_1.DataObject, "margin_top", String(dw_1.Object.datawindow.Print.margin.Top)) f_SetProfileString (sys_empid,dw_1.DataObject, "margin_left", String(dw_1.Object.datawindow.Print.margin.Left)) f_SetProfileString (sys_empid,dw_1.DataObject, "margin_bottom", String(dw_1.Object.datawindow.Print.margin.bottom)) f_SetProfileString (sys_empid,dw_1.DataObject, "margin_right", String(dw_1.Object.datawindow.Print.margin.Right)) f_SetProfileString (sys_empid,dw_1.DataObject, "paper_size", String(dw_1.Object.datawindow.Print.paper.size) ) f_SetProfileString (sys_empid,dw_1.DataObject, "orientation", String(dw_1.Object.datawindow.Print.orientation)) f_SetProfileString (sys_empid,dw_1.DataObject, "dw_default_printer ", dw_default_printer ) rslt_printnum++ IF fact_print_msg.obj_dwname = 'dw_rp_order_ml_lsx' OR fact_print_msg.obj_dwname = 'dw_rp_order_ml_lsx_mg' THEN ELSE cb_exit.TriggerEvent(Clicked!) END IF end event type lb_1 from listbox within w_publ_preview boolean visible = false integer x = 2880 integer y = 56 integer width = 549 integer height = 452 integer taborder = 120 boolean bringtotop = true integer textsize = -12 integer weight = 400 fontcharset fontcharset = ansi! fontpitch fontpitch = variable! fontfamily fontfamily = swiss! string facename = "Arial" long textcolor = 33554432 borderstyle borderstyle = stylelowered! end type type st_5 from statictext within w_publ_preview integer x = 2368 integer y = 100 integer width = 1001 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 boolean enabled = false boolean focusrectangle = false end type event constructor;this.backcolor = 14215660 end event type st_6 from statictext within w_publ_preview integer x = 1079 integer y = 204 integer width = 329 integer height = 48 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 = "打印机选择:" alignment alignment = right! boolean focusrectangle = false end type type cbx_ifprint_xj from checkbox within w_publ_preview integer x = 3209 integer y = 188 integer width = 416 integer height = 72 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;Int li_cbx_ifprint_xj IF Checked THEN li_cbx_ifprint_xj = 1 ELSE li_cbx_ifprint_xj = 0 END IF f_SetProfileString (sys_empid,dw_1.DataObject,"cbx_ifprint_xj",String(li_cbx_ifprint_xj)) end event type cbx_ifprint_hj from checkbox within w_publ_preview integer x = 3634 integer y = 188 integer width = 416 integer height = 72 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;Int li_cbx_ifprint_hj IF Checked THEN li_cbx_ifprint_hj = 1 ELSE li_cbx_ifprint_hj = 0 END IF f_SetProfileString (sys_empid,dw_1.DataObject,"cbx_ifprint_hj",String(li_cbx_ifprint_hj)) end event type cb_2 from commandbutton within w_publ_preview integer x = 2793 integer y = 180 integer width = 402 integer height = 84 integer taborder = 130 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" string text = "读取上次布局" end type event clicked;dw_1.SetRedraw(False) IF Trim(dw_1.DataObject) <> '' THEN Integer margin_top =-1,margin_left=-1,margin_bottom=-1,margin_right=-1,paper_size=-1,orientation=-1 margin_top = Integer(f_ProfileString(sys_empid,dw_1.DataObject, "margin_top", "-1")) margin_left= Integer(f_ProfileString(sys_empid,dw_1.DataObject, "margin_left", "-1" )) margin_bottom= Integer(f_ProfileString(sys_empid,dw_1.DataObject, "margin_bottom", "-1")) margin_right= Integer(f_ProfileString(sys_empid,dw_1.DataObject, "margin_right", "-1" )) paper_size= Integer(f_ProfileString(sys_empid,dw_1.DataObject, "paper_size", "-1" )) orientation= Integer(f_ProfileString(sys_empid,dw_1.DataObject, "orientation", "-1" )) if margin_top > 0 then dw_1.Object.datawindow.Print.margin.Top =margin_top end if if margin_left > 0 then dw_1.Object.datawindow.Print.margin.Left =margin_left end if if margin_bottom > 0 then dw_1.Object.datawindow.Print.margin.bottom =margin_bottom end if if margin_right > 0 then dw_1.Object.datawindow.Print.margin.Right =margin_right end if if paper_size > 0 then dw_1.Object.datawindow.Print.paper.size =paper_size end if if orientation > 0 then dw_1.Object.datawindow.Print.orientation =orientation end if END IF dw_1.SetRedraw(True) end event type ln_bar from line within w_publ_preview long linecolor = 268435456 integer linethickness = 4 integer beginy = 172 integer endx = 2007 integer endy = 172 end type type ln_bar2 from line within w_publ_preview long linecolor = 16777215 integer linethickness = 4 integer beginy = 176 integer endx = 2039 integer endy = 176 end type type r_bar from rectangle within w_publ_preview long linecolor = 16777215 integer linethickness = 4 long fillcolor = 1073741824 integer x = 2711 integer y = 12 integer width = 146 integer height = 68 end type event constructor;this.fillcolor = 14215660 this.linecolor = 14215660 this.x = -1 this.y = -1 this.height = ln_bar.beginy - 5 end event type ln_1 from line within w_publ_preview long linecolor = 268435456 integer linethickness = 4 integer beginy = 284 integer endx = 2016 integer endy = 284 end type type ln_2 from line within w_publ_preview long linecolor = 16777215 integer linethickness = 4 integer beginy = 288 integer endx = 2048 integer endy = 288 end type