Newsgroup: it.comp.lang.visual-basic
Titolo: MSHFlexGrid - Suggerimenti per la stampa.

Devo stampare i dati contenuti in un MSHFlexGrid.
Per la stampa di questo controllo c'è qualche procedura particolare o
qualsiasi cosa che occorre sapere?
Avete suggerimenti?
Grazie!
Max

vedi l'oggetto printer
es
for i = 1 to  xxxx
With Grid1
         .Row = i
         .Col = 1
         valore = Grid1.Text
     End With
     Printer.Print  valore
next i
Ciao
Max
Maxalta ha scritto nel messaggio ...


Ciao,sono Stefano, programmo in VB5 da 3 anni.
Ti sottopongo la mia soluzione che sto usando in un programma di Business
Inteligence.
Dopo aver riampito la griglia, imposta l'orintamento della pagina
innorizzontale, dimensiona l'altezza della griglia
ponendola uguale a quella della pagina.
Dimensiona a piacere (nel modo più opportuno per meglio vedere i dati) la
larghezza delle colonne.
Lavorando con la proprietà TopRow e l'ltezza delle righe, rendi visibile
solo una "pagina" alla volta e
quindi stampa l'immagine della griglia su stampante avendo cura di impostare
tutti i parametri del metodo
"Printer.PaintPicture" in modo da sottoporre a strech l'immagine della
griglia e adattarla alle dimensioni della pagina.
Di seguito ti invio il listato della routine di stampa che è presente
nell'help della MSFlexGrid per la proprietà "PICTURE" e il pezzo in cui,
nella mia routine stampo sulla stampante, se non ti è chiaro qualche cosa,
scrivimi
a 
step...@libero.it
Tieni presente che con questo metodo invii alla stampante una immagine e non
dei caratteri da stampare, quindi , sopratutto sel esegui in
ridimensionamento dell'immagine, potresti evere una stampa più lenta.
'***************************************************************************
******************
            Printer.PaintPicture .Picture, _
                Printer.CurrentX, Printer.CurrentY, _
                Printer.Width - Printer.CurrentX, Printer.Height -
Printer.CurrentY , _
                0, 0, _
                MSFlexGrid1.Width, MSFlexGrid1.Height
'***************************************************************************
******************
The code below shows how to create a MSFlexGrid picture that includes only
the current selection.
Sub CopySelectedPictureToClipboard (myFlex As _
MSFlexGrid)
 Dim i As Integer, tr As Long, lc As Long, _
 hl As Integer
 ' Get ready to operate.
 MyFlex.Redraw = False ' To eliminate flicker.
 hl = MyFlex.HighLight ' Save current settings.
 tr = MyFlex.TopRow
 lc = MyFlex.LeftCol
 MyFlex.HighLight = 0 ' No highlight on picture.
 ' Hide nonselected rows and columns.
 ' (Save original sizes in RowData/ColData
' properties.)
 For i = MyFlex.FixedRows To MyFlex.Rows - 1
  If i < MyFlex.Row Or i > MyFlex.RowSel Then
   MyFlex.RowData(i) = MyFlex.RowHeight(i)
   MyFlex.RowHeight(i) = 0
  End If
 Next
 For i = MyFlex.FixedCols To MyFlex.Cols - 1
  If i < MyFlex.Col Or i > MyFlex.ColSel Then
   MyFlex.ColData(i) = MyFlex.ColWidth(i)
   MyFlex.ColWidth(i) = 0
  End If
 Next
 ' Scroll to top left corner.
 MyFlex.TopRow = MyFlex.FixedRows
MyFlex.LeftCol = MyFlex.FixedCols
 ' Copy picture.
 clipboard.Clear
 On Error Resume Next
 MyFlex.PictureType = 0 ' Color.
 clipboard.SetData MyFlex.Picture
 If Error <> 0 Then
  MyFlex.PictureType = 1 ' Monochrome.
  clipboard.SetData MyFlex.Picture
 Endif
 ' Restore control.
 For i = MyFlex.FixedRows To MyFlex.Rows - 1
  If i < MyFlex.Row Or i > MyFlex.RowSel Then
   MyFlex.RowHeight(i) = MyFlex.RowData(i)
End If
 Next
 For i = MyFlex.FixedCols To MyFlex.Cols - 1
  If i < MyFlex.Col Or i > MyFlex.ColSel Then
   MyFlex.ColWidth(i) = MyFlex.ColData(i)
  End If
 Next
 MyFlex.TopRow = tr
 MyFlex.LeftCol = lc
 MyFlex.HighLight = hl
 MyFlex.Redraw = True
End Sub