----Элемент управления «Сетка» — один из наиболее распространенных элементов управления в Visual Basic, доступный в версиях VB3.0–VB5.0. Это также один из любимых инструментов энтузиастов VB. Его можно использовать для отображения и просмотра данных в виде таблиц, особенно для приложений баз данных. Прямая привязка может отображать и просматривать информацию базы данных. Однако ложка дегтя в том, что в Grid нет функций редактирования и печати, а позиции столбцов нельзя поменять местами. Автор постарался добавить эти функции в Grid, чтобы сделать его еще лучше и мощнее. Метод улучшения и исходная программа приведены ниже. Читателям нужно только написать исходную программу в соответствии с инструкциями, чтобы ваша Grid имела функцию печати. Автор отладил эту программу с помощью VB5.0 в среде HP5/100Window95 и передал ее.
----Существует три способа добавления печати в элемент управления Grid: 1. Распечатать элемент управления напрямую, 2. реализовать функцию печати через PRinter и 3. реализовать печать с помощью вызова MS-Word и MS-Excel.
----Сначала откройте приложение, добавьте элемент управления DATA1 DATA1 в FORM1, установите для атрибута CONNECT DATA1 значение dBASEIII, а затем установите для атрибута DATABASENAME значение D:/PJXM.DBF. Затем добавьте пространство GRID1 MSFLEXGRID в FORM1 и установите для атрибута DATASOURCE поля GRID1 значение DATA1. Таким образом, информация базы данных PJXM.DBF будет отображаться в GRID1.
----Метод 1. Непосредственно распечатайте метод формы, добавьте командную кнопку (команду) в FORM1, установите для атрибута CAPTION прямую печать, а затем напишите следующий код:
Подкоманда_клик
Форма1.printform
Конец-саб
---- Таким образом, данные GRID1 можно распечатать с помощью формы FORM1. К сожалению, можно распечатать только часть данных, отображаемую в GRID1. Если она не отображается, ее невозможно распечатать. очень похож на экран. На бумажном носителе печатаются и другие элементы управления. Он также не может гибко управлять шрифтами и т. д.
----Метод 2: Распечатайте через ПРИНТЕР. этот метод
----1. Добавьте кнопку команды печати (command1) и функцию (prnt1) для реализации функции печати. Напишите следующий код. Читатель может записать его в стандартную функцию или процесс с небольшими изменениями.
Functionprnt1(xAsInteger,yAsInteger,
шрифтAsSingle, txtAsString)
принтер.CurrentX=x
принтер.CurrentY=y
принтер.FontBold=False
принтер.FontSize=шрифт
принтер.Printtxt
Конечнаяфункция
Подкоманда1_клик
DimfntAsСингл
Димппасинтегер
Pp=0'Установить номер начальной страницы 0
Dimstry,strx,strx1,stry1,linw,page1,pAsInteger
Statica(8)AsInteger' определяет количество столбцов для печати.
ss$="Отчет о внутреннем расчетном депозите"'define header
кан=0
Фори=0To8
a(i)=1500' определяет ширину каждого столбца
kan=kan a(i)' вычисляет общую ширину стола
Следующий
page1=50' определяет количество строк на странице.
стрх=200
strx1=200' определяет начальную позицию в направлении X.
стрий=1400
stry1=1400' определяет начальную позицию в направлении Y.
linw=240' определяет ширину линии
fnt=8'определить размер шрифта
printer.fontname="宋体"'определить шрифт
dd=prnt1(4000,700,18,ss$)'Распечатать заголовок
принтер.Линия(strx-50,stry-30)
-(strx кан-10,stry-30)
Forj=0Togridrow-1'gridrow — количество строк, которые нужно напечатать.
Grid1.row=j
стрх=стрх1
принтер.Линия(strx-50,stry-30)
-(strx кан-10,stry-30)
р=р 1
Фори=0To8
Grid1.col=я
dd=prnt1(strx,stry,fnt,grid1.text)
strx=strx а(я)
Следующий
Ifp>page1Then'следующая страница
р=0
стрх=стрх1
'линияпоследняя строка
print.Line(strx-50,stry linw)
-(strx kan-10,stry linw)
стры=стрип1
'линекол
Форма=0To8
принтер.Линия(strx-30,stry-30)
-(strx-30,stry (страница1 2)*linw)
strx=strx а(п)
Следующий
принтер.Линия(strx-30,stry-30)
-(strx-30,stry (страница1 2)*linw)
пп=пп 1
foot$="th" cstr(pp) "страница"
dd=prnt1(strx-30-1000,stry (страница1 2)
*linw 100,10,фут$)'Распечатать номер угла страницы
принтер.NewPage'следующая страница
dd=prnt1(4000,700,18,ss$)'Распечатать заголовок
стрх=стрх1
стры=стрип1
принтер.Линия(strx-50,stry-30)-
(strx kan-10,stry-30)'printfirstrow
Еще
stry=стри linw
КонецЕсли
Следующий
st=стри
Ifp<page1Then' отметьте оставшиеся пустые строки на последней странице.
Форо=pTopage1 1
стрх=стрх1
принтер.Линия(strx-50,stry-30)
-(strx кан-10,stry-30)
stry=стри linw
Следующий
КонецЕсли
стры=стрип1
стрх=стрх1
stry=stry1'linecol
Форма=0To8
принтер.Линия(strx-30,stry-30)-
(strx-30,stry (страница 1 2)*linw)
strx=strx а(п)
Следующий
принтер.Линия(strx-30,stry-30)-
(strx-30,stry (страница 1 2)*linw)
пп=пп 1
foot$="th" cstr(pp) "страница"
dd=prnt1(strx-30-1000,stry (страница1 2)
*linw 100,10,фут$)'Распечатать номер угла страницы
принтер.EndDoc'Конец печати
Конец-саб
----Этот метод позволяет легко настраивать шрифты, стили шрифтов, формы линий, страницы, размеры бумаги и т. д. посредством гибкого программирования. Можно распечатать удовлетворительные результаты. Если на вашем компьютере установлены MICROSOFTWORD и MICROEXCEL, наиболее интересным способом их использования является отправка таблицы GRID в MICROSOFTWORD и MICROEXCEL через VB. Создание таблиц MICROSOFTWORD и MICROEXCEL. Таким образом, вы можете в полной мере использовать функции печати и редактирования MICROSOFTWORD и MICROEXCEL для получения более идеальных результатов. Представлено по одному ниже.
----Метод 3. Печать путем создания формы MICROSOFTWORD.
----1. Напишите в декларации:
DimmswordAsObject
----2 Добавьте кнопку команды печати (command2) и установите для параметра CAPTION значение «Создать таблицу WORD».
«Форматировать», напишите следующий код,
PrivateSubcommand2_Click()
screen.MousePointer=11
Setmsword=CreateObject("word.basic")
DimAppID,ReturnValue
appID=Shell("d:/office97/office/WINWORD.EXE", 1)
'Запустите MicrosoftWord.
msword.AppActivate"MicrosoftWord"
'msword.AppActivate"MicrosoftWord",1
полный
Screen.MousePointer=0
EndSub
----2. Напишите следующий процесс full().
Подполный()
ДимиАсинтегер, jAsInteger,
colAsInteger,rowAsInteger
DimcellcontentAsString
Я.Скрыть
cols=4'Количество столбцов в таблице
row=gridrow' печатает количество строк в таблице.
msword.filenewdefault
msword.MsgBox"Создание отчета MS_WORD,
Пожалуйста, подождите...","",-1
msword.leftpara
msword.screenupdating0
msword.tableinserttable,col,row,,,16,167
msword.startofdocument
forj=0togridrow'Количество строк в таблице
Grid1.row=j
Фори=1Токолы
Gri1d.col=я
ЕслиIsNull(grid1.text)Тогда
содержимое ячейки$=""
Еще
cellcontent$=grid1.text
КонецЕсли
msword.Insertcellcontent$
msword.nextcell
Nexti
Следующийj
msword.tabledeleterow
msword.startofdocument
msword.tableselectrow
msword.tableheadings1
msword.centerpara
'msword.startdocument
msword.screenrefresh
msword.screenupdating1
msword.MsgBox"Конец","",-1
Me.Show
EndSub
----Метод 4. Распечатайте форму, отправив ее в MICROSOFTEXCEL.
----1. Добавьте кнопку команды печати (command3) и установите для параметра CAPTION значение «Создать таблицу EXCEL».
«Форматировать», напишите следующий код
PrivateSubcommand3_Click()
ДимиАсИнтегер
DimjAsInteger
DimxlAppAsExcel.application
DimxlBookAsExcel.Workbook
DimxlSheetAsExcel.Worksheet
SetxlApp=CreateObject("Excel.Приложение")
xlApp.Visible=Истина
'SetxlBook=xlApp.Workbooks.Add
'OnErrorResumeNext
SetxlBook=xlApp.Workbooks.Add'Open("d:/text2.xls")
SetxlSheet=xlBook.Worksheets(1)
xlSheet.Cells(6,1)="i"
Фори=0Тогридроу
сетка1.Row=я
Фордж=0To6
Grid1.Col=j
IfIsNull(Grid1.Text)=FalseThen
xlSheet.Cells(i 5,j 1)=Grid1.Text
КонецЕсли
Следующийj
Nexti
ВыходSub->