----그리드 컨트롤은 VB3.0부터 VB5.0까지 사용할 수 있는 Visual Basic의 가장 일반적인 컨트롤 중 하나입니다. 또한 VB 매니아들이 가장 좋아하는 도구 중 하나입니다. 특히 데이터베이스 애플리케이션의 경우 테이블 형식으로 데이터를 표시하고 찾아보는 데 사용할 수 있습니다. 다만 아쉬운 점은 그리드에는 편집과 인쇄 기능이 없고 컬럼의 위치를 서로 바꿀 수 없다는 점이다. 저자는 그리드를 더욱 훌륭하고 강력하게 만들기 위해 이러한 기능을 그리드에 추가하려고 노력했습니다. 개선 방법과 소스 프로그램은 아래에 나와 있습니다. 독자는 그리드에 인쇄 기능을 추가하기 위한 단계에 따라 소스 프로그램을 작성하기만 하면 됩니다. 저자는 HP5/100Window95 환경에서 VB5.0을 사용하여 이 프로그램을 디버깅하고 통과시켰습니다.
----Grid 컨트롤에 인쇄를 추가하는 방법에는 세 가지가 있습니다. 1. 컨트롤을 직접 인쇄하는 방법, 2. PRinter를 통해 인쇄 기능을 구현하는 방법, 3. MS-Word 및 MS-Excel을 호출하여 인쇄를 구현하는 방법입니다.
----먼저 응용 프로그램을 열고 FORM1에 DATA 컨트롤 DATA1을 추가하고 DATA1의 CONNECT 속성을 dBASEIII로 설정한 다음 DATABASENAME 속성을 D:/PJXM.DBF로 설정합니다. 그런 다음 FORM1에 MSFLEXGRID 공간 GRID1을 추가하고 GRID1의 DATASOURCE 특성을 DATA1로 설정합니다. 이러한 방식으로 PJXM.DBF 데이터베이스의 정보가 GRID1에 표시됩니다.
----방법 1: 폼 메소드를 직접 출력하고, FORM1에 명령버튼(command)을 추가하고, CAPTION 속성을 직접 출력으로 설정한 후, 다음 코드를 작성한다.
하위 명령_클릭
Form1.printform
엔드서브
----이 방법으로 GRID1의 데이터를 FORM1로 인쇄할 수 있습니다. 아쉽게도 GRID1에 표시된 데이터 부분만 인쇄할 수 있습니다. 또한 이 인쇄 방법은 인쇄할 수 없습니다. 하드 카피는 다른 컨트롤도 인쇄하는 것과 매우 유사합니다. 또한 글꼴 등을 유연하게 제어할 수 없습니다.
----방법 2: 프린터를 통해 인쇄합니다. 이 방법
----1. 인쇄 명령 버튼(command1)과 기능(prnt1)을 추가하여 인쇄 기능을 구현합니다. 리더는 이를 약간 변경하여 표준 기능이나 프로세스에 작성할 수 있습니다.
함수prnt1(xAsInteger,yAsInteger,
글꼴AsSingle,txtAsString)
프린터.현재X=x
프린터.현재Y=y
프린터.FontBold=거짓
프린터.FontSize=글꼴
프린터.Printtxt
EndFunction
하위 명령1_click
DimfntAsSingle
딤파신테거
Pp=0'시작 페이지 번호를 0으로 설정
Dimstry,strx,strx1,stry1,linw,page1,pAsInteger
Statica(8)AsInteger'는 인쇄할 열 수를 정의합니다.
ss$="내부 정산 예금 명세서"'헤더 정의
칸=0
Fori=0To8
a(i)=1500'은 각 열의 너비를 정의합니다.
kan=kan a(i)' 테이블의 전체 너비를 계산합니다.
다음
page1=50'은 페이지당 줄 수를 정의합니다.
strx=200
strx1=200'은 X 방향의 시작 위치를 정의합니다.
stry=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
strx=strx1
프린터.라인(strx-50,stry-30)
-(strx 칸-10,stry-30)
p=p 1
Fori=0To8
Grid1.col=i
dd=prnt1(strx,stry,fnt,grid1.text)
strx=strx a(i)
다음
Ifp>page1Then'다음페이지
p=0
strx=strx1
'라인라스트라인
프린터.라인(strx-50,stry linw)
-(strx kan-10,stry linw)
stry=stry1
'리네콜
Forn=0To8
프린터.라인(strx-30,stry-30)
-(strx-30,stry (페이지1 2)*linw)
strx=strx a(n)
다음
프린터.라인(strx-30,stry-30)
-(strx-30,stry (페이지1 2)*linw)
pp=pp 1
foot$="th" cstr(pp) "페이지"
dd=prnt1(strx-30-1000,stry (페이지1 2)
*linw 100,10,foot$)'페이지 모서리 번호 인쇄
프린터.새페이지'다음페이지
dd=prnt1(4000,700,18,ss$)'제목 인쇄
strx=strx1
stry=stry1
프린터.라인(strx-50,stry-30)-
(strx kan-10,stry-30)'printfirstrow
또 다른
stry=stry linw
종료
다음
st=시도
Ifp<page1Then' 마지막 페이지에 남은 빈 줄을 표시합니다.
Foro=pTopage1 1
strx=strx1
프린터.라인(strx-50,stry-30)
-(strx 칸-10,stry-30)
stry=stry linw
다음
종료
stry=stry1
strx=strx1
stry=stry1'linecol
Forn=0To8
프린터.라인(strx-30,stry-30)-
(strx-30,stry (페이지1 2)*linw)
strx=strx a(n)
다음
프린터.라인(strx-30,stry-30)-
(strx-30,stry (페이지1 2)*linw)
pp=pp 1
foot$="th" cstr(pp) "페이지"
dd=prnt1(strx-30-1000,stry (페이지1 2)
*linw 100,10,foot$)'페이지 모서리 번호 인쇄
Printer.EndDoc'인쇄 종료
엔드서브
----이 방법은 유연한 프로그래밍을 통해 글꼴, 글꼴 스타일, 선 모양, 페이지, 용지 크기 등을 쉽게 조정할 수 있습니다. 만족스러운 결과를 인쇄할 수 있습니다. MICROSOFTWORD 및 MICROEXCEL이 컴퓨터에 설치되어 있는 경우 이를 사용하는 가장 흥미로운 방법은 VB를 통해 GRID 테이블을 MICROSOFTWORD 및 MICROEXCEL로 보내는 것입니다. MICROSOFTWORD 및 MICROEXCEL 테이블을 생성합니다. 이러한 방식으로 MICROSOFTWORD 및 MICROEXCEL의 인쇄 및 편집 기능을 최대한 활용하여 보다 이상적인 결과를 인쇄할 수 있습니다. 아래에 하나씩 소개합니다.
----방법 3: MICROSOFTWORD 양식을 생성하여 인쇄
----1. 선언문 작성:
DimmswordAsObject
----2. 인쇄 명령 버튼(command2)을 추가하고 CAPTION을 "WORD 테이블 생성"으로 설정합니다.
"포맷", 다음 코드를 작성하세요.
PrivateSubcommand2_Click()
스크린.마우스포인터=11
Setmsword=CreateObject("word.basic")
DimAppID,반환값
appID=Shell("d:/office97/office/WINWORD.EXE",1)
'MicrosoftWord를 실행하세요.
msword.AppActivate"MicrosoftWord"
'msword.AppActivate"MicrosoftWord",1
가득한
스크린.마우스포인터=0
EndSub
----2. 다음 프로세스를 작성합니다.
하위전체()
DimiAsInteger,jAsInteger,
colAsInteger,rowAsInteger
DimcellcontentAsString
나.숨기기
cols=4'테이블의 열 수
row=gridrow'는 테이블의 행 수를 인쇄합니다.
msword.file새기본값
msword.MsgBox"MS_WORD 보고서를 작성하는 중,
잠시만 기다려 주십시오...","",-1
msword.leftpara
msword.screenupdating0
msword.tableinserttable,col,row,,,16,167
msword.startofdocument
forj=0togridrow'테이블의 행 수
Grid1.row=j
Fori=1Tocols
Gri1d.col=i
IfIsNull(grid1.text)Then
셀 내용$=""
또 다른
cellcontent$=grid1.text
종료
msword.Insertcellcontent$
msword.nextcell
넥스티
넥스트
msword.tabledeleterow
msword.startofdocument
msword.tableselectrow
msword.tableheadings1
msword.centerpara
'msword.start문서
msword.screenrefresh
msword.screenupdating1
msword.MsgBox"끝","",-1
미쇼
EndSub
----방법 4: 양식을 MICROSOFTEXCEL로 전송하여 인쇄합니다.
----1. 인쇄 명령 버튼(command3)을 추가하고 CAPTION을 "EXCEL 테이블 생성"으로 설정합니다.
"포맷", 다음 코드를 작성하세요
PrivateSubcommand3_Click()
DimiAsInteger
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"
Fori=0Togridrow
Grid1.Row=i
Forj=0To6
Grid1.Col=j
IfIsNull(Grid1.Text)=FalseThen
xlSheet.Cells(i 5,j 1)=Grid1.Text
종료
넥스트
넥스티
종료Sub->