$PBExportHeader$uo_msg_lv.sru forward global type uo_msg_lv from listview end type end forward global type uo_msg_lv from listview integer width = 485 integer height = 280 integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long textcolor = 33554432 borderstyle borderstyle = stylelowered! string largepicturename[] = {"p15drive_fdd.ico","p45workgroup.ico"} long largepicturemaskcolor = 536870912 long smallpicturemaskcolor = 536870912 long statepicturemaskcolor = 536870912 event ue_runfj ( ) event ue_saveas ( ) end type global uo_msg_lv uo_msg_lv type variables long ins_cur_fjid//收到信息当前行附件id string ins_cur_fjname//收到信息当前行附件名 long uo_ins_msgid string fjfilepathname='fjtemp'//附件下载临时文件夹默认为fjtemp uo_transmsg uo_msg_downfj end variables event ue_runfj();this.triggerevent(doubleclicked!) end event event ue_saveas();//附件另存为 Integer i Long ls_i,ls_j,ls_newrow,ls_filesize Blob ls_filedata String Pathname,ls_filename String errmsg,arg_msg String ls_filetypename Long pos1,lrow,rslt String ls_para,ls_downarg[] Pathname = ins_cur_fjname //超链接时保存成html文件**************************************** Long ls_fjtype//0时为附件,1时为超链接 SELECT Sys_admsg_fj.Filetype INTO :ls_fjtype FROM Sys_admsg_fj WHERE Sys_admsg_fj.fjid = :ins_cur_fjid; IF sqlca.SQLCode <> 0 THEN MessageBox('系统提示','因网络或其它原因查询附件信息失败~r~n'+sqlca.SQLErrText) RETURN END IF IF ls_fjtype = 1 THEN Pathname = '超链接' i = GetFileSaveName("另存为",Pathname,ls_filename,"*","*.html,*.html") IF i = 1 AND Trim(Pathname) <> '' THEN IF f_blobtofile(Pathname,Blob(''),errmsg) = 0 THEN MessageBox('系统提示',errmsg) RETURN ELSE MessageBox('系统提示','链接保存成功!'+'~r~n'+'保存路径:'+Pathname) END IF END IF RETURN END IF //************************************************************* pos1 = Pos(ins_cur_fjname,'.') IF pos1 > 0 THEN ls_filetypename = Mid(ins_cur_fjname,pos1 + 1) i = GetFileSaveName("另存为",Pathname,ls_filename,"*","*."+ls_filetypename+",*."+ls_filetypename) ELSE ls_filetypename = '' i = GetFileSaveName("另存为",Pathname,ls_filename,"*","*.*,*.*") END IF IF i = 1 AND Trim(Pathname) <> '' THEN IF uo_msg_downfj.f_down_fj(ins_cur_fjid,ins_cur_fjname,ls_filedata,arg_msg) = 0 THEN MessageBox('系统提示',arg_msg) RETURN END IF IF f_blobtofile(Pathname,ls_filedata,errmsg) = 0 THEN MessageBox('系统提示',errmsg) RETURN ELSE MessageBox('系统提示','附件保存成功!'+'~r~n'+'保存路径:'+Pathname) END IF END IF end event on uo_msg_lv.create end on on uo_msg_lv.destroy end on event doubleclicked;//附件下载并打开 Integer i Long ls_i,ls_j,ls_newrow,ls_filesize Blob ls_filedata String Pathname,ls_filename String errmsg,arg_msg String ls_filetypename Long pos1,lrow,rslt String ls_para,ls_downarg[] listviewitem l_lvi //取附件信息 IF Index > 0 THEN THIS.GetItem( Index, l_lvi) ins_cur_fjid = l_lvi.Data ins_cur_fjname = l_lvi.Label END IF //超链接用ie打开************************************** Long ls_fjtype//0时为附件,1时为超链接 SELECT Sys_admsg_fj.Filetype INTO :ls_fjtype FROM Sys_admsg_fj WHERE Sys_admsg_fj.fjid = :ins_cur_fjid; IF sqlca.SQLCode <> 0 THEN MessageBox('系统提示','因网络或其它原因查询附件信息失败~r~n'+sqlca.SQLErrText) RETURN END IF IF ls_fjtype = 1 THEN Run('explorer.exe '+ins_cur_fjname,Normal!) RETURN END IF //******************************************************* //下载附件并打开 Pathname = sys_cur_path+fjfilepathname+'\'+ins_cur_fjname IF Trim(Pathname) <> '' THEN IF uo_msg_downfj.f_down_fj( ins_cur_fjid, ins_cur_fjname, ls_filedata, arg_msg) = 0 THEN MessageBox('系统提示',arg_msg) RETURN END IF IF f_blobtofile(Pathname,ls_filedata,errmsg) = 0 THEN MessageBox('系统提示',errmsg) RETURN ELSE //打开附件 String lsNull ShellExecute32( Handle(THIS), lsNull, Pathname, lsNull, lsNull, 1 ) END IF END IF end event event rightclicked;Long ls_fjid String ls_fjname listviewitem l_lvi IF Index > 0 THEN THIS.GetItem( Index, l_lvi) ls_fjid = l_lvi.Data ls_fjname = l_lvi.Label ins_cur_fjid = l_lvi.Data ins_cur_fjname = l_lvi.Label m_dfc_msg dmPopupMenu String menustr,ls_level menustr = "Text=另存为~tEvent=ue_saveas" menustr = menustr+"|"+"Text=打开附件~tEvent=ue_runfj" IF Len(Trim(menustr)) <> 0 THEN dmPopupMenu = CREATE m_dfc_msg dmPopupMenu.mf_buildmenu( THIS, menustr) dmPopupMenu.mf_popmenu() DESTROY dmPopupMenu END IF END IF end event