Печать DataGrid

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

Чудик
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 639
Зарегистрирован: 06.07.2004 (Вт) 12:18
Откуда: г. Егорьевск

Печать DataGrid

Сообщение Чудик » 22.01.2006 (Вс) 19:09

Встала задача распечатать данные из DataGrid (по возможности в табличном виде и строго без применения CrystalReport).
Не киньте ли идейку (уж о коде в качестве примера молчу!) как это реализовать.
Поиск не помог, в инете не нашел.
:scratch:
Век живи - век учись!
www.detal-plast.narod.ru

Чудик
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 639
Зарегистрирован: 06.07.2004 (Вт) 12:18
Откуда: г. Егорьевск

Сообщение Чудик » 13.02.2006 (Пн) 11:07

Код: Выделить всё
     Private Declare Function PrintWindow Lib "user32.dll" (ByVal _
          hwnd As IntPtr, ByVal hdcBlt As IntPtr, ByVal nFlags As _
          UInt32) As Boolean
    Dim screenGrab As Bitmap

    Private Sub CaptureScreen()
         screenGrab = New Bitmap(Me.Width, Me.Height)
        Dim g As Graphics = Graphics.FromImage(screenGrab)
        Dim hdc As IntPtr = g.GetHdc
        Form1.PrintWindow(Me.Handle, hdc, Nothing)
        g.ReleaseHdc(hdc)
        g.Flush()
        g.Dispose()
    End Sub

    Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, _
       ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles _
       PrintDocument1.PrintPage

        Dim pagewidth As Single = e.PageBounds.Width / 100
        Dim pageheight As Single = e.PageBounds.Height / 100
        Dim pagewidthpixels As Integer = pagewidth * e.PageSettings.PrinterResolution.X
        Dim pageheightpixels As Integer = pageheight * e.PageSettings.PrinterResolution.Y
        Dim width_ratio As Double = pagewidthpixels / screenGrab.Width
        Dim height_ratio As Double = pageheightpixels / screenGrab.Height
        Dim scaling_factor As Double
        If width_ratio > height_ratio Then
            scaling_factor = height_ratio
        Else
            scaling_factor = width_ratio
        End If

        screenGrab.SetResolution(e.PageSettings.PrinterResolution.X / scaling_factor, e.PageSettings.PrinterResolution.Y / scaling_factor)
        e.Graphics.DrawImage(screenGrab, 0, 0)

    End Sub

    Private Sub PrintButton_Click(ByVal sender As System.Object, ByVal e As _
       System.EventArgs) Handles Button6.Click
        CaptureScreen()
        PrintDocument1.DefaultPageSettings.Landscape = screenGrab.Width > screenGrab.Height
        PrintPreviewDialog1.Document = PrintDocument1
        PrintPreviewDialog1.ShowDialog()

    End Sub
Век живи - век учись!
www.detal-plast.narod.ru


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 39

    TopList