Impression sur papier pour un logiciel VB.net
Gradi
Messages postés
19
Statut
Membre
-
Heliotte Messages postés 1561 Statut Membre -
Heliotte Messages postés 1561 Statut Membre -
Bonjour,
j'ai un Problème concernant l'impression sur papier d'une interface VB.net, j'ai écrit un programme VB.net et je veux une situation imprimer sur papier, tel que facture, rapport.
Y a-t-il quelqu'un qui peut m'aider en me donnant le code pour la précédure pour que le programme imprime sur papier. Merci d'avance
j'ai un Problème concernant l'impression sur papier d'une interface VB.net, j'ai écrit un programme VB.net et je veux une situation imprimer sur papier, tel que facture, rapport.
Y a-t-il quelqu'un qui peut m'aider en me donnant le code pour la précédure pour que le programme imprime sur papier. Merci d'avance
A voir également:
- Impression sur papier pour un logiciel VB.net
- Spouleur d'impression - Guide
- Presse papier - Guide
- Impression livret a5 - Guide
- Logiciel - Guide
- Money logiciel - Télécharger - Comptabilité & Facturation
8 réponses
Bonsoir, code:
Et sur ta 2éme page :
Public Class Form1
Private Sub Form2ToolStripMenuItem_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Form2ToolStripMenuItem.Click
Form2.MdiParent = Me
Form2.Show()
Form2.Location = calcul_position()
End Sub
Private Sub Form3ToolStripMenuItem_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Form3ToolStripMenuItem.Click
Form3.MdiParent = Me
Form3.Show()
Form3.Location = calcul_position()
End Sub
'**************************************************************
'* Fonction calculant la position adéquate pour un formulaire *
'**************************************************************
Public Function calcul_position() As Point
Dim nbform As Integer
'** Stockage dans la variable "nbform" du nombre de formulaires ouverts dans
'** le formulaire de menu
nbform = Me.MdiChildren.Length
'** Calcul de la position adéquate pour le coin supérieur gauche du formulaire
'** On définit un point dont les coordonnées X et Y sont calculées de la façon suivante :
'** - Si 1 formulaire ouvert, cela veut dire que le formulaire à traiter est le seul ouvert
'** ==> les coordonnées seront donc (0,0), c'est à dire que le formulaire se placera
'** dans le coin supérieur gauche du formulaire de menu.
'** - Si 2 formulaires ouverts, les coordonnées seront (30,30), c'est à dire que le
'** formulaire sera décalé de 30 pixels vers le bas et de 30 pixels vers la droite
'** - Si 3 formulaires ouverts, les coordonnées seront (60,60), c'est à dire que le
'** formulaire sera décalé de 2x30 pixels vers le bas et de 2x30 pixels vers la droite
'** - Et ainsi de suite.
Dim p As New Point((nbform - 1) * 30, (nbform - 1) * 30)
Return p
End Function
End Class
Et sur ta 2éme page :
Imports System.Data.OleDb
Imports Microsoft.Reporting.WinForms
Imports System.Drawing.Printing
Public Class Form2
Dim maconnexion As New OleDbConnection
Dim rdr As OleDbDataReader
Dim debut As Integer
Dim numpage As Integer
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim chaineconnexion As String
chaineconnexion = "provider=microsoft.jet.oledb.4.0; data source=" & Application.StartupPath & "\basetest.mdb"
maconnexion.ConnectionString = chaineconnexion
maconnexion.Open()
debut = 1
Dim pd As New PrintDocument()
'Si on voulait se mettre en format paysage, il faudrait activer l'instruction suivante
'pd.DefaultPageSettings.Landscape = True
'L'instruction suivante indique que lorsque l'événement "Printpage"
'(c'est à dire "impression d'une page") se produira sur l'objet "pd",
'il y aura appel de la procédure "impression_page" (écrite plus bas)
'C'est dans cette procédure que l'on va programmer l'impression
AddHandler pd.PrintPage, AddressOf Me.impression_page
'Création d'un objet "PrintPreviewDialog" et affichage,
'pour afficher un aperçu avant impression de l'état
Dim dllg As New PrintPreviewDialog
dllg.Document = pd
dllg.ShowDialog()
End Sub
'*** Procédure appelée pour chaque page imprimée ****
Private Sub impression_page(ByVal sender As Object, ByVal ev As System.Drawing.Printing.PrintPageEventArgs)
'ypos = coordonnée verticale, par rapport au haut de la feuille
Dim ypos As Integer = ev.MarginBounds.Top ' Marginbounds.top désigne la marge haute
'xpos = coordonnée horizontale, par rapport au bord gauche de la feuille
Dim xpos As Integer = ev.MarginBounds.Left
Dim f As New Font("Times", 11)
Dim hauteurligne As Integer = f.GetHeight(ev.Graphics)
Dim resultat As Boolean
Dim largeurcol As Integer
Dim largeurligne As Integer = ev.MarginBounds.Width
'Détermination du nombre de lignes par page.
'MarginBounds.Height = hauteur de la page, diminuée des marges haute et basse
Dim nblignes As Integer = ev.MarginBounds.Height / hauteurligne
Dim cpt As Integer = 0
'Première lecture de la requête quand on commence l'état
If debut = 1 Then
Dim req As String
req = "select nomorgan, commune from organisateur"
Dim cmd As New OleDbCommand(req, maconnexion)
rdr = cmd.ExecuteReader()
rdr.Read()
numpage = 1
End If
'***************************
'* Ecriture entête de page *
'***************************
ev.Graphics.DrawString("LISTE DES ORGANISATEURS - Page " & numpage, f, Brushes.Black, xpos, ypos)
ypos = ypos + hauteurligne
cpt = cpt + 1
'Comme dans cet exemple, on va mettre simplement 2 champs sur l'état,
'on fixe une largeur de colonne égale à la largeur de la page divisée par 2
largeurcol = ev.MarginBounds.Width / 2
'Traçage d'un premier rectangle pour encadrer l'entête de colonne "NOM ORGANISATEUR"
ev.Graphics.DrawRectangle(Pens.Black, xpos, ypos, largeurcol, hauteurligne)
'Traçage d'un deuxième rectangle pour encadrer l'entête de colonne "COMMUNE"
ev.Graphics.DrawRectangle(Pens.Black, xpos + largeurcol, ypos, largeurcol, hauteurligne)
'Ecriture des entêtes de colonnes. Les écritues se feront bien à l'intérieur des cadres
'car on n'a pas changé la valeur de ypos
ev.Graphics.DrawString("NOM ORGANISATEUR", f, Brushes.Black, xpos, ypos)
ev.Graphics.DrawString("COMMUNE", f, Brushes.Black, xpos + largeurcol, ypos)
debut = 0
ypos = ypos + hauteurligne
cpt = cpt + 1
'On boucle tant que le nb de lignes par page n'est pas atteint
While cpt < nblignes
'Ecriture du petit trait vertical figurant au début de chaque ligne
ev.Graphics.DrawLine(Pens.Black, xpos, ypos, xpos, ypos + hauteurligne)
ev.Graphics.DrawString(rdr.Item("nomorgan"), f, Brushes.Black, xpos, ypos)
'Ecriture du petit trait vertical figurant entre les 2 colonnes
ev.Graphics.DrawLine(Pens.Black, xpos + largeurcol, ypos, xpos + largeurcol, ypos + hauteurligne)
ev.Graphics.DrawString(rdr.Item("commune"), f, Brushes.Black, xpos + largeurcol, ypos)
'Ecriture du petit trait vertical figurant à la fin de chaque ligne
ev.Graphics.DrawLine(Pens.Black, xpos + largeurligne + 1, ypos, xpos + largeurligne + 1, ypos + hauteurligne)
ypos = ypos + hauteurligne
cpt = cpt + 1
resultat = rdr.Read()
If resultat = False Then
Exit While
End If
End While
'Ecriture du trait horizontal de fin de page
ev.Graphics.DrawLine(Pens.Black, xpos, ypos, xpos + largeurligne + 1, ypos)
'S'il y a encore des lignes, on réimprime une page
If resultat = True Then
ev.HasMorePages = True
numpage = numpage + 1
Else
ev.HasMorePages = False
'On repositionne à 1 la variable "debut" car quand l'utilisateur cliquera sur le bouton d'impression
' sur la fenêtre d'aperçu avant impression, il y a réexécution de cette procédure "impression_page"
debut = 1
rdr.Close()
End If
End Sub
End Class
dsl comment ça marche m'empêche de poster mon code... c'est pratique pour partager avec la communauté XD
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
T'es bien le seul à ne pouvoir mettre du code sur Comment ça marche.
Il faut bien des exceptions.
Un problème technique ?
Il faut bien des exceptions.
Un problème technique ?
c'est bon ... enfin non toujours pas .... !!!!!! je colle mon code je prévisualise tout se passe bien je fait répondre ça me l'affiche bien et dés que je rafraichie .... y a plus de réponse.
Bonjour,
Si tu ne peu pas poster ton code c'est qu'il contient des mots interdis sur CCM,
Mots grossiers..
ou tel c.r.a.c.k (sans les points bien sûre )
En MP y passe pas non plus ?
A+
EDIT :
je colle mon code je prévisualise tout se passe bien je fait répondre ça me l'affiche bien et dés que je rafraichie .... y a plus de réponse.
Tu dois cliquer sur le bouton Valider..
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
Si tu ne peu pas poster ton code c'est qu'il contient des mots interdis sur CCM,
Mots grossiers..
ou tel c.r.a.c.k (sans les points bien sûre )
En MP y passe pas non plus ?
A+
EDIT :
je colle mon code je prévisualise tout se passe bien je fait répondre ça me l'affiche bien et dés que je rafraichie .... y a plus de réponse.
Tu dois cliquer sur le bouton Valider..
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
mon post c'est "bonjour , voici mon code : < code > " donc .... je sais pas j'ai encore réessayé ça ne veut toujours pas :/ suis - je ban,interdit de post, y a t'il des limite de taille pour les réponse ?? :/
Bonjour Youra87,
Je dois te donner quelques explications à ce sujet.
Ce site est un forum de discussion .. pas vraiment fait pour poster des long codes voire plusieurs fichiers.
On utilise une astuces pour poster des fichier .. on les dépose sur un site de stockage, tel que www.cjoint.com où on peut choisir privé ou non, la durée de stockage, etc.
La personne qui dépose son fichier récupère le lien et le poste avec son message, pour que ceux qui veulent aidé puisse le récupérer et, éventuellement, travailler dessus.
Attention, les codes et fichiers ne doivent pas contenir d'éléments confidentiels ou des données personnelles.
Bon dimanche,
Heliotte.
Je dois te donner quelques explications à ce sujet.
Ce site est un forum de discussion .. pas vraiment fait pour poster des long codes voire plusieurs fichiers.
On utilise une astuces pour poster des fichier .. on les dépose sur un site de stockage, tel que www.cjoint.com où on peut choisir privé ou non, la durée de stockage, etc.
La personne qui dépose son fichier récupère le lien et le poste avec son message, pour que ceux qui veulent aidé puisse le récupérer et, éventuellement, travailler dessus.
Attention, les codes et fichiers ne doivent pas contenir d'éléments confidentiels ou des données personnelles.
Bon dimanche,
Heliotte.