Comparaison 2 chaines de caractère LB et impression
Tursiop60
Messages postés38Date d'inscriptionsamedi 20 juin 2009StatutMembreDernière intervention12 septembre 2011
-
28 août 2010 à 01:19
Tursiop60
Messages postés38Date d'inscriptionsamedi 20 juin 2009StatutMembreDernière intervention12 septembre 2011
-
29 août 2010 à 10:15
Bonsoir à tous,
Je viens chercher de l'aide car j'ai un petit problème. Voilà ce que je souhaite faire avec mon programme :
J'ai 2 listbox : listbox3 remplie avec un dataset et l'autre (listbox4) remplie avec une textbox. Sur le formulaire il y a un bouton imprimer et quand on clique dessus, on imprime le contenu de listbox4. Jusque-là pas de souci mais la mise en page est un peu particulière car je ne veux pas simplement imprimer ligne par ligne.
Ce que je voudrais faire c'est :
1/ imprimer item de listbox4 sur une même ligne jusqu'à ce qu'un item corresponde à un item de listbox3
2/ à ce moment là : saut de ligne puis on recommence
J'ai fais ce petit code avec 2 boucles mais ça ne fonctionne pas :
Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
Dim cmptBox4, cmptBox3 As Single
Dim Police As New Font("Book Antiqua", 11)
Dim PoliceG As New Font("Book Antiqua", 11, FontStyle.Bold)
Dim YPos As Single = 100
Using MyGr As Graphics = e.Graphics
Dim SautLigne As Single = MyGr.MeasureString("X", PoliceG).Height
Dim i As Single = 1
For cmptBox4 = 0 To ListBox4.Items.Count - 1
Dim Longueur As Single = MyGr.MeasureString("Séance n° " & i & " : ", Police).Width
Dim bool As Boolean
MyGr.DrawString("Séance n° " & i & " : ", Police, Brushes.Black, 50, YPos)
For cmptBox3 = 0 To ListBox3.Items.Count - 1
bool = ListBox4.Items(cmptBox4).ToString.Equals(ListBox3.Items(cmptBox3).ToString)
If bool = True Then
MyGr.DrawString(ListBox4.Items(cmptBox4).ToString(), Police, Brushes.Black, 50 + Longueur, YPos)
End If
Next
YPos = YPos + SautLigne
i = i + 1
Next
End Using
J'espère avoir été assez clair, merci à ceux qui voudront bien m'aider.
Bonsoir,
Comme tu as écrit ta boucle, elle ne lit cmptBox4 qu'une seule fois et a chaque itération elle lit l'ensemble de cmptbox3
D'apres ce que tu cherche à faire ca serait plutôt l'inverse : lire cmptbox3 plusieurs fois et a chaque item comparer avec tous les items de cmptbox4
a bientôt
Pour ceux que ça intéresse, au final mon code donne :
Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
Dim cmptBox4 As Single
Dim Police As New Font("Book Antiqua", 10)
Dim PoliceG As New Font("Book Antiqua", 10, FontStyle.Bold)
Dim YPos As Single = 100
Using MyGr As Graphics = e.Graphics
Dim SautLigne As Single = MyGr.MeasureString("X", PoliceG).Height
Dim i As Single = 1
Dim Str As String = ""
For cmptBox4 = 0 To ListBox4.Items.Count - 1
Dim index As Integer = ListBox3.FindString(ListBox4.Items(cmptBox4).ToString)
Dim Longueur As Single = MyGr.MeasureString("Séance n° " & i & " : ", Police).Width
Str = Str & " + " & ListBox4.Items(cmptBox4).ToString()
If index <> -1 Then
MyGr.DrawString("Séance n° " & i & " : ", PoliceG, Brushes.Black, 50, YPos)
Str = Strings.Right(Str, Len(Str) - 3)
MyGr.DrawString(Str, Police, Brushes.Black, 55 + Longueur, YPos)
YPos = YPos + SautLigne
Str = ""
i = i + 1
End If
Next
End Using
End Sub