Arnoid
Messages postés35Date d'inscriptionmardi 17 février 2015StatutMembreDernière intervention 5 novembre 2016
-
Modifié par ucfoutu le 16/08/2016 à 19:25
Arnoid
Messages postés35Date d'inscriptionmardi 17 février 2015StatutMembreDernière intervention 5 novembre 2016
-
17 août 2016 à 18:22
Bonjour,
J'essaye en vain depuis un bout de temps de faire une sorte de tabulation dans un RichTextBox, mais je n'y arrive pas.
J'ai trouver la fonction String.Format({0,-3} {1,-25},str1,str2) qui est sensé aligner mon str1 à gauche dans un champ texte de 3 caractères puis mon str2 aussi à gauche mais dans une zone de 25 caractères.
Hélas je ne sais pas pourquoi mais quand je fais :
Arnoid
Messages postés35Date d'inscriptionmardi 17 février 2015StatutMembreDernière intervention 5 novembre 20161 17 août 2016 à 13:53
Résolu par vb95 :
Bonjour Arnoid ainsi qu'à Ucfoutu
Le contrôle dans lequel s'affiche le texte doit avoir une Font proportionnelle, c'est-à-dire que les espaces doivent occuper autant de place qu'une lettre .
Essayes avec le Font "Consolas" dans la propriété Font du contrôle où le texte est affiché
Une Form, une TextBox multiligne avec sa propriété Font sur "Consolas" et le code suivant
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim string1() As String
Dim string2() As String
Dim string3() As String
string1 = {"3", "4", "6"}
string2 = {"Bière", "Pizza 4 fromages", "Sandwich"}
string3 = {"6.3", "40.9", "18.62"}
For i As Integer = 0 To 2
TextBox1.Text += String.Format("{0,-3} {1,-25} {2,10}", string1(i), string2(i), string3(i)) & Environment.NewLine
Next
End Sub
End Class
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018212 16 août 2016 à 19:27
Bonjour,
J'ai :
1) mis ton code entre balises code
2) déplacé ta discussion vers le sous-forum (VB.Net) adéquat
3) ajouté des représentations graphiques de tes résultats pour éviter des va-et-viens entre tes deux liens.
Un VB.Nettiste devrait passer par là (je n'en suis pas un)
Arnoid
Messages postés35Date d'inscriptionmardi 17 février 2015StatutMembreDernière intervention 5 novembre 20161 16 août 2016 à 19:29
Bonsoir, ucfoutu
Merci d'avoir fait cela, je m'excuse de ne pas avoir choisi le bon sous-forum.
Bonne soirée
vb95
Messages postés3416Date d'inscriptionsamedi 11 janvier 2014StatutContributeurDernière intervention31 mai 2023165
>
Arnoid
Messages postés35Date d'inscriptionmardi 17 février 2015StatutMembreDernière intervention 5 novembre 2016 Modifié par vb95 le 17/08/2016 à 13:42
Bonjour Arnoid ainsi qu'à Ucfoutu
Le contrôle dans lequel s'affiche le texte doit avoir une Font proportionnelle : c'est-à-dire que les espaces doivent occuper autant de place qu'une lettre .
Essayes avec le Font "Consolas" dans la propriété Font du contrôle où le texte est affiché
Une Form, une TextBox multiligne avec sa propriété Font sur "Consolas" et le code suivant
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim string1() As String Dim string2() As String Dim string3() As String
For i As Integer = 0 To 2 TextBox1.Text += String.Format("{0,-3} {1,-25} {2,10}", string1(i), string2(i), string3(i)) & Environment.NewLine Next
End Sub End Class
Arnoid
Messages postés35Date d'inscriptionmardi 17 février 2015StatutMembreDernière intervention 5 novembre 20161
>
vb95
Messages postés3416Date d'inscriptionsamedi 11 janvier 2014StatutContributeurDernière intervention31 mai 2023 17 août 2016 à 13:42
Bonjour vb95
Le texte est d'abord créer dans une simple string je doit donc déclarer une richtextbox par le code qui ne serait pas visible sur mon contrôle ?
Mais ensuite je met mon string dans une
RichTextBoxPrintCtrl
Qui est un dériver de
richtextbox
me permettant d'imprimer avec la mise en forme "facilement", et je n'arrive pas à changer sa police..
Merci votre réponse !
Arnoid
Messages postés35Date d'inscriptionmardi 17 février 2015StatutMembreDernière intervention 5 novembre 20161
>
vb95
Messages postés3416Date d'inscriptionsamedi 11 janvier 2014StatutContributeurDernière intervention31 mai 2023 Modifié par Arnoid le 17/08/2016 à 13:48
D'accord je viens de voir la modification !
Merci beaucoup je test cela tout de suite !
Modif : Génial merci encore cela fonctionne parfaitement !
vb95
Messages postés3416Date d'inscriptionsamedi 11 janvier 2014StatutContributeurDernière intervention31 mai 2023165
>
Arnoid
Messages postés35Date d'inscriptionmardi 17 février 2015StatutMembreDernière intervention 5 novembre 2016 17 août 2016 à 14:12
Arnoid
Messages postés35Date d'inscriptionmardi 17 février 2015StatutMembreDernière intervention 5 novembre 20161 17 août 2016 à 13:34
J'ai aussi découvert depuis peu la fonction
vbTab.PadRight(nbr)
qui aligne la chaîne soit à droite soit à gauche en rajoutant des espaces.
Mais toujours le même problème ..
vb95
Messages postés3416Date d'inscriptionsamedi 11 janvier 2014StatutContributeurDernière intervention31 mai 2023165 Modifié par vb95 le 17/08/2016 à 14:08
Le problème vient du fait que la police de caractères utilisée n'est pas proportionnelle !
Que tu alignes avec String.Format ou PadRight ou PadLeft ou une fonction codée par toi-même le problème restera toujours !
Tu dois travailler avec une RichTextBox classique avec une Font proportionnelle puis ensuite pour imprimer envoyer le contenu de cette RichTextbox dans RichTextBoxPrintCtrl
cgandco
Messages postés219Date d'inscriptionmercredi 26 octobre 2011StatutMembreDernière intervention22 juin 20179 17 août 2016 à 14:34
Bonjour,
Juste trop tard mais bon.
Si tu fais comme ceci, (c'est du c# mais facile a traduire) cela devrait fonctionner avec toutes les polices de caractères.
Arnoid
Messages postés35Date d'inscriptionmardi 17 février 2015StatutMembreDernière intervention 5 novembre 20161
>
cgandco
Messages postés219Date d'inscriptionmercredi 26 octobre 2011StatutMembreDernière intervention22 juin 2017 17 août 2016 à 14:48
Bonjour cgandco
Merci de votre réponse, j'ai regarder cela pourrais m'aider pour la suite de mon programme, merci !
Bonne journée
vb95
Messages postés3416Date d'inscriptionsamedi 11 janvier 2014StatutContributeurDernière intervention31 mai 2023165
>
cgandco
Messages postés219Date d'inscriptionmercredi 26 octobre 2011StatutMembreDernière intervention22 juin 2017 Modifié par vb95 le 17/08/2016 à 15:07
bonjour cgandco
Ton code en C# ne fait que poser des taquets de tabulation
Ce qui fait que les différents éléments seront tous alignés à gauche à partir du taquet : il n'est pas possible de faire de l'alignement à droite sauf si on utilise une police proportionnelle et que l'on calcule l'alignement pour chaque élément à droite ( soit le nombre d'espaces à inclure à gauche de l'élément)
De plus les offsets de tabulation sont exprimés en pixels
Beaucoup moins souple et performant que String.Format tel qu'utilisé plus haut
Ce code imprime une sorte de photo du datagridview, moi je voudrais plutôt sous forme de texte basique.
Merci quand même.
Bonne journée
cs_ShayW
Messages postés3253Date d'inscriptionjeudi 26 novembre 2009StatutMembreDernière intervention 3 décembre 201957
>
Arnoid
Messages postés35Date d'inscriptionmardi 17 février 2015StatutMembreDernière intervention 5 novembre 2016 17 août 2016 à 15:45
Cela imprime ton dgv comme il est
fais un petit test
ajoute à ta form 3 controls
PrintDocument
PrintPreviewDialog
et un button
Button1_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Button1.MouseClick
If PrintPreviewDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then PrintPreviewDialog1.Document.Print() End If
End Sub
Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage Dim bm As New Bitmap(DataGridresult.Width, DataGridresult.Height) DataGridresult.DrawToBitmap(bm, New Rectangle(0, 0, DataGridresult.Width, DataGridresult.Height)) e.Graphics.DrawImage(bm, 0, 0) End Sub
ps DataGridresult c'est le nom de ta datagridview
Arnoid
Messages postés35Date d'inscriptionmardi 17 février 2015StatutMembreDernière intervention 5 novembre 20161
>
cs_ShayW
Messages postés3253Date d'inscriptionjeudi 26 novembre 2009StatutMembreDernière intervention 3 décembre 2019 Modifié par Arnoid le 17/08/2016 à 16:02
Merci ShayW
J'avais déjà testé précédemment mais je doit rajouter une en tête centrer et cela ne m'arrange pas pour le datagridview.