---- Kontrol grid adalah salah satu kontrol paling umum di Visual Basic, yang tersedia dari VB3.0 hingga VB5.0. Ini juga merupakan salah satu alat favorit bagi para penggemar VB. Dapat digunakan untuk menampilkan dan menelusuri data dalam bentuk tabel, terutama untuk aplikasi database. Direct binding dapat menampilkan dan menelusuri informasi database. Namun, yang menarik adalah Grid tidak memiliki fungsi pengeditan dan pencetakan, dan posisi kolom tidak dapat dipertukarkan satu sama lain. Penulis telah mencoba menambahkan fungsi-fungsi ini ke Grid agar lebih baik dan bertenaga. Metode perbaikan dan program sumber diberikan di bawah ini. Pembaca hanya perlu menulis program sumber sesuai langkah-langkah agar Grid Anda memiliki fungsi pencetakan. Penulis men-debug program ini menggunakan VB5.0 di lingkungan HP5/100Window95 dan meneruskannya.
---- Ada tiga cara untuk menambahkan pencetakan ke kontrol Grid: 1. Mencetak kontrol secara langsung, 2. merealisasikan fungsi pencetakan melalui PRinter, dan 3. merealisasikan pencetakan dengan memanggil MS-Word dan MS-Excel.
----Pertama, buka aplikasi, tambahkan kontrol DATA DATA1 di FORM1, atur atribut CONNECT DATA1 ke dBASEIII, lalu atur atribut DATABASENAME ke D:/PJXM.DBF. Kemudian tambahkan ruang MSFLEXGRID GRID1 di FORM1, dan atur atribut DATASOURCE GRID1 ke DATA1. Dengan cara ini, informasi dari database PJXM.DBF akan ditampilkan di GRID1.
----Metode 1: Cetak langsung metode formulir, tambahkan tombol perintah (command) di FORM1, atur atribut CAPTION ke pencetakan langsung, lalu tulis kode berikut:
Subperintah_klik
Formulir1.cetakformulir
Sub akhir
----Dengan cara ini, data GRID1 dapat dicetak dengan mencetak formulir FORM1. Sayangnya, hanya bagian data yang ditampilkan di GRID1 yang dapat dicetak sangat mirip dengan layar. Salinan cetak juga mencetak kontrol lainnya. Itu juga tidak dapat mengontrol font secara fleksibel, dll.
---- Metode 2: Cetak melalui PRINTER. metode ini
----1. Tambahkan tombol perintah cetak (command1) dan fungsi (prnt1) untuk mewujudkan fungsi pencetakan. Tulis kode berikut.
Fungsiprnt1(xAsInteger,yAsInteger,
fontAsSingle,txtAsString)
printer.CurrentX=x
printer.Saat IniY=y
printer.FontBold=Salah
printer.FontSize=font
printer.Printtxt
Fungsi Akhir
Subperintah1_klik
DimfntAsSingle
Dimppasinteger
Pp=0'Tetapkan nomor halaman awal 0
Dimstry,strx,strx1,stry1,linw,page1,pAsInteger
Statica(8)AsInteger' mendefinisikan jumlah kolom yang akan dicetak
ss$="Laporan Setoran Penyelesaian Internal"'define header
kan=0
Fori=0Ke8
a(i)=1500' mendefinisikan lebar setiap kolom
kan=kan a(i)'menghitung total lebar tabel
Berikutnya
page1=50' menentukan jumlah baris per halaman
strx=200
strx1=200' mendefinisikan posisi awal dalam arah X
coba=1400
stry1=1400' mendefinisikan posisi awal dalam arah Y
linw=240' mendefinisikan lebar garis
fnt=8'menentukan ukuran font
printer.fontname="宋体"'mendefinisikan font
dd=prnt1(4000,700,18,ss$)'Judul cetak
printer.Line(strx-50,stry-30)
-(strx kan-10,stry-30)
Forj=0Togridrow-1'gridrow adalah jumlah baris yang akan dicetak
grid1.baris=j
strx=strx1
printer.Line(strx-50,stry-30)
-(strx kan-10,stry-30)
p=p 1
Fori=0Ke8
grid1.col=i
dd=prnt1(strx,stry,fnt,grid1.teks)
strx=strx a(i)
Berikutnya
Ifp>halaman1Laluhalaman berikutnya
p=0
strx=strx1
'baris terakhir
printer.Line(strx-50,stry linw)
-(strx kan-10,coba linw)
stry=stri1
'linekol
Untuk=0Ke8
printer.Line(strx-30,stry-30)
-(strx-30,stry (halaman 1 2)*linw)
strx=strx a(n)
Berikutnya
printer.Line(strx-30,stry-30)
-(strx-30,stry (halaman 1 2)*linw)
hal=hal 1
kaki$="th" cstr(pp) "halaman"
dd=prnt1(strx-30-1000,coba (halaman1 2)
*linw 100,10,foot$)'Cetak nomor sudut halaman
printer.NewPage'halaman berikutnya
dd=prnt1(4000,700,18,ss$)'Judul cetak
strx=strx1
stry=stri1
printer.Line(strx-50,stry-30)-
(strx kan-10,stry-30)'printfirstrow
Kalau tidak
stry=coba linw
AkhirJika
Berikutnya
st=coba
Ifp<page1Lalu tandai sisa baris kosong di halaman terakhir
Foro=pTohalaman1 1
strx=strx1
printer.Line(strx-50,stry-30)
-(strx kan-10,stry-30)
stry=coba linw
Berikutnya
AkhirJika
stry=stri1
strx=strx1
stry=stry1'linecol
Untuk=0Ke8
printer.Line(strx-30,stry-30)-
(strx-30,stry (halaman1 2)*linw)
strx=strx a(n)
Berikutnya
printer.Line(strx-30,stry-30)-
(strx-30,stry (halaman1 2)*linw)
hal=hal 1
kaki$="th" cstr(pp) "halaman"
dd=prnt1(strx-30-1000,coba (halaman1 2)
*linw 100,10,foot$)'Cetak nomor sudut halaman
printer.EndDoc'Akhir pencetakan
Sub akhir
---- Metode ini dapat dengan mudah menyesuaikan font, gaya font, bentuk garis, halaman, ukuran kertas, dll. melalui pemrograman yang fleksibel. Dapat mencetak hasil yang memuaskan. Jika MICROSOFTWORD dan MICROEXCEL terinstal di komputer Anda, cara paling seru untuk menggunakannya adalah dengan mengirimkan tabel GRID ke MICROSOFTWORD dan MICROEXCEL melalui VB. Hasilkan tabel MICROSOFTWORD dan MICROEXCEL. Dengan cara ini, Anda dapat memanfaatkan sepenuhnya fungsi pencetakan dan pengeditan MICROSOFTWORD dan MICROEXCEL untuk mencetak hasil yang lebih ideal. Diperkenalkan satu per satu di bawah ini.
---- Metode 3: Cetak dengan membuat formulir MICROSOFTWORD
----1. Tulis dalam deklarasi:
DimmswordAsObject
----2. Tambahkan tombol perintah cetak (command2), dan atur CAPTION ke "Generate WORD table"
"Format", tulis kode berikut,
Perintah Pribadi2_Klik()
layar.MousePointer=11
Setmsword=CreateObject("kata.dasar")
DimAppID, Nilai Pengembalian
appID=Shell("d:/office97/office/WINWORD.EXE",1)
'JalankanMicrosoftWord.
msword.AppAktifkan "MicrosoftWord"
'msword.AppAktifkan"MicrosoftWord",1
penuh
Layar.MousePointer=0
Sub Akhir
----2. Tulis proses berikut ini secara lengkap()
Subpenuh()
DimiAsInteger,jAsInteger,
colAsInteger,rowAsInteger
DimcellcontentAsString
Aku. Sembunyikan
cols=4'Jumlah kolom dalam tabel
row=gridrow' mencetak jumlah baris dalam tabel
msword.filenewdefault
msword.MsgBox"Membuat laporan MS_WORD,
Mohon tunggu...","",-1
msword.leftpara
msword.screenupdate0
msword.tableinserttable,col,row,,,16,167
msword.startofdocument
forj=0togridrow'Jumlah baris dalam tabel
grid1.baris=j
Fori=1Tocols
Gri1d.col=i
IfIsNull(grid1.text)Lalu
konten sel$=""
Kalau tidak
konten sel$=grid1.teks
AkhirJika
msword.Masukkan konten sel$
msword.nextcell
Selanjutnya
Selanjutnyaj
msword.tabledeleterow
msword.startofdocument
msword.tableselectrow
msword.tableheadings1
msword.centerpara
'msword.startdocument
msword.penyegaran layar
msword.screenupdate1
msword.MsgBox"Akhir","",-1
Saya.Tunjukkan
Sub Akhir
----Metode 4: Cetak formulir dengan mengirimkannya ke MICROSOFTEXCEL
----1. Tambahkan tombol perintah cetak (command3), dan atur CAPTION ke "Hasilkan tabel EXCEL"
"Format", tulis kode berikut
Perintah Pribadi3_Klik()
DimiAsInteger
DimjAsInteger
DimxlAppAsExcel.aplikasi
DimxlBookAsExcel.Buku Kerja
DimxlSheetAsExcel.Lembar Kerja
SetxlApp=CreateObject("Excel.Aplikasi")
xlApp.Visible=Benar
'SetxlBook=xlApp.Workbooks.Tambahkan
'OnErrorResumeBerikutnya
SetxlBook=xlApp.Workbooks.Add'Open("d:/text2.xls")
SetxlSheet=xlBuku.Lembar Kerja(1)
xlSheet.Sel(6,1)="i"
Fori=0Togridrow
grid1.Baris=i
Forj=0To6
Grid1.Kol=j
IfIsNull(Grid1.Text)=FalseThen
xlSheet.Sel(i 5,j 1)=Grid1.Teks
AkhirJika
Selanjutnyaj
Selanjutnya
KeluarSub->