be credo che per delle gridwiew il tutto non funzioni , se devi stampare solo il contenuto di una gridwiew io utilizzo questo codice:
' Gambas class file
Private griglia As TableView
Private titolo As String
Private size As Integer
Private $i As Integer
Private th As New Integer[]
Private tw As New Integer[]
Private pagine As Integer
Private pagina As Integer
Private wt As Integer
Public Sub tabella(tab As TableView, $titolo As String, $size As Integer, $Orientation As Integer)
griglia = tab
titolo = $titolo
size = $size
'Orientation = $Orientation
If Ptabella.Configure() Then Return
Ptabella.orientation = $Orientation
$i = 0
wt = 0
th.Clear
tw.Clear
pagine = 1
pagina = 1
Ptabella.Print
End
Public Sub Ptabella_Begin()
Dim i, w, i1, cx, bx, by, cy, ht, h As Integer
'Dim th, tw As New Integer[]
Print paint.w
bx = paint.w / 20
by = paint.h / 50
cx = bx / 10
cy = bx / 50
inizio:
tw.Clear
th.Clear
Paint.Font.Size = size
'calcolo larghezza area stampata
For i = 0 To griglia.columns.Max
w = Paint.Font.TextWidth(griglia.Columns[i].Text)
For i1 = 0 To griglia.Rows.Max
If w < Paint.Font.TextWidth(griglia[i1, i].text) Then
w = Paint.Font.TextWidth(griglia[i1, i].text)
Endif
Next
tw.Add(w + cx * 2)
Next
'larghezza totale
w = 0
For i = 0 To tw.Max
w += tw[i]
Next
If w > Paint.w - bx * 2 Then
Dec size
If size > 3 Then
Goto inizio
Endif
Endif
wt = w
Print "SIZE ", size
'calcoli altezza
ht = by
'calcolo altezza logo
'If opzioni.cerca("stampa_logo_tabella", False) = True Then
'HT += opzioni.cerca("altezza_logo_tabella")
'Endif
'altezza titolo
'ht += Paint.Font.TextHeight(titolo) + cy * 2
'altezza intest tabella
ht += Paint.Font.TextHeight("H") + cy * 2
'altezza celle
For i = 0 To griglia.Rows.Max
h = 0
For i1 = 0 To griglia.Columns.Max
If h < paint.Font.TextHeight(griglia[i, i1].text) Then
h = paint.Font.TextHeight(griglia[i, i1].text)
Endif
Next
ht += h + cy * 2
th.Add(h)
'controllo pagina
If ht >= paint.h - by * 2 Then
Inc pagine
ht = by
Endif
Next
Ptabella.Count = pagine
Print "pagine ", pagine
End
Public Sub Ptabella_Draw()
Dim i, i1, cx, bx, by, cy, y, x, y1 As Integer
'Dim th, tw As New Integer[]
bx = paint.w / 20
by = paint.h / 50
cx = bx / 10
cy = bx / 50
Paint.Font.Size = size
paint.Brush = paint.Color(Color.Black)
If pagina = 1 Then
y = by
x = bx
'stampo il logo
'If opzioni.cerca("stampa_logo_tabella", False) = True Then
'paint.DrawImage(Image.Load(User.Home & "/gesthotel2/loghi/tabella.jpg"), x, y)
'y += opzioni.cerca("altezza_logo_tabella")
'Endif
'stampo titolo
paint.DrawText(titolo, x, y, paint.w, paint.Font.TextHeight(titolo) + cy * 2, 3)
y += paint.Font.TextHeight(titolo) + cy * 2
paint.Fill
'intestazione tabella
paint.MoveTo(x, y)
paint.LineTo(x, y + paint.Font.TextHeight("H") + cy * 2)
paint.MoveTo(x, y)
paint.LineTo(x + wt, y)
paint.Stroke
For i = 0 To griglia.columns.Max
paint.DrawText(griglia.Columns[i].text, x, y, tw[i], paint.Font.TextHeight("H") + cy * 2, 3)
x += tw[i]
paint.Fill
paint.MoveTo(x, y)
paint.LineTo(x, y + paint.Font.TextHeight("H") + cy * 2)
paint.Stroke
Next
x = bx
y += paint.Font.TextHeight("H") + cy * 2
paint.MoveTo(x, y)
paint.LineTo(x + wt, y)
paint.Stroke
Else
x = bx
y = by
Endif
' paint.MoveTo(x, y)
' paint.LineTo(x + wt, y)
' paint.Stroke
'stampo tabella
y1 = y
For i = $i To griglia.Rows.Max
For i1 = 0 To griglia.Columns.Max
paint.DrawText(griglia[i, i1].Text, x, y, tw[i1], paint.Font.TextHeight(griglia[i, i1].Text) + cy * 2, griglia[i, i1].Alignment)
x += tw[i1]
Next
paint.Fill
x = bx
'y += paint.Font.TextHeight(griglia[i, i1].Text) + cy * 2
y += th[i]
paint.MoveTo(x, y)
paint.LineTo(x + wt, y)
paint.Stroke
If y >= paint.h - by * 2 Then
$i = i + 1
Break
Endif
Next
'disegno linee verticali
paint.MoveTo(x, y1)
paint.LineTo(x, y)
For i1 = 0 To griglia.Columns.Max
x += tw[i1]
paint.MoveTo(x, y1)
paint.LineTo(x, y)
Next
paint.Stroke
Inc pagina
End
il codice si occupa di dimensionare le celle in base al testo e di creare quante pagine servono per stampare tutta la tabella , il tutto lo inserisci in un form apposito e lo lanci con la funzione tabella() , in cui come parametri passi l' oggetto gridview da stampare , il titolo , la dimensione del font è l'a llineamento della pagina.
ps: può esserci qualche linea di codice che fa riferimento al programma in cui la utilizzo.