Impression sur papier pour un logiciel VB.net
Fermé
Gradi
Messages postés
16
Date d'inscription
vendredi 7 décembre 2012
Statut
Membre
Dernière intervention
27 décembre 2012
-
27 déc. 2012 à 10:32
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 - 27 janv. 2013 à 18:42
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 - 27 janv. 2013 à 18:42
A voir également:
- Impression sur papier pour un logiciel VB.net
- Spouleur d'impression - Guide
- Money logiciel - Télécharger - Comptabilité & Facturation
- Logiciel montage vidéo gratuit windows 10 - Guide
- Presse papier - Guide
- Logiciel gratuit pour modifier pdf - Guide
8 réponses
Youra87
Messages postés
47
Date d'inscription
mardi 10 avril 2012
Statut
Membre
Dernière intervention
20 décembre 2013
11
27 janv. 2013 à 12:11
27 janv. 2013 à 12:11
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
Youra87
Messages postés
47
Date d'inscription
mardi 10 avril 2012
Statut
Membre
Dernière intervention
20 décembre 2013
11
15 janv. 2013 à 15:14
15 janv. 2013 à 15:14
bonjour, envoie moi ton mail par MP, je peux te passer quelque chose ce soir si tu trouve pas
Heliotte
Messages postés
1491
Date d'inscription
vendredi 26 octobre 2012
Statut
Membre
Dernière intervention
28 janvier 2013
92
15 janv. 2013 à 16:11
15 janv. 2013 à 16:11
Bonjour Youra87,
Pourquoi ne pas faire profiter la communauté ?
En passant, meilleurs voeux.
Pourquoi ne pas faire profiter la communauté ?
En passant, meilleurs voeux.
Youra87
Messages postés
47
Date d'inscription
mardi 10 avril 2012
Statut
Membre
Dernière intervention
20 décembre 2013
11
17 janv. 2013 à 21:54
17 janv. 2013 à 21:54
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
Heliotte
Messages postés
1491
Date d'inscription
vendredi 26 octobre 2012
Statut
Membre
Dernière intervention
28 janvier 2013
92
18 janv. 2013 à 09:13
18 janv. 2013 à 09:13
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 ?
Youra87
Messages postés
47
Date d'inscription
mardi 10 avril 2012
Statut
Membre
Dernière intervention
20 décembre 2013
11
Modifié par Youra87 le 26/01/2013 à 11:42
Modifié par Youra87 le 26/01/2013 à 11:42
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.
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
Modifié par lermite222 le 26/01/2013 à 14:16
Modifié par lermite222 le 26/01/2013 à 14:16
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.
Youra87
Messages postés
47
Date d'inscription
mardi 10 avril 2012
Statut
Membre
Dernière intervention
20 décembre 2013
11
27 janv. 2013 à 12:14
27 janv. 2013 à 12:14
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 ?? :/
Heliotte
Messages postés
1491
Date d'inscription
vendredi 26 octobre 2012
Statut
Membre
Dernière intervention
28 janvier 2013
92
27 janv. 2013 à 13:13
27 janv. 2013 à 13:13
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.
Youra87
Messages postés
47
Date d'inscription
mardi 10 avril 2012
Statut
Membre
Dernière intervention
20 décembre 2013
11
27 janv. 2013 à 15:47
27 janv. 2013 à 15:47
ok c'est bon mon code est posté .. merci encore Heliotte a ne rien y comprendre, peut être parce que j'ai donné le nom de la personne qui est a l'origine de ce code :/ bon dimanche
Heliotte
Messages postés
1491
Date d'inscription
vendredi 26 octobre 2012
Statut
Membre
Dernière intervention
28 janvier 2013
92
27 janv. 2013 à 18:42
27 janv. 2013 à 18:42
Merci pour ton code Youra, la communauté peut en profiter à présent.
Heliotte.
Heliotte.