Imprimer une textbox

Résolu
cs_mohellebi Messages postés 98 Date d'inscription mercredi 31 octobre 2007 Statut Membre Dernière intervention 1 août 2019 - 17 sept. 2015 à 22:15
Zermelo Messages postés 378 Date d'inscription samedi 22 septembre 2012 Statut Membre Dernière intervention 13 août 2017 - 4 oct. 2015 à 11:55
Bonjour,
j'ai réalisé une application vb 2010/sql serveur 2008.
pour l'impression des états ou autre j'ai pour habitude d'utiliser crystal report.
maintenant, les utilisateurs ont exprimé le besoin d'imprimer directement depuis la forme, c'est à dire le contenu des textbox,combobx..ect sans même passer par la prévisualisation , comme un ticket de caisse par exemple.
ayant aucune idée d'où je pourrai commencer, si possible de m'orienter sur un tuto ou un code qui m'aidera à m'en sortir de cette galère.
Merci d'avance de votre aide

5 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 18/09/2015 à 04:41
Bonjour,
- discussion déplacée vers le sous-forum adéquat (VB.Net). Prends s'il te plait dorénavant ce soin.
-
http://www.dreamincode.net/forums/topic/44150-printing-in-vbnet/

________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
1
cs_mohellebi Messages postés 98 Date d'inscription mercredi 31 octobre 2007 Statut Membre Dernière intervention 1 août 2019 3
19 sept. 2015 à 01:25
Bonsoir,
Merci ucfoutu pour le lien , je concurrencerai à l'exploiter demain ensuite je reviendrai vers vous
0
Zermelo Messages postés 378 Date d'inscription samedi 22 septembre 2012 Statut Membre Dernière intervention 13 août 2017 14
20 sept. 2015 à 12:51
Mais qui donc voulez-vous concurrencer ?
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211 > Zermelo Messages postés 378 Date d'inscription samedi 22 septembre 2012 Statut Membre Dernière intervention 13 août 2017
20 sept. 2015 à 13:28
Tiens ! un autre "sénile" !
Salut, ami ...
0
cs_mohellebi Messages postés 98 Date d'inscription mercredi 31 octobre 2007 Statut Membre Dernière intervention 1 août 2019 3 > ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018
20 sept. 2015 à 15:17
Vraiment désolé le mot n'avait rien à faire là, je voulais juste dire "je l'exploiterai demain et ...." une bêtise de ma part
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211 > cs_mohellebi Messages postés 98 Date d'inscription mercredi 31 octobre 2007 Statut Membre Dernière intervention 1 août 2019
20 sept. 2015 à 19:06
Mais non, cs_mohellebi ! ===>> Tu n'étais nullement concerné ! Juste une partie de rigolade entre deux "vieux" ...un dimanche ...
0
cs_mohellebi Messages postés 98 Date d'inscription mercredi 31 octobre 2007 Statut Membre Dernière intervention 1 août 2019 3 > ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018
2 oct. 2015 à 23:00
wé par fois rigoler est la meilleur chose à faire pour oublier un peu les bugs des programmes
0
Zermelo Messages postés 378 Date d'inscription samedi 22 septembre 2012 Statut Membre Dernière intervention 13 août 2017 14
23 sept. 2015 à 17:49
Bonsoir cs_mohellebi.
Avez-vous avancé un peu ?
Cordialement.
0
cs_mohellebi Messages postés 98 Date d'inscription mercredi 31 octobre 2007 Statut Membre Dernière intervention 1 août 2019 3
2 oct. 2015 à 22:54
Bonsoir tout le monde,
désolé pour le retard car j'était sur d'autre programme afin d'avancer et laisser ce problème pour la fin
alors, j'ai suivi le tuto que ucfoutu m'avait recommandé étape par étape et j'avoue que j'ai pas totalement pigé , maintenant et après avoir écrit tout le programme dans une classe, reste le teste là je bloque sur l'exécution de cette classe
Merci d'avance pour tout les efforts que vous consacrez aux nombres
voila la classe pour imprimer un label

Public Class PCPrint : Inherits Printing.PrintDocument
#Region " Property Variables "

    ''' <summary>
    ''' Property variable for the Font the user wishes to use
    ''' </summary>
    ''' <remarks></remarks>
    Private _font As Font
    ''' <summary>
    ''' Property variable for the text to be printed
    ''' </summary>
    ''' <remarks></remarks>
    Private _text As String

#End Region

#Region " Class Properties "
    ''' <summary>
    ''' Property to hold the text that is to be printed
    ''' </summary>
    ''' <value></value>
    ''' <returns>A string</returns>
    ''' <remarks></remarks>
    Public Property TextToPrint() As String
        Get
            Return _text
        End Get
        Set(ByVal Value As String)
            _text = Value
        End Set
    End Property
    ''' <summary>

    ''' Property to hold the font the users wishes to use
    ''' </summary>
    ''' <value></value>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Property PrinterFont() As Font
        ' Allows the user to override the default font
        Get
            Return _font
        End Get
        Set(ByVal Value As Font)
            _font = Value

        End Set
    End Property

#End Region



#Region " Class Constructors "
    ''' <summary>
    ''' Empty constructor
    ''' </summary>
    ''' <remarks></remarks>
    Public Sub New()
        'Call the base classes constructor
        MyBase.New()
        'Instantiate out Text property to an empty string

        _text = String.Empty

    End Sub



    ''' <summary>
    ''' Constructor to initialize our printing object
    ''' and the text it's supposed to be printing
    ''' </summary>
    ''' <param name="str">Text that will be printed</param>
    ''' <remarks></remarks>

    Public Sub New(ByVal str As String)

        'Call the base classes constructor

        MyBase.New()

        'Set our Text property value

        _text = str

    End Sub

#End Region




#Region " onbeginPrint "

    ''' <summary>
    ''' Override the default onbeginPrint method of the PrintDocument Object
    ''' </summary>
    ''' <param name="e"></param>
    ''' <remarks></remarks>
    Protected Overrides Sub onbeginPrint(ByVal e As Printing.PrintEventArgs)
        ' Run base code
        MyBase.onbeginPrint(e)

        'Check to see if the user provided a font
        'if they didnt then we default to Times New Roman
        If _font Is Nothing Then
            'Create the font we need
            _font = New Font("Times New Roman", 10)
        End If
    End Sub
#End Region




#Region " OnPrintPage "

    ''' <summary>
    ''' Override the default OnPrintPage method of the PrintDocument
    ''' </summary>
    ''' <param name="e"></param>
    ''' <remarks>This provides the print logic for our document</remarks>

    Protected Overrides Sub OnPrintPage(ByVal e As Printing.PrintPageEventArgs)

        ' Run base code

        MyBase.OnPrintPage(e)



        'Declare local variables needed

        Static curChar As Integer

        Dim printHeight As Integer

        Dim printWidth As Integer

        Dim leftMargin As Integer

        Dim rightMargin As Integer

        Dim lines As Int32

        Dim chars As Int32



        'Set print area size and margins

        With MyBase.DefaultPageSettings

            printHeight = .PaperSize.Height - .Margins.Top - .Margins.Bottom

            printWidth = .PaperSize.Width - .Margins.Left - .Margins.Right

            leftMargin = .Margins.Left 'X

            rightMargin = .Margins.Top   'Y

        End With
        'Check if the user selected to print in Landscape mode

        'if they did then we need to swap height/width parameters

        If MyBase.DefaultPageSettings.Landscape Then

            Dim tmp As Integer

            tmp = printHeight

            printHeight = printWidth

            printWidth = tmp

        End If



        'Now we need to determine the total number of lines

        'we're going to be printing

        Dim numLines As Int32 = CInt(printHeight / PrinterFont.Height)


        'Create a rectangle printing are for our document

        Dim printArea As New RectangleF(leftMargin, rightMargin, printWidth, printHeight)



        'Use the StringFormat class for the text layout of our document

        Dim format As New StringFormat(StringFormatFlags.LineLimit)



        'Fit as many characters as we can into the print area     



        e.Graphics.MeasureString(_text.Substring(RemoveZeros(curChar)), PrinterFont, New SizeF(printWidth, printHeight), format, chars, lines)



        'Print the page

        e.Graphics.DrawString(_text.Substring(RemoveZeros(curChar)), PrinterFont, Brushes.Black, printArea, format)



        'Increase current char count

        curChar += chars



        'Detemine if there is more text to print, if

        'there is the tell the printer there is more coming

        If curChar < _text.Length Then

            e.HasMorePages = True

        Else
            e.HasMorePages = False

            curChar = 0

        End If

    End Sub

#End Region

#Region " RemoveZeros "

    ''' <summary>
    ''' Function to replace any zeros in the size to a 1
    ''' Zero's will mess up the printing area
    ''' </summary>
    ''' <param name="value">Value to check</param>
    ''' <returns></returns>
    ''' <remarks></remarks>

    Public Function RemoveZeros(ByVal value As Integer) As Integer

        'Check the value passed into the function,

        'if the value is a 0 (zero) then return a 1,

        'otherwise return the value passed in

        Select Case value

            Case 0

                Return 1

            Case Else

                Return value

        End Select

    End Function
#End Region




#Region " PrintDocument "

    Public Sub PrintDocument()

        'Create an instance of our printer class

        Dim printer As New PCPrint()

        'Set the font we want to use

        printer.PrinterFont = New Font("Verdana", 10)
        'Set the TextToPrint property

        printer.TextToPrint = Form18.NavireLabel.Text

        'Issue print command

        printer.Print()

    End Sub

#End Region


End Class


après j'ai trouvé une petite instruction afin d'imprimer toute la form, mais avec une qualité d'impression trop médiocre

PrintForm1.PrintAction = Printing.PrintAction.PrintToPrinter
        PrintForm1.Print()
0
Zermelo Messages postés 378 Date d'inscription samedi 22 septembre 2012 Statut Membre Dernière intervention 13 août 2017 14
3 oct. 2015 à 09:55
Bonjour cs_mohellebi.
Vous pouvez aussi essayer la "capture d'image". Ce procédé fournit un bitmap, qui peut être imprimé avec les techniques d'impression de vb.net.
Cordialement.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_mohellebi Messages postés 98 Date d'inscription mercredi 31 octobre 2007 Statut Membre Dernière intervention 1 août 2019 3
4 oct. 2015 à 10:40
Merci Zermelo pour ton aide car votre solution d'imprime écran pourra éventuellement me servir dans d'autre cas, cependant voila un code très simple et qui marche nickel
 
'Veuillez insérer le code dans le bouton imprimer 
 Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

        'PrintForm1.PrintAction = Printing.PrintAction.PrintToPrinter
        '' PrintForm1.Print()
        PrintDocument1.PrinterSettings.Copies = 1
        PrintDocument1.Print()

        Me.Hide()
        Timer1.Stop()

    End Sub


et pour ajuster les objets à imprimer

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


e.Graphics.DrawString(Label1.Text, Label1.Font, Brushes.Black, 100, 50)
e.Graphics.DrawString(agenceLabel.Text, agenceLabel.Font, Brushes.Black, 100, 100)
e.Graphics.DrawString(Label2.Text, Label2.Font, Brushes.Black, 50, 200)

'e.Graphics.DrawString(NavireLabel.Text, NavireLabel.Font, Brushes.Black, 100, 100)
'e.Graphics.DrawString(trajetLabel.Text, trajetLabel.Font, Brushes.Black, 100, 150)
'e.Graphics.DrawString(datevoyageLabel.Text, datevoyageLabel.Font, Brushes.Black, 100, 200)


End Sub

0
Zermelo Messages postés 378 Date d'inscription samedi 22 septembre 2012 Statut Membre Dernière intervention 13 août 2017 14
4 oct. 2015 à 11:55
Bravo.
Alors n'oubliez pas de déclarer le sujet résolu.
Salutations.
0
Rejoignez-nous