wouldsmina
Messages postés18Date d'inscriptionlundi 2 juin 2003StatutMembreDernière intervention 8 mars 2007
-
14 févr. 2007 à 09:56
sobullshit
Messages postés178Date d'inscriptionvendredi 9 février 2007StatutMembreDernière intervention 8 juin 2007
-
14 févr. 2007 à 16:18
bonjour,
j'ai recuperer du code sur un forum pour imprimer un fichier texte, il marche bien, mais il n'y a aucun commentaire. Vue que je suis debutant, je n'arrive pas a le modeler a ma "sauce", car j'ai besoin qu'il effectue un saut de ligne toutes les trois ligne (chose faite dans le fichier texte), mais pas moyen de comprendre, tous s'imprime sans aucun saut!!!
voila le code :
public class frm
Dim FichierTexte As StreamReader
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim ValMarge As Integer = Printing.PrinterUnitConvert.Convert(100, PrinterUnit.TenthsOfAMillimeter, PrinterUnit.Display)
With Me.PrintDocument1.DefaultPageSettings
.Landscape = False
.Color = False
.Margins = New Printing.Margins(ValMarge, ValMarge, ValMarge, ValMarge)
End With
FichierTexte = New StreamReader("c:\etiq\fichier.txt")
Me.PrintDocument1.Print()
FichierTexte.Close()
End Sub
Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
Dim YPos As Single = 0
Dim cmpt As Integer = 0
Dim MargeG As Single = e.MarginBounds.Left
Dim MargeH As Single = e.MarginBounds.Top
Dim LigneEnCours As String = Nothing
Dim Police As New Font("Arial", 6)
Dim RectSortie As New SizeF
If LigneEnCours Is Nothing Then
Exit While
End If
RectSortie = e.Graphics.MeasureString(LigneEnCours, Police, e.MarginBounds.Width, New StringFormat())
e.Graphics.DrawString(LigneEnCours, Police, Brushes.Black, New RectangleF(MargeG, YPos, e.MarginBounds.Width, RectSortie.Height), New StringFormat())
YPos = YPos + RectSortie.Height
End While
If Not (LigneEnCours Is Nothing) Then
e.HasMorePages = True
Else
e.HasMorePages = False
End If
End Sub
End class
voila si quelqu'un pouvait m'expliquer comment faire, je serait tres content.
sobullshit
Messages postés178Date d'inscriptionvendredi 9 février 2007StatutMembreDernière intervention 8 juin 2007 14 févr. 2007 à 15:08
public class frm
Dim FichierTexte As StreamReader
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim ValMarge As Integer = Printing.PrinterUnitConvert.Convert(100, PrinterUnit.TenthsOfAMillimeter, PrinterUnit.Display)
With Me.PrintDocument1.DefaultPageSettings
.Landscape = False
.Color = False
.Margins = New Printing.Margins(ValMarge, ValMarge, ValMarge, ValMarge)
End With
FichierTexte = New StreamReader("c:\etiq\fichier.txt")
Me.PrintDocument1.Print()
FichierTexte.Close()
End Sub
Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
'Déclaration des variables
Dim YPos As Single = 0
Dim cmpt As Integer = 0
Dim MargeG As Single = e.MarginBounds.Left
Dim MargeH As Single = e.MarginBounds.Top
Dim LigneEnCours As String = Nothing
Dim Police As New Font("Arial", 6)
Dim RectSortie As New SizeF
'tu défini ta position de départ sur laxe Y
YPos = MargeH
'Si ta position sur laxe Y est inférieur à la position de la marge supérieur bah tu peu imprimé (jcroi jsui pa sur de ske le gars a écri pke kom jtai di le code jle li kan jfai le truc san tro réfléchir, mai un peu kan mm, un tt peti peu)
While YPos < MargeH + e.MarginBounds.Height
LigneEnCours = FichierTexte.ReadLine() 'tu met la ligne de ton fichier texte ds la variabl ligneencours
'si la variabl ligneencours est vide (ski veu dir ke ton fichier text est fini), tu quitte la partie impression
If LigneEnCours Is Nothing Then
Exit While
End If
'si la variabl n'est pas vide, bah là tu fai d tas de truc super compliké pour discuter avec ton imprimante ou je connai absolumen rien
RectSortie = e.Graphics.MeasureString(LigneEnCours, Police, e.MarginBounds.Width, New StringFormat())
e.Graphics.DrawString(LigneEnCours, Police, Brushes.Black, New RectangleF(MargeG, YPos, e.MarginBounds.Width, RectSortie.Height), New StringFormat())
'là tu te repositionne sur laxe Y pour imprimer la prochaine ligne (pour pa ke tu soi tjrs a la mm hauteur et ke ça écriv tjrs sur la mm ligne)
YPos = YPos + RectSortie.Height
'là c ma boucl ke ta demandé pour ke ça fass des saut kan timprime (je c pa si c'est comme ça que tu la modifié mai bon on sen fou)
i=i+1
if i = 3 then
LigneEnCours = Char(9)
RectSortie = e.Graphics.MeasureString(LigneEnCours, Police, e.MarginBounds.Width, New StringFormat())
e.Graphics.DrawString(LigneEnCours, Police, Brushes.Black, New RectangleF(MargeG, YPos, e.MarginBounds.Width, RectSortie.Height), New StringFormat())
i=0
End if
'Là tu quitte la partie impression pke ta position sur Y est ds la marge supérieure
End While
'si ta variabl ligneencours n'est pas vide, alors (jconnai pa le e.HasMorePages) ça di kil y a encore des truc à imprimé dans ton fichier, si c vide ça di ke ya plu rien a imprimer
If Not (LigneEnCours Is Nothing) Then
e.HasMorePages = True
Else
e.HasMorePages = False
End If
End Sub
End class
'là ton programme est fini donc tu peu metr ce que tu veu du momen que c'est inutile
sobullshit
Messages postés178Date d'inscriptionvendredi 9 février 2007StatutMembreDernière intervention 8 juin 2007 14 févr. 2007 à 10:45
Si tu débutes c'est peut-être pas le mieux de "pomper" directement le code, je pense qu'il vaut mieux bosser dessus et le faire à sa sauce pour le comprendre. Sinon comme j'suis un boeuf j'ai just rajouté qques lignes de codes qui (j'ai pa lu le code mais ça semble joli) devraient faire que toutes les 3 lignes tu imprime un ligne vide.
Si ça marche pas je pense que quelqu'un se fera une joie de dire que j'suis un blaireau de pas réussir à t'aider et que ce que je fais sert à rien.
public class frm
Dim FichierTexte As StreamReader
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim ValMarge As Integer = Printing.PrinterUnitConvert.Convert(100, PrinterUnit.TenthsOfAMillimeter, PrinterUnit.Display)
With Me.PrintDocument1.DefaultPageSettings
.Landscape = False
.Color = False
.Margins = New Printing.Margins(ValMarge, ValMarge, ValMarge, ValMarge)
End With
FichierTexte = New StreamReader("c:\etiq\fichier.txt")
Me.PrintDocument1.Print()
FichierTexte.Close()
End Sub
Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
Dim YPos As Single = 0
Dim cmpt As Integer = 0
Dim MargeG As Single = e.MarginBounds.Left
Dim MargeH As Single = e.MarginBounds.Top
Dim LigneEnCours As String = Nothing
Dim Police As New Font("Arial", 6)
Dim RectSortie As New SizeF
If LigneEnCours Is Nothing Then
Exit While
End If
RectSortie = e.Graphics.MeasureString(LigneEnCours, Police, e.MarginBounds.Width, New StringFormat())
e.Graphics.DrawString(LigneEnCours, Police, Brushes.Black, New RectangleF(MargeG, YPos, e.MarginBounds.Width, RectSortie.Height), New StringFormat())
YPos = YPos + RectSortie.Height
i=i+1
if i = 3 then
LigneEnCours = " "
RectSortie = e.Graphics.MeasureString(LigneEnCours, Police, e.MarginBounds.Width, New StringFormat())
e.Graphics.DrawString(LigneEnCours, Police, Brushes.Black, New RectangleF(MargeG, YPos, e.MarginBounds.Width, RectSortie.Height), New StringFormat())
i=0
End if
End While
If Not (LigneEnCours Is Nothing) Then
e.HasMorePages = True
Else
e.HasMorePages = False
End If
wouldsmina
Messages postés18Date d'inscriptionlundi 2 juin 2003StatutMembreDernière intervention 8 mars 2007 14 févr. 2007 à 11:12
merci pour ta reponse sobullshit, ton code marche presque, en fait j'ai essayer ta methode en ajoutant, a la place de ligneencours=" ", le retour chariot chr(13). bon ca n'a pas marché non plus, mais bizarrement avec une tabulation sur la ligne vide soit chr(9) le miracle c'est produit. Je compernd pas pourquoi mais bon...
mais ce n'est pas pour autant que je n'ai plus besoin d'aide, comme tu la dit il vaut mieux bosser dessus, alors si quelqu'un peut m'ajouter des commentaire sur le code pour que je comprenne mieux ce serai bien, Genre un boeuf en vb quoi.
Vous n’avez pas trouvé la réponse que vous recherchez ?