PrintForm et visual basic 2012 express

BORISDETOURS
Messages postés
16
Date d'inscription
dimanche 22 octobre 2017
Statut
Membre
Dernière intervention
10 novembre 2017
- 22 oct. 2017 à 11:07
BORISDETOURS
Messages postés
16
Date d'inscription
dimanche 22 octobre 2017
Statut
Membre
Dernière intervention
10 novembre 2017
- 26 oct. 2017 à 11:49
Bonjour à tous
J'essai vainement d'obtenir un code pour imprimer mes forms, mais rien ne marche.
Il semble que pour obtenir il faut installer le contrôle PrintForm mais je ne trouve pas la solution. J'ai consulté toutes les pages trouvées sur MSDN mais les solutions sont ou trop complexes ou ne donnent rien.
Il semble que je doive passer par le PowerPacks.PrintForm, je l'ai téléchargé mais impossible de le lier avec VB 2012 Express.
Quelqu'un peut-il m'indiquer un code ou me donner la page ou tout est expliqué clairement! Merci Microsoft car le Print Form de VB6 était bien plus simple.
Le cas échéant je recherche un programmeur qui puisse me finaliser mon programme ou en réaliser un suivant un cahier des charges.
Merci.

2 réponses

vb95
Messages postés
3056
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
22 septembre 2022
158
22 oct. 2017 à 11:15
bonjour
A tester

X-H-1-f. Imprime le formulaire en cours

Exemple fournit par Microsoft.
La routine CaptureScreen capture l'image du formulaire en cours et la met dans memoryImage. puis memoryImage est passé dans l'objet graphique e qui est imprimé.
 
Private Declare Function BitBlt Lib "gdi32.dll" Alias "BitBlt" (ByVal _
hdcDest As IntPtr, ByVal nXDest As Integer, ByVal nYDest As _
Integer, ByVal nWidth As Integer, ByVal nHeight As Integer, ByVal _
hdcSrc As IntPtr, ByVal nXSrc As Integer, ByVal nYSrc As Integer, _
ByVal dwRop As System.Int32) As Long
Dim memoryImage As Bitmap
Private Sub CaptureScreen()
Dim mygraphics As Graphics = Me.CreateGraphics()
Dim s As Size = Me.Size
memoryImage = New Bitmap(s.Width, s.Height, mygraphics)
Dim memoryGraphics As Graphics = Graphics.FromImage(memoryImage)
Dim dc1 As IntPtr = mygraphics.GetHdc
Dim dc2 As IntPtr = memoryGraphics.GetHdc
BitBlt(dc2, 0, 0, Me.ClientRectangle.Width, _
Me.ClientRectangle.Height, dc1, 0, 0, 13369376)
mygraphics.ReleaseHdc(dc1)
memoryGraphics.ReleaseHdc(dc2)
End Sub
Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, _
ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles _
PrintDocument1.PrintPage
e.Graphics.DrawImage(memoryImage, 0, 0)
End Sub
Private Sub PrintButton_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles PrintButton.Click
CaptureScreen()
PrintDocument1.Print()
End Sub


Exemple tiré d'un cours sur VB Net disponible ici : http://plasserre.developpez.com/cours/vb-net/e
0
BORISDETOURS
Messages postés
16
Date d'inscription
dimanche 22 octobre 2017
Statut
Membre
Dernière intervention
10 novembre 2017

23 oct. 2017 à 10:13
Merci de votre réponse, mais le code génère des erreurs que j'ai essayé de corriger, résultat j'imprime bien mais la page est blanche!
J'avais déjà expérimenté ce code des cours de PLASSERRE et bien d'autres mais il me semble qu'il me faille absolument le contrôle PrintForm que je ne peut obtenir qu'en passant par le PowerPack.Printing.PrintForm.
que je ne parvient pas à implanter dans VB Express.
J'attends d'autres résultats!
0
cs_Le Pivert
Messages postés
7822
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
16 septembre 2022
133
23 oct. 2017 à 12:02
0
BORISDETOURS
Messages postés
16
Date d'inscription
dimanche 22 octobre 2017
Statut
Membre
Dernière intervention
10 novembre 2017

23 oct. 2017 à 17:50
Merci pour tes codes mais ce n'est pas ce que je cherche, mon programme est destiné à créer des devis et ce que je veux imprimer c'est les forms qui présentent mon devis et son déboursé à l'écran puis à l'imprimer par le contrôle PrintForm équivalent à celui qui existait dans VB6 et qui était d'une grande simplicité.
J'ai déjà réalisé un prototype sur VB6 qui fonctionnait mais j'ai eu des soucis avec les fichiers aléatoires et je me suis rabattu sur VB2010.net
Mon besoin :
J'exécute le programme, je construit le devis dans ma 1° form appelée MENUDEVIS et la 2° appelée DEBOURSE et lorsque j'ai terminé un bouton installé sur chacune de mes Form me permets d'enregistrer le devis et de l'imprimer.
Mon problème c'est que le contrôle PrintForm est un complément qui n'existe pas dans ma version de VB 2010 Express, pour l'avoir, il faut télécharger le pack PowerPack.PrintForm , ce que j'ai fait mais je ne sais pas comment l'intégrer dans VB Express.
Merci encore de ta réponse.
0
vb95
Messages postés
3056
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
22 septembre 2022
158 > BORISDETOURS
Messages postés
16
Date d'inscription
dimanche 22 octobre 2017
Statut
Membre
Dernière intervention
10 novembre 2017

Modifié le 23 oct. 2017 à 18:40
Bonsoir
Je viens d'essayer le code que je vous ai fourni
Et il fonctionne très bien en affichant et en imprimant avec le bouton adéquat la Form courante avec le contrôle PrintDocument fourni de base avec Visual Studio ( le contrôle Printdocument existe depuis la version 1.1 du Framework Net )

Le code est déposé ici : http://codes-sources.commentcamarche.net/source/102239-imprimer-la-form-courante
0
BORISDETOURS > vb95
Messages postés
3056
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
22 septembre 2022

23 oct. 2017 à 20:35
Merci je dois être nul mais je ressaie demain matin,
Je ne manquerai pas de vous envoyer les erreurs que j’ai faites pour essayer de ma corriger... A+
0
BORISDETOURS
Messages postés
16
Date d'inscription
dimanche 22 octobre 2017
Statut
Membre
Dernière intervention
10 novembre 2017
> BORISDETOURS
24 oct. 2017 à 11:17
Bon, j'ai essayé, j'ai créé un projet neuf, une form neuve, mis un bouton dedans, et j'ai mis le code qui va bien.
Top, pas de message d'erreur sauf que la page qui sort de l'imprimante est blanche!
Question, ne faut t'il pas quelque part déclarer le nom Form1?
Je trouve cela bien compliqué, je reste persuadé que le contrôle PrintForm doit être une bien meilleure solution car d'après ce que j'ai lu sur MSDN c'est exactement ce que je recherche.
Merci quand même.
0
vb95
Messages postés
3056
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
22 septembre 2022
158 > BORISDETOURS
Messages postés
16
Date d'inscription
dimanche 22 octobre 2017
Statut
Membre
Dernière intervention
10 novembre 2017

Modifié le 24 oct. 2017 à 14:13
Bonjour
Je viens de réessayer le code du projet que j'ai déposé : il fonctionne correctement .
As-tu mis le contrôle PrintDocument sur ta Form ? La Sub PrintDocument_PrintPage a-t-elle bien un Handles Printdocument.PrintPage comme évènement ?
0