| 发表于:2007-09-04 11:50:17 楼主 |
网上找了一个listview 打印函数,却不知如何调用,狂汗! 请用过的朋友告诉我如何调用 我是这样调用的 gprintlistview listview, "报表头 ",listview 附函数: function gprintlistview(byref pobjlistview as listview, pstrheading as string, prn as object) as boolean '-------------------------------------------------------------------------- ' name : gprintlistview ' description : print list view ' parameters : listview control, printed page heading ' returns : n/a ' called from : anywhere ' author : paul jones ' date : 07/06/2001 ' notes : '-------------------------------------------------------------------------- dim objcol as columnheader dim objli as listitem dim objils as imagelist dim objpic as picture dim dblxscale as double dim dblyscale as double dim sngfontsize as single dim lngx as long dim lngy as long dim lngx1 as long dim lngy1 as long dim lngx2 as long dim lngrows as long dim lngleft as long dim lngpageno as long dim lngeop as long dim lngend as long dim lngwidth as long dim intcols as integer dim lngtop as long dim intoffset as integer dim px as integer dim py as integer dim introwheight as integer dim strtext as string dim strtexttrun as string '-------------------------------------------------------------------------- 'establish print & screen metrics '-------------------------------------------------------------------------- on error goto error_handler screen.mousepointer = vbhourglass for each objcol in pobjlistview.columnheaders lngx = lngx + objcol.width next set objils = pobjlistview.smallicons dblxscale = (prn.width * 0.9) / lngx dblyscale = prn.height / pobjlistview.height lngleft = (prn.width - (prn.width * 0.95)) / 2 sngfontsize = prn.font.size if pstrheading <> " " then prn.font.size = 16 prn.currentx = (prn.width / 2) - (prn.textwidth(pstrheading) / 2) 'prn.font.underline = true prn.font.bold = true prn.print pstrheading prn.font.underline = false prn.font.size = sngfontsize lngtop = prn.currenty + prn.currenty end if introwheight = (screen.twipsperpixely * 17) lngeop = prn.height - (introwheight * 3) lngx = lngleft lngy = lngtop lngy1 = lngtop + (screen.twipsperpixely * 17) prn.currenty = lngy prn.font.bold = true prn.drawmode = vbcopypen px = screen.twipsperpixelx py = screen.twipsperpixely '-------------------------------------------------------------------------- 'print column headers with slight 3d effect '-------------------------------------------------------------------------- for each objcol in pobjlistview.columnheaders lngx1 = lngx + (objcol.width * dblxscale) prn.line (lngx, lngy)-(lngx1, lngy1), vbbuttonshadow, bf prn.line (lngx, lngy)-(lngx1 - px, lngy1), rgb(245, 245, 245), bf prn.line (lngx + px, lngy + py)-(lngx1, lngy1), vbbuttonshadow, bf prn.line (lngx + px, lngy + py)-(lngx1 - px, lngy1 - py), vbbuttonface, bf prn.currenty = lngy + ((introwheight - prn.textheight(objcol.text)) / 2) + py select case objcol.alignment case listcolumnalignmentconstants.lvwcolumncenter prn.currentx = lngx + (((objcol.width * dblxscale) - prn.textwidth(objcol.text)) / 2) case listcolumnalignmentconstants.lvwcolumnleft prn.currentx = lngx + (px * 5) case listcolumnalignmentconstants.lvwcolumnright prn.currentx = lngx + ((objcol.width * dblxscale) - prn.textwidth(objcol.text)) - (px * 5) end select prn.print objcol.text lngx = lngx1 next lngend = lngx1 + px prn.font.bold = false '-------------------------------------------------------------------------- 'print list item data '-------------------------------------------------------------------------- for each objli in pobjlistview.listitems if lngy1 > lngeop - introwheight - introwheight then '------------------------------------------------------------------ 'print page number '------------------------------------------------------------------ lngpageno = lngpageno + 1 prn.currentx = (prn.width / 2) - (prn.textwidth( "第 " & lngpageno & " 页 ") / 2) prn.currenty = lngeop - introwheight prn.print "第 " & lngpageno & " 页 " ' "page " & lngpageno prn.newpage prn.currenty = lngtop lngy = lngtop else lngy = lngy + introwheight end if lngx = lngleft lngy1 = lngy + introwheight for each objcol in pobjlistview.columnheaders '------------------------------------------------------------------ 'print the icon if on col 1 '------------------------------------------------------------------ if objcol.index > 1 then strtext = objli.subitems(objcol.index - 1) intoffset = 0 else strtext = objli.text if isempty(objli.smallicon) then intoffset = 0 else set objpic = objils.overlay(objli.smallicon, objli.smallicon) prn.paintpicture objpic, lngx + px, lngy + (py / 2), 16 * px, 16 * py, , , , , vbsrccopy intoffset = px * 16 end if end if '------------------------------------------------------------------ 'make sure text fits '------------------------------------------------------------------ lngwidth = (objcol.width * dblxscale) lngx1 = lngx + lngwidth strtexttrun = strtext do until prn.textwidth(strtexttrun) < lngwidth - (px * 5) - intoffset or strtext = " " strtext = left$(strtext, len(strtext) - 1) strtexttrun = strtext & "... " loop prn.line (lngx, lngy)-(lngx1, lngy1), 1, b prn.currenty = lngy + ((introwheight - prn.textheight(strtexttrun)) / 2) + py select case objcol.alignment case listcolumnalignmentconstants.lvwcolumncenter prn.currentx = lngx + intoffset + (((objcol.width * dblxscale) - prn.textwidth(strtexttrun)) / 2) case listcolumnalignmentconstants.lvwcolumnleft prn.currentx = lngx + intoffset + (px * 5) case listcolumnalignmentconstants.lvwcolumnright prn.currentx = lngx + ((objcol.width * dblxscale) - intoffset - prn.textwidth(strtexttrun)) - (px * 5) end select '------------------------------------------------------------------ 'print each colum '------------------------------------------------------------------ prn.print strtexttrun lngx = lngx1 next next '-------------------------------------------------------------------------- 'print final page number '-------------------------------------------------------------------------- lngpageno = lngpageno + 1 prn.currentx = (prn.width / 2) - (prn.textwidth( "第 " & lngpageno & " 页 ") / 2) prn.currenty = lngeop - introwheight prn.print "第 " & lngpageno & " 页 " prn.enddoc gprintlistview = true screen.mousepointer = vbdefault set objcol = nothing set objils = nothing set objli = nothing set objpic = nothing exit function error_handler: set objcol = nothing set objils = nothing set objli = nothing set objpic = nothing screen.mousepointer = vbdefault '-------------------------------------------------------------------------- 'simple error message reporting '-------------------------------------------------------------------------- msgbox "系统打印出错:- " & vbcrlf & vbcrlf & _ "错误号: " & err.number & vbcrlf & "错误内容: " & err.description, vbexclamation end function 请用过的朋友告诉我如何调用 我是这样调用的 gprintlistview listview, "报表头 ",listview |
|
|
|
|