begin process at 2012 02 14 11:44:42
  Trouver un code source :
 
dans
 
Accueil > Forum > 

VB.NET et VB 2005

 > 

Divers

 > 

Aide & Documentation

 > 

Mise en page PrintDocument VB.NET


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Mise en page PrintDocument VB.NET

jeudi 20 mars 2008 à 18:25:23 | Mise en page PrintDocument VB.NET

antoineraymond

Bonjour

Dans une de mes applications, j'ai besoin d'imprimer automatiquement les exceptions.
Voici une partie du code que j'utilise:

Dim

WithEvents m_prdImprime As Printing.PrintDocument
Dim m_sbrMsg As System.Text.StringBuilder
PublicConst CrLf2 AsString = vbCrLf & vbCrLf

Private

Sub mprdImprime_PrintPage(ByVal sender AsObject, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles m_prdImprime.PrintPage
            e.Graphics.DrawString(m_sbrMsg.ToString,
New Font("Courier New", 8), Brushes.Black, 50, 50)
EndSub

Private

Sub PrintErreur(ByVal ErreurAs Exception)
      m_sbrMsg = New System.Text.StringBuilder

      With
m_sbrMsg
         .Append(
"Application : " & Application.ProductName & vbCrLf)
         .Append(
"Version : " & Application.ProductVersion & vbCrLf)
         .Append(
"Utilisateur : " & System.Security.Principal.WindowsIdentity.GetCurrent.Name & vbCrLf)
         .Append(
"Date : " & Now() & CrLf2 & vbCrLf)
         .Append(
"Message : " & Erreur.Message & CrLf2)
         .Append(
"Source : " & Erreur.Source & CrLf2 & vbCrLf)
         .Append(CrLf2 & Erreur.ToString)
         .Append(CrLf2)
      EndWith

      Dim m_prdImprime AsNew Printing.PrintDocument
      m_prdImprime.DefaultPageSettings.Landscape =
False
      m_prdImprime.Print()

EndSub

Le problème est que la partie Erreur.ToString est trop large pour la page. À la place de changer de ligne à l'impression, le texte est tout simplement coupé. J'aimerais savoir si il y a une façon de forcer le changement de ligne du texte trop long selon les dimensions de la page ou si vous avez une autre solution?

Merci

Antoine
mardi 25 mars 2008 à 14:18:13 | Re : Mise en page PrintDocument VB.NET

antoineraymond

Personne a d'idée.

Antoine
mercredi 28 juillet 2010 à 16:45:38 | Re : Mise en page PrintDocument VB.NET

imajneb


Salut,

Voici un exemple de code qui analyse le texte mot par mot afin de faire un retour a la ligne si le texte sort de la page:

'//Dessine le texte multiligne
Private Sub DrawStringMultiLine(ByVal MyTxt As String,ByVal Left As short, ByVal Top As short, ByVal g As Graphics)

Dim Xmax As Integer = Form1.PageSetupDialog1.PageSettings.PaperSize.Width - Form1.PageSetupDialog1.PageSettings.Margins.Right()
Dim Text_size As SizeF
Dim i As Integer, Tab() As String
Dim Font As System.Drawing.Font = New Font("Arial", 10, FontStyle.Bold)
Dim X As Single = Left, Spacing As Single = 1.5 'Intervale entre deux lignes
Dim YShift As Single = 0 'Décalage sur Y des lignes

Dim drawFormat As New StringFormat
drawFormat.Alignment = 0
drawFormat.Trimming = StringTrimming.Character
drawFormat.FormatFlags = StringFormatFlags.LineLimit
drawFormat.Trimming = StringTrimming.Word



'Si la chaine est trop longue, multiligne
If g.MeasureString(MyTxt, Font).Width + X - Xmax >= 0 Then
'Met la ligne dans un tableau séparé par des espaces
Tab = MyTxt.Split(" ")
MyTxt = Tab(0)

For i = 1 To UBound(Tab) 'On ajoute les mots un par un en messurant
'On messure la chaine de caractere
Text_size = g.MeasureString(MyTxt & " " & Tab(i), Font)

If Text_size.Width + X - Xmax >= 0 Then 'Si rentre pas, on dessine la ligne
g.DrawString(MyTxt, Font, Brushes.Black, Left, Top + YShift, drawFormat )
YShift = YShift + Spacing
MyTxt = Tab(i)
Else
'on ajoute le mot
MyTxt = MyTxt & " " & Tab(i)
End If
Next
End If

'Dessine la derniere ligne avant de sortir
g.DrawString(MyTxt, Ctl.Font, Brushes.Black, Left, Top + YShift, drawFormat )

End Sub


Cette discussion est classée dans : page, vbcrlf, append, crlf2, prdimprime


Répondre à ce message

Sujets en rapport avec ce message

MAILTO et Outlook Expres [ par surfzoid ] Bonjour a tous. Je developpe sous VB Express 2005 un soft qui doit me faire parvenir un mail pour une gestion de licence, j'ai donc opté pour le MAILT Utilisation des modules Winsock By Akhenathon ! [ par tchicken ] Bonjour à tous, J'essaie de télécharger des pages web sur le site paris-turf, j'utilise pour ça les modules Winsock développés par Akhenathon (www.my Ouvrir un page web grâce un mot de passe - sans créer un base de données [ par ulysseriotmosse ] Voilà je cherche à contrôler l'accés un page web par un mot de passe, pour différencier les clients professionnels et les particuliers sans me compliq IIS6 et ASP.net (Framework 2) [ par Nexto ] Bonsoir,Vu que le Framework 2.0.50727 est sorti il y a déjà un petit temps et que avant sur mon serveur j'étais encore avec le Framework BETA (serveur asp appelé un autre page asp [ par sylbar84 ] bonjour,J'ai beaucoup chercher et je n'arrive pas a trouvé comment utilisé call pour appeler une page asp qui me sert a compilé des stat sur un visite Auto incrementation [ par bmikl59 ] Voila, je crée une table dont la cle primaire doit s'incrementer de 1 a chaque nouvel enregistrement. Pour cela j'utilise la propriete dbAutoIncrField Validation d'un formulaire à partir d'un autre formulaire [ par isame ] slt à tous!! voilà je voudrais savoir s'il est possible de pouvoir valider un formulaire se trouvant sur une page (page1.php) à partir d'une autre pag Validation d'un formulaire à partir d'un autre formulaire [ par isame ] slt à tous!! voilà je voudrais savoir s'il est possible de pouvoir valider un formulaire se trouvant sur une page (page1.php) à partir d'une autre pag Validation d'un formulaire à partir d'un autre formulaire [ par isame ] slt à tous!! voilà je voudrais savoir s'il est possible de pouvoir valider un formulaire se trouvant sur une page (page1.php) à partir d'une autre pag page acceuil [ par jesus_is_back ] bonjour je suis oqp a faire un jeu de course(flash) mais je veu faire une page d'acceuil(avec des boutons : jouer,instructions,etc)merci de me répondr


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,593 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales