by Halak Assad (1 Submission)
Category: OLE/COM/DCOM/Active-X
Compatability: VB 6.0
Difficulty: Unknown Difficulty
Originally Published: Thu 20th June 2002
Date Added: Mon 8th February 2021
Rating: (1 Votes)
Print MsFlexGrid
' Print Any MsFlexGrid with any ColWidth property
Private Sub Command1_Click()
Call Form_Load
End Sub
Private Sub Form_Load()
Dim colsWidth(10) As Integer
Dim Pages, PageNum, FirstRow, LastRow, NumRows As Integer
FirstRow = 0
LastRow = 0
NumRows = 15
HeightRow = 360
For x = 1 To 20
MSFlexGrid1.Row = x - 1
MSFlexGrid1.Col = 0
MSFlexGrid1.Text = x
MSFlexGrid1.Col = 1
MSFlexGrid1.Text = x ^ 2
MSFlexGrid1.Col = 2
MSFlexGrid1.Text = x ^ 3
MSFlexGrid1.Col = 3
MSFlexGrid1.Text = x ^ 4
MSFlexGrid1.Col = 4
MSFlexGrid1.Text = x ^ 5
Next
MSFlexGrid1.Visible = False
LastRow = MSFlexGrid1.Rows
For ColNum = 1 To MSFlexGrid1.Cols
colsWidth(ColNum) = MSFlexGrid1.ColWidth(ColNum - 1)
Next
Pages = Int(LastRow / NumRows) + 1
If MSFlexGrid1.Rows > NumRows Then
FirstRow = 0
LastRow = NumRows
Else
FirstRow = 0
LastRow = MSFlexGrid1.Rows - 1
End If
For PageNum = 1 To Pages
CurX1 = 0
CurX2 = 200
CurY2 = 200
For ColNum = 1 To MSFlexGrid1.Cols
CurX1 = CurX1 + colsWidth(ColNum)
Next
CurX1 = CurX1 + CurX2
CurY1 = 200
For RowNum = FirstRow To LastRow + 1
Printer.Line (CurX1, CurY1)-(CurX2, CurY2)
CurY1 = CurY1 + HeightRow
CurY2 = CurY2 + HeightRow
Next
CurY1 = 0
CurY2 = 200
CurX1 = 200
For RowNum = FirstRow To LastRow
CurY1 = CurY1 + HeightRow
Next
CurY1 = CurY1 + CurY2
For ColNum = 1 To MSFlexGrid1.Cols
Printer.Line (CurX1, CurY1)-(CurX2, CurY2)
CurX1 = CurX1 + colsWidth(ColNum)
CurX2 = CurX2 + colsWidth(ColNum)
Next
Printer.Line (CurX1, CurY1)-(CurX2, CurY2)
CurX3 = 0
CurY3 = 0
For RowNum = FirstRow To LastRow
MSFlexGrid1.Row = RowNum
For ColNum = 1 To MSFlexGrid1.Cols
MSFlexGrid1.Row = RowNum
MSFlexGrid1.Col = ColNum - 1
Printer.CurrentX = CurY3 + 250
Printer.CurrentY = HeightRow + CurX3 + CurY2 - 300
CurY3 = CurY3 + colsWidth(ColNum)
Printer.Print Trim(MSFlexGrid1.Text)
Next
CurY3 = 0
CurX3 = CurX3 + HeightRow
Next
FirstRow = FirstRow + 16
LastRow = LastRow + 16
If LastRow > MSFlexGrid1.Rows Then
LastRow = MSFlexGrid1.Rows - 1
End If
Printer.NewPage
Next
Printer.EndDoc
MSFlexGrid1.Visible = True
End Sub