国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

解決VisualBasic的Grid控件的打印問題

2019-11-18 17:32:07
字體:
供稿:網(wǎng)友
----Grid控件是VisualBasic最常見控件之一,從VB3.0到VB5.0都有該控件。也是VB愛好者最喜愛的工具之一。用它可以以表格的形式顯示、瀏覽數(shù)據(jù),特別是數(shù)據(jù)庫應(yīng)用,直接綁定即可顯示瀏覽數(shù)據(jù)庫信息。然而,美中不足的是Grid沒有編輯和打印功能,列與列的位置不能相互交換。筆者曾嘗試著給Grid增添了這些功能,使之錦上添花,功能更強(qiáng)大。下面給出改進(jìn)方法及源程序,讀者只需按步驟寫下源程序即可使你的Grid具有打印功能。該程序筆者在HP5/100Window95環(huán)境下用VB5.0調(diào)試通過。

----給Grid控件增加打印方法有三種:1是直接打印控件的方法,2是過PRinter來實現(xiàn)打印功能,3是通過調(diào)用MS-Word及MS-Excel來實現(xiàn)打印。

----首先,打開一個應(yīng)用,在FORM1中增加DATA控件DATA1,把DATA1的CONNECT屬性設(shè)為dBASEIII,再把DATABASENAME屬性設(shè)為D:/PJXM.DBF。然后再在FORM1中增加MSFLEXGRID空間GRID1,并把GRID1的DATASOURCE屬性設(shè)為DATA1。這樣數(shù)據(jù)庫PJXM.DBF的信息就會在GRID1中顯示出來。

----方法一:直接打印窗體法,在FORM1中增加命令按鈕(command),CAPTION屬性設(shè)為直接打印,再寫入下列編碼:

Subcommand_click
Form1.printform
Endsub

----這樣即可通過打印窗體FORM1的方法把GRID1的數(shù)據(jù)打印出來,遺憾的是只能打印GRID1中顯示的數(shù)據(jù)部分,顯示不出來的則無法打印,而且這種打印方法很象屏幕硬拷貝把其他控件也打印出來。也不能靈活的控制kan=kan a(i)'計算表格總寬度
Next

page1=50'定義每頁行數(shù)
strx=200
strx1=200'定義X方向起始位置
stry=1400
stry1=1400'定義Y方向起始位置
linw=240'定義行寬
fnt=8'定義字體大小
printer.fontname="宋體"'定義字體

dd=prnt1(4000,700,18,ss$)'打印標(biāo)題
printer.Line(strx-50,stry-30)
-(strx kan-10,stry-30)
Forj=0Togridrow-1'gridrow為所要打印的行數(shù)
grid1.row=j
strx=strx1
printer.Line(strx-50,stry-30)
-(strx kan-10,stry-30)
p=p 1
Fori=0To8
grid1.col=i
dd=prnt1(strx,stry,fnt,grid1.text)
strx=strx a(i)
Next

Ifp>page1Then'nextpage
p=0
strx=strx1
'linelastline
printer.Line(strx-50,stry linw)
-(strx kan-10,stry linw)
stry=stry1
'linecol
Forn=0To8
printer.Line(strx-30,stry-30)
-(strx-30,stry (page1 2)*linw)
strx=strx a(n)
Next
printer.Line(strx-30,stry-30)
-(strx-30,stry (page1 2)*linw)
pp=pp 1
foot$="第" cstr(pp) "頁"
dd=prnt1(strx-30-1000,stry (page1 2)
*linw 100,10,foot$)'打印頁角碼

printer.NewPage'nextpage
dd=prnt1(4000,700,18,ss$)'打印標(biāo)題
strx=strx1
stry=stry1
printer.Line(strx-50,stry-30)-
(strx kan-10,stry-30)'printfirstrow
Else
stry=stry linw
EndIf
Next
st=stry
Ifp<page1Then'在最后頁剩余劃空行
Foro=pTopage1 1
strx=strx1
printer.Line(strx-50,stry-30)
-(strx kan-10,stry-30)
stry=stry linw
Next
EndIf
stry=stry1
strx=strx1
stry=stry1'linecol
Forn=0To8
printer.Line(strx-30,stry-30)-
(strx-30,stry (page1 2)*linw)
strx=strx a(n)
Next
printer.Line(strx-30,stry-30)-
(strx-30,stry (page1 2)*linw)
pp=pp 1
foot$="第" cstr(pp) "頁"
dd=prnt1(strx-30-1000,stry (page1 2)
*linw 100,10,foot$)'打印頁角碼

printer.EndDoc'打印結(jié)束
Endsub

----這種方法通過靈活的編程可以方便地調(diào)整字體、字型、線形、頁面、紙張大小等。可打印出比較滿意的效果。如果你的計算機(jī)上裝有MICROSOFTWORD和MICROEXCEL,最精彩的用法還是把GRID的表格通過VB發(fā)送到MICROSOFTWORD及MICROEXCEL。生成MICROSOFTWORD和MICROEXCEL表格。這樣就可以充分利用MICROSOFTWORD和MICROEXCEL的打印、編輯功能打印出更理想的效果。下面逐一介紹。

----方法三:通過生成MICROSOFTWORD表格打印

----1、在declaration中寫入:

DimmswordAsObject

----2、加入打印命令按鈕(command2),CAPTION設(shè)為"生成WORD表
格",寫入下面代碼,

PrivateSubcommand2_Click()

screen.MousePointer=11
Setmsword=CreateObject("word.basic")

DimAppID,ReturnValue
appID=Shell("d:/office97/office/WINWORD.EXE",1)
'RunMicrosoftWord.

msword.AppActivate"MicrosoftWord"
'msword.AppActivate"MicrosoftWord",1
full
Screen.MousePointer=0
EndSub

----2、寫入以下過程full()

Subfull()
DimiAsInteger,jAsInteger,
colAsInteger,rowAsInteger
DimcellcontentAsString
Me.Hide
cols=4'表格的列數(shù)
row=gridrow'打印表的行數(shù)
msword.filenewdefault
msword.MsgBox"正在建立MS_WORD報表,
請稍候.......","",-1
msword.leftpara
msword.screenupdating0
msword.tableinserttable,col,row,,,16,167
msword.startofdocument
forj=0togridrow'表格的行數(shù)
grid1.row=j
Fori=1Tocols
Gri1d.col=i
IfIsNull(grid1.text)Then
cellcontent$=""
Else
cellcontent$=grid1.text
EndIf
msword.Insertcellcontent$
msword.nextcell
Nexti
Nextj
msword.tabledeleterow
msword.startofdocument
msword.tableselectrow
msword.tableheadings1
msword.centerpara
'msword.startdocument
msword.screenrefresh
msword.screenupdating1
msword.MsgBox"結(jié)束","",-1
Me.Show

EndSub

----方法四:通過發(fā)送到MICROSOFTEXCEL實現(xiàn)表格打印

----1、加入打印命令按鈕(command3),CAPTION設(shè)為"生成EXCEL表
格",寫入下面代碼

PrivateSubcommand3_Click()
DimiAsInteger
DimjAsInteger
DimxlAppAsExcel.
application
DimxlBookAsExcel.Workbook
DimxlSheetAsExcel.Worksheet

SetxlApp=CreateObject("Excel.Application")
xlApp.Visible=True
'SetxlBook=xlApp.Workbooks.Add
'OnErrorResumeNext
SetxlBook=xlApp.Workbooks.Add'Open("d:/text2.xls")
SetxlSheet=xlBook.Worksheets(1)
xlSheet.Cells(6,1)="i"
Fori=0Togridrow
grid1.Row=i
Forj=0To6
Grid1.Col=j

IfIsNull(Grid1.Text)=FalseThen
xlSheet.Cells(i 5,j 1)=Grid1.Text
EndIf
Nextj
Nexti
ExitSub->


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 德江县| 鄂托克前旗| 崇州市| 饶河县| 福鼎市| 绥德县| 遵义市| 南昌县| 和田市| 红桥区| 内丘县| 龙井市| 疏附县| 平泉县| 根河市| 岚皋县| 大田县| 射阳县| 融水| 雅江县| 揭西县| 休宁县| 黄龙县| 姜堰市| 珠海市| 河北区| 西乌珠穆沁旗| 韶山市| 霸州市| 贵溪市| 建昌县| 长垣县| 巴马| 延津县| 博客| 沧源| 新郑市| 酉阳| 永平县| 佛学| 高青县|