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.
A voir également:

2 réponses

vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
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 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
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 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169 > 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 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024
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 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169 > 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
Rejoignez-nous