$PBExportHeader$w_dwprint_dynamic.srw forward global type w_dwprint_dynamic from w_publ_base end type type dw_bill from u_dw_rbtnfilter within w_dwprint_dynamic end type type dw_dwprint from u_dw_rbtnfilter within w_dwprint_dynamic end type type cb_add from uo_imflatbutton within w_dwprint_dynamic end type type cb_edit from uo_imflatbutton within w_dwprint_dynamic end type type cb_delet from uo_imflatbutton within w_dwprint_dynamic end type type cb_retrieve from uo_imflatbutton within w_dwprint_dynamic end type type cb_edit_dw from uo_imflatbutton within w_dwprint_dynamic end type type dw_mx from u_dw_rbtnfilter within w_dwprint_dynamic end type type cb_saveas from uo_imflatbutton within w_dwprint_dynamic end type type cb_import from uo_imflatbutton within w_dwprint_dynamic end type type cb_1 from uo_imflatbutton within w_dwprint_dynamic end type type ln_bar2 from line within w_dwprint_dynamic end type type ln_bar from line within w_dwprint_dynamic end type type r_bar from rectangle within w_dwprint_dynamic end type end forward global type w_dwprint_dynamic from w_publ_base integer width = 3611 integer height = 2372 string title = "自定义单据打印格式" boolean maxbox = true windowstate windowstate = maximized! event retrieve_dw ( ) event ue_f7 ( ) event ue_f8 ( ) event dwnkey pbm_dwnkey event retrieve_mx ( ) event key pbm_keydown dw_bill dw_bill dw_dwprint dw_dwprint cb_add cb_add cb_edit cb_edit cb_delet cb_delet cb_retrieve cb_retrieve cb_edit_dw cb_edit_dw dw_mx dw_mx cb_saveas cb_saveas cb_import cb_import cb_1 cb_1 ln_bar2 ln_bar2 ln_bar ln_bar r_bar r_bar end type global w_dwprint_dynamic w_dwprint_dynamic type variables //long ll_billid uo_reportdef uo_report uo_billdef uo_bill boolean ls_update_flag=true Boolean dw_edit_mode_bill = FALSE long dw_bill_h,dw_dwprint_h,dw_dwprint_w long modifyrow_no DataWindowChild dw_child String ls_winname[] end variables forward prototypes public subroutine wf_get_qty () public function integer wf_upload (ref string arg_msg) end prototypes event retrieve_dw();Long row row = dw_bill.GetRow() dw_bill.AcceptText() IF row > 0 THEN IF dw_bill.Object.printid[row] = 100000 THEN dw_dwprint.SetRedraw (FALSE) dw_dwprint.Retrieve(dw_bill.object.winname[row],0,ls_winname) dw_dwprint.SetRedraw (TRUE) ELSE dw_dwprint.SetRedraw (FALSE) dw_dwprint.Retrieve(dw_bill.object.winname[row],1,ls_winname) dw_dwprint.SetRedraw (TRUE) END IF ELSE dw_dwprint.Reset() END IF THIS.TriggerEvent('retrieve_mx') end event event ue_f8();//Long ll_rpt_row,ll_bill_row //s_rpt_imex s_rpt_imexreport // //ll_rpt_row = dw_report.GetRow() //ll_bill_row = dw_bill.GetRow() // //IF ll_bill_row <= 0 THEN RETURN //IF ll_rpt_row <= 0 THEN // s_rpt_imexreport.rpid = 0 // s_rpt_imexreport.Billid = dw_bill.Object.Billid[ll_bill_row] //ELSE // s_rpt_imexreport.rpid = dw_report.Object.rpid[ll_rpt_row] // s_rpt_imexreport.RpName = dw_report.Object.RpName[ll_rpt_row] // s_rpt_imexreport.Flag = dw_report.Object.Flag[ll_rpt_row] // s_rpt_imexreport.Ifuse = dw_report.Object.Ifuse[ll_rpt_row] // s_rpt_imexreport.Billid = dw_report.Object.Billid[ll_rpt_row] // s_rpt_imexreport.auditprint = dw_report.Object.auditprint[ll_rpt_row] // s_rpt_imexreport.descrp = dw_report.Object.descrp[ll_rpt_row] //END IF // //OpenWithParm(w_rpt_imexport,s_rpt_imexreport) // // // // // // // // end event event retrieve_mx();String ls_pblname String ls_dwname String ls_pblpath String dwsyntax String ls_dw[],ls_msm[] Long ll_type[] Long ll_beg,ll_end Long it_max Long i,ll_row dw_dwprint.AcceptText() dw_mx.Reset() IF dw_dwprint.GetRow() = 0 THEN RETURN ls_pblname = dw_dwprint.Object.pblname[dw_dwprint.GetRow()] ls_dwname = dw_dwprint.Object.dft_new_dwname[dw_dwprint.GetRow()] ls_pblpath = sys_cur_path + ls_pblname dwsyntax = LibraryExport(ls_pblpath,ls_dwname,ExportDataWindow!) it_max ++ ls_dw[it_max] = ls_dwname ll_type[it_max] = 0 ll_end = 1 DO WHILE Pos(dwsyntax,'dataobject=',ll_end) > 0 ll_beg = Pos(dwsyntax,'dataobject=',ll_end) IF ll_beg = 0 THEN GOTO ext END IF ll_beg = ll_beg + 12 ll_end = Pos(dwsyntax,'"',ll_beg) it_max ++ ls_dw[it_max] = Mid(dwsyntax,ll_beg,ll_end - ll_beg ) ll_type[it_max] = 1 LOOP ext: String ls_data,s[] Long k s[4] = LibraryDirectory(ls_pblpath,DirDataWindow!) //name ~t date/time modified ~t comments ~n dw_mx.SetRedraw(FALSE) DO WHILE TRUE k = Pos(s[4],'~t') IF k = 0 THEN EXIT s[1] = Left(s[4],k -1) //DW名称 s[4] = Mid(s[4],k+1) k = Pos(s[4],'~t') s[3] = Left(s[4],k -1) s[4] = Mid(s[4],k+1) k = Pos(s[4],'~n') s[2] = Left(s[4],k -1) s[4] = Mid(s[4],k+1) FOR i = 1 TO it_max IF s[1] = ls_dw[i] THEN k = dw_mx.InsertRow(0) dw_mx.SetItem(k,1,s[1]) dw_mx.SetItem(k,2,s[2]) dw_mx.SetItem(k,3,s[3]) dw_mx.Object.fromtype[k] = ll_type[i] IF Len(Trim(s[2])) > 1 THEN ll_row = 0 DO WHILE Pos(s[2],'&') > 0 ll_row++ ls_msm[ll_row] = Mid(s[2],1,Pos(s[2],'&') - 1) s[2] = Mid(s[2],Pos(s[2],'&') + 1) LOOP IF ll_row = 2 THEN dw_mx.object.product[k] = long(ls_msm[1]) dw_mx.object.fromtype[k] = long(ls_msm[2] ) end if if ll_row > 2 then dw_mx.object.product[k] = long(ls_msm[1]) dw_mx.object.fromtype[k] = long(ls_msm[2] ) dw_mx.object.wname[k] = ls_msm[3] dw_mx.object.dwname[k] = ls_msm[4] END IF END IF END IF NEXT LOOP dw_mx.SetRedraw(TRUE) dw_mx.SetSort('fromtype sec') dw_mx.Sort() IF dw_mx.GetRow() > 0 THEN dw_mx.SelectRow(0,FALSE) dw_mx.ScrollToRow (1) dw_mx.SelectRow(1,TRUE) END IF end event public subroutine wf_get_qty ();Long i Long ll_qty String ls_winname_temp dw_bill.AcceptText() FOR i = 1 TO dw_bill.RowCount() ls_winname_temp = dw_bill.Object.winname[i] ll_qty = 0 SELECT count(*) INTO :ll_qty FROM sys_dft_dwprint_dynamic Where dwtype = :ls_winname_temp; IF sqlca.SQLCode <> 0 THEN MessageBox('错误','查询格式数量失败!',stopsign!,ok!) return END IF IF IsNull(ll_qty) THEN ll_qty = 0 dw_bill.Object.qty[i] = ll_qty NEXT end subroutine public function integer wf_upload (ref string arg_msg);IF dw_bill.GetRow() = 0 THEN RETURN 1 uo_atudexe uo_autoupdateexe String ls_pblname String ls_Filename Long rslt = 1 Boolean if_find DateTime ld_mod uo_autoupdateexe = CREATE uo_atudexe uo_autoupdateexe.f_trycreate_sys_autoudexe(sqlca,arg_msg) String ls_pbl[] DateTime ld_uploadtime[] Long i,it_max i = 1 DECLARE cur_inwaermx CURSOR FOR SELECT distinct pblname FROM sys_dft_dwprint_dynamic Where pblname Like '%.pbl'; OPEN cur_inwaermx; FETCH cur_inwaermx INTO :ls_pbl[i] ; DO WHILE sqlca.SQLCode = 0 i++ FETCH cur_inwaermx INTO :ls_pbl[i] ; LOOP it_max = i - 1 FOR i = 1 TO it_max if_find = TRUE ls_pblname = Trim(ls_pbl[i]) ls_Filename = sys_cur_path + ls_pblname SELECT uploadtime INTO :ld_uploadtime[i] FROM sys_autoudexe Where Filename = :ls_pblname; IF sqlca.SQLCode = -1 THEN rslt = 0 arg_msg = '查询更新列表失败' GOTO ext ELSEIF sqlca.SQLCode = 100 THEN if_find = FALSE END IF ld_mod = uo_autoupdateexe.pf_getfilecreatetime(ls_Filename) IF ld_uploadtime[i] < ld_mod OR NOT if_find THEN rslt = uo_autoupdateexe.f_del_uploadexe(sqlca,ls_pblname,arg_msg) IF rslt = 0 THEN arg_msg = arg_msg + '删除文件失败> '+ ls_pblname + '~n' rslt = 0 GOTO ext END IF rslt = uo_autoupdateexe.f_uploadexe(sqlca,ls_Filename,& '[默认]',0,0,'',arg_msg) IF rslt = 0 THEN arg_msg = '上传操作失败> '+ ls_pblname + '~n' GOTO ext END IF END IF NEXT ext: RETURN rslt end function on w_dwprint_dynamic.create int iCurrent call super::create this.dw_bill=create dw_bill this.dw_dwprint=create dw_dwprint this.cb_add=create cb_add this.cb_edit=create cb_edit this.cb_delet=create cb_delet this.cb_retrieve=create cb_retrieve this.cb_edit_dw=create cb_edit_dw this.dw_mx=create dw_mx this.cb_saveas=create cb_saveas this.cb_import=create cb_import this.cb_1=create cb_1 this.ln_bar2=create ln_bar2 this.ln_bar=create ln_bar this.r_bar=create r_bar iCurrent=UpperBound(this.Control) this.Control[iCurrent+1]=this.dw_bill this.Control[iCurrent+2]=this.dw_dwprint this.Control[iCurrent+3]=this.cb_add this.Control[iCurrent+4]=this.cb_edit this.Control[iCurrent+5]=this.cb_delet this.Control[iCurrent+6]=this.cb_retrieve this.Control[iCurrent+7]=this.cb_edit_dw this.Control[iCurrent+8]=this.dw_mx this.Control[iCurrent+9]=this.cb_saveas this.Control[iCurrent+10]=this.cb_import this.Control[iCurrent+11]=this.cb_1 this.Control[iCurrent+12]=this.ln_bar2 this.Control[iCurrent+13]=this.ln_bar this.Control[iCurrent+14]=this.r_bar end on on w_dwprint_dynamic.destroy call super::destroy destroy(this.dw_bill) destroy(this.dw_dwprint) destroy(this.cb_add) destroy(this.cb_edit) destroy(this.cb_delet) destroy(this.cb_retrieve) destroy(this.cb_edit_dw) destroy(this.dw_mx) destroy(this.cb_saveas) destroy(this.cb_import) destroy(this.cb_1) destroy(this.ln_bar2) destroy(this.ln_bar) destroy(this.r_bar) end on event open;call super::open;Long i,ll_row,ll_row2 dw_dwprint.SetTransObject(sqlca) dw_dwprint.GetChild('dwtype',dw_child) 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_row = dw_bill.InsertRow(0) dw_bill.Object.billname[ll_row] = s_sys_bill[i].billname dw_bill.Object.winname[ll_row] = s_sys_bill[i].winname dw_bill.Object.printid[ll_row] = s_sys_bill[i].printid ls_winname[ll_row] = s_sys_bill[i].winname ll_row2 = dw_child.InsertRow(0) dw_child.SetItem(ll_row2,1,s_sys_bill[i].winname) dw_child.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_row = dw_bill.InsertRow(0) dw_bill.Object.billname[ll_row] = s_sys_bill[i].billname dw_bill.Object.winname[ll_row] = s_sys_bill[i].winname dw_bill.Object.printid[ll_row] = s_sys_bill[i].printid ls_winname[ll_row] = s_sys_bill[i].winname ll_row2 = dw_child.InsertRow(0) dw_child.SetItem(ll_row2,1,s_sys_bill[i].winname) dw_child.SetItem(ll_row2,2,s_sys_bill[i].billname) END IF END CHOOSE NEXT ll_row = dw_bill.InsertRow(0) dw_bill.Object.billname[ll_row] = '[其他]' dw_bill.Object.winname[ll_row] = '' dw_bill.Object.printid[ll_row] = 100000 dw_bill.SetSort('printid') dw_bill.Sort() wf_get_qty() dw_bill.TriggerEvent(RowFocusChanged!) end event event close;call super::close; DESTROY uo_report end event event resize;call super::resize;long w_width,w_height w_width = 3630 w_height = 2290 + 150 ln_bar.endx = this.width ln_bar2.endx = this.width r_bar.width = this.width if newwidth < w_width then this.width = w_width if newheight < w_height then this.height = w_height dw_bill.height = this.height - (w_height - dw_bill_h) dw_dwprint.width=this.width - (w_width - dw_dwprint_w) dw_mx.width=this.width - (w_width - dw_dwprint_w) dw_mx.height = dw_bill.height - dw_dwprint.height - cb_edit_dw.height - 20 end event event ue_before_open;call super::ue_before_open;ls_winname[1] = 'w_saletask' end event type cb_func from w_publ_base`cb_func within w_dwprint_dynamic boolean visible = false end type type cb_exit from w_publ_base`cb_exit within w_dwprint_dynamic integer x = 1102 integer width = 151 integer height = 164 integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type type dw_bill from u_dw_rbtnfilter within w_dwprint_dynamic integer y = 180 integer width = 777 integer height = 2080 integer taborder = 20 boolean bringtotop = true string dataobject = "ds_sys_billname" boolean hscrollbar = true boolean vscrollbar = true boolean rbutton_filter_use = true boolean titleclick_sort_use = true boolean autosave_setlayout_use = false end type event clicked;call super::clicked;IF not( dw_edit_mode or row <=0 ) THEN this.setrow(row) end event event rowfocuschanged;call super::rowfocuschanged;IF dw_edit_mode THEN RETURN IF currentrow <= 0 THEN dw_dwprint.Reset() RETURN END IF THIS.SetRow(currentrow) THIS.SelectRow(0,FALSE) THIS.SelectRow(currentrow,TRUE) PARENT.TriggerEvent('retrieve_dw') end event event constructor;call super::constructor;dw_bill_h = this.height end event event rowfocuschanging;call super::rowfocuschanging;if dw_edit_mode_bill then return 1 end event event dwnkey;if keydown(KeyF4!) then //read layout uf_read_profile_filter() uf_read_profile_sort() //uf_read_profile_layout() elseif keydown(KeyF5!) then //save layout 不含列显示 uf_save_profile_filter() uf_save_profile_sort() //uf_save_profile_layout() elseif keydown(KeyF9!) then //reset layout 不含列显示 uf_reset_layout() end if PARENT.TriggerEvent(Key!) end event type dw_dwprint from u_dw_rbtnfilter within w_dwprint_dynamic integer x = 791 integer y = 180 integer width = 2779 integer height = 1464 integer taborder = 20 boolean bringtotop = true string dataobject = "dw_dwprint_dynamic" boolean hscrollbar = true boolean vscrollbar = true boolean rbutton_filter_use = true boolean titleclick_sort_use = true end type event rowfocuschanged;call super::rowfocuschanged;this.selectrow(0,false) this.selectrow(currentrow,true) parent.triggerevent('retrieve_mx') end event event rowfocuschanging;call super::rowfocuschanging;if dw_edit_mode then return 1 end event event doubleclicked;call super::doubleclicked;cb_edit.triggerevent(clicked!) end event event constructor;call super::constructor;dw_dwprint_h = this.height dw_dwprint_w = this.width end event event clicked;call super::clicked;THIS.SelectRow(0,FALSE) THIS.SelectRow(row,TRUE) end event type cb_add from uo_imflatbutton within w_dwprint_dynamic string tag = "新建/保存[Alt+S]" integer width = 192 integer height = 164 integer taborder = 30 boolean bringtotop = true string text = "新建&S" string normalpicname = "NEW.bmp" integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type event clicked;call super::clicked;if dw_bill.getrow() = 0 then return s_edit_index_tran s_tran s_tran.b_long = 0 s_tran.b_string = dw_bill.object.winname[dw_bill.getrow()] s_tran.c_string = dw_bill.object.billname[dw_bill.getrow()] s_tran.d_long = dw_bill.object.printid[dw_bill.getrow()] openwithparm(w_dwprint_dynamic_mod,s_tran) parent.triggerevent('retrieve_dw') wf_get_qty() end event type cb_edit from uo_imflatbutton within w_dwprint_dynamic string tag = "修改/放弃[Alt+E]" integer x = 192 integer width = 192 integer height = 164 integer taborder = 30 boolean bringtotop = true string text = "修改&E" string normalpicname = "OPEN.bmp" integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type event clicked;call super::clicked;Long ll_row if dw_bill.getrow() = 0 then return dw_dwprint.AcceptText() ll_row = dw_dwprint.GetRow() IF ll_row <= 0 THEN RETURN IF dw_dwprint.Object.dwprintid[ll_row] < 0 THEN RETURN END IF s_edit_index_tran s_tran s_tran.b_long = dw_dwprint.Object.dwprintid[ll_row] s_tran.b_string = dw_dwprint.Object.dwtype[ll_row] s_tran.c_string = dw_bill.object.billname[dw_bill.getrow()] s_tran.d_long = dw_bill.object.printid[dw_bill.getrow()] OpenWithParm(w_dwprint_dynamic_mod,s_tran) PARENT.TriggerEvent('retrieve_dw') dw_dwprint.SelectRow(0,FALSE) dw_dwprint.ScrollToRow (ll_row) dw_dwprint.SelectRow(ll_row,TRUE) //wf_get_qty() end event type cb_delet from uo_imflatbutton within w_dwprint_dynamic integer x = 384 integer width = 151 integer height = 164 integer taborder = 30 boolean bringtotop = true string text = "删除" string normalpicname = "delete.bmp" integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type event clicked;call super::clicked; IF MessageBox ("询问","是否确定要删除当前记录?(选择确定后记录将不可恢复)",Question!,YesNo! ) = 2 THEN RETURN END IF dw_dwprint.AcceptText() IF dw_dwprint.Object.dwprintid[dw_dwprint.GetRow()] < 0 THEN MessageBox('提示','默认格式不能删除!',information!,ok!) RETURN END IF dw_dwprint.SetRedraw (FALSE) dw_dwprint.DeleteRow (0) dw_dwprint.TriggerEvent (RowFocusChanged!) IF dw_dwprint.Update() = -1 THEN ROLLBACK; MessageBox ("错误","删除记录操作失败!",stopsign!,OK!) ELSE COMMIT; END IF dw_dwprint.SetRedraw (TRUE) wf_get_qty() end event type cb_retrieve from uo_imflatbutton within w_dwprint_dynamic event ue_f7 ( ) integer x = 686 integer width = 151 integer height = 164 integer taborder = 30 boolean bringtotop = true string text = "重查" string normalpicname = "refresh.bmp" integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type event clicked;call super::clicked;parent.triggerevent('retrieve_dw') wf_get_qty() end event type cb_edit_dw from uo_imflatbutton within w_dwprint_dynamic integer x = 795 integer y = 1660 integer width = 288 integer height = 92 integer taborder = 30 boolean bringtotop = true string text = "编辑" string normalpicname = "open.bmp" end type event clicked;call super::clicked;string ls_dw,ls_pblname dw_dwprint.accepttext() dw_mx.accepttext() if dw_dwprint.getrow() = 0 then return if dw_mx.getrow() = 0 then return ls_dw = dw_mx.object.ctag[dw_mx.getrow()] ls_pblname= trim(dw_dwprint.object.pblname[dw_dwprint.getrow()]) 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_dw s_rpt_parm.otype = sys_cur_path + ls_pblname s_rpt_parm.rcname = ls_dw 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 type dw_mx from u_dw_rbtnfilter within w_dwprint_dynamic integer x = 791 integer y = 1760 integer width = 2779 integer height = 492 integer taborder = 20 boolean bringtotop = true string dataobject = "dw_dwprint_dynamicmx" boolean hscrollbar = true boolean rbutton_filter_use = true boolean rbutton_setposition_use = true boolean titleclick_sort_use = true end type event rowfocuschanged;call super::rowfocuschanged;this.selectrow(0,false) this.selectrow(currentrow,true) end event event doubleclicked;call super::doubleclicked;cb_edit_dw.triggerevent(clicked!) end event type cb_saveas from uo_imflatbutton within w_dwprint_dynamic integer x = 535 integer width = 151 integer height = 164 integer taborder = 40 boolean bringtotop = true string text = "另存" string normalpicname = "copy.BMP" integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type event clicked;call super::clicked;s_edit_index_tran s_tran string ls_dw,ls_pblname,ls_billname long ll_dwprintid Long ll_row ll_row = dw_dwprint.GetRow() dw_dwprint.accepttext() dw_mx.accepttext() if dw_dwprint.getrow() = 0 then return if dw_mx.getrow() = 0 then return ls_dw = dw_dwprint.object.dft_new_dwname[dw_dwprint.getrow()] ls_pblname= dw_dwprint.object.pblname[dw_dwprint.getrow()] ll_dwprintid = dw_dwprint.object.dwprintid[dw_dwprint.getrow()] ls_billname = dw_bill.object.billname[dw_bill.getrow()] s_tran.b_string = ls_pblname s_tran.c_string = ls_dw s_tran.b_long = ll_dwprintid s_tran.d_string = ls_billname OpenWithParm(w_dwprint_dynamic_saveas,s_tran) PARENT.TriggerEvent('retrieve_dw') dw_dwprint.SelectRow(0,FALSE) dw_dwprint.ScrollToRow (ll_row) dw_dwprint.SelectRow(ll_row,TRUE) end event type cb_import from uo_imflatbutton within w_dwprint_dynamic string tag = "新建/保存[Alt+S]" integer x = 837 integer width = 265 integer height = 164 integer taborder = 40 boolean bringtotop = true string text = "导入/导出" string normalpicname = "imexport.BMP" integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type event clicked;call super::clicked;open(w_dwprint_dynamic_imexport) parent.triggerevent('retrieve_dw') wf_get_qty() end event type cb_1 from uo_imflatbutton within w_dwprint_dynamic event ue_f7 ( ) boolean visible = false integer x = 837 integer height = 164 integer taborder = 40 boolean bringtotop = true string text = "上传格式库" string normalpicname = "update.BMP" integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type event clicked;call super::clicked;String ls_msg IF wf_upload(ls_msg) = 0 THEN MessageBox('提示',ls_msg) ELSE MessageBox('提示','上传成功!') END IF end event type ln_bar2 from line within w_dwprint_dynamic long linecolor = 16777215 integer linethickness = 4 integer beginy = 172 integer endx = 3406 integer endy = 172 end type type ln_bar from line within w_dwprint_dynamic long linecolor = 268435456 integer linethickness = 4 integer beginy = 168 integer endx = 3406 integer endy = 168 end type type r_bar from rectangle within w_dwprint_dynamic long linecolor = 16777215 long fillcolor = 1073741824 integer x = 3067 integer width = 73 integer height = 172 end type event constructor;this.fillcolor = 14215660 this.linecolor = 14215660 this.x = -1 this.y = -1 this.height = ln_bar2.beginy - 5 end event