Mettre des tab dans un richtextbox

[Résolu]
Signaler
Messages postés
486
Date d'inscription
mardi 24 octobre 2000
Statut
Membre
Dernière intervention
23 mars 2019
-
Messages postés
486
Date d'inscription
mardi 24 octobre 2000
Statut
Membre
Dernière intervention
23 mars 2019
-
Bonjour

Je souhaite faire un tableau dans un richtextbox, pour afficher des inventaires et pouvoir les imprimer.

Voici un exemple de mon travail.

Par contre je souhaite aligner mes tabulations , pour que les signes | soient alignés.
 RichTextBox1.SelectionIndent 30 : RichTextBox1.SelectedText CODEPLU            RichTextBox1.SelectedText vbTab : RichTextBox1.SelectedText " | "            RichTextBox1.SelectedText vbTab : RichTextBox1.SelectedText DESIGN ': Espace(nbDES)

J'ai essayé vbTab(10), mais j'ai une erreur "L'index se trouve en dehors du tableau"

Merci de m'aider je ne c'est pas quoi faire continuer avec Richtextbox ou un autre controle ????
Je developpe en VB2005 express

MANUANTIBES [:p]

6 réponses

Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
35
Un petit exemple (pas très bien fait, c'est juste pour te mettre sur la voie) :

Private Tab(,) As String = {{"Ligne 1", "Colonne 12", "Colonne 13"}, {"Ligne 2", "Colonne 22", "Colonne 23"}}

Private Sub DrawTab(ByVal g As System.Drawing.Graphics)
  Const RowHeight As Integer = 20
  Const ColWidth As Integer = 90
  For iRow As Integer = 0 To Tab.GetUpperBound(0)
    g.DrawLine(System.Drawing.Pens.Black, 0, (iRow + 1) * RowHeight, g.ClipBounds.Width, (iRow + 1) * RowHeight)
    For iCol As Integer = 0 To Tab.GetUpperBound(1)
      g.DrawString(Tab(iRow, iCol), MyBase.Font, System.Drawing.Brushes.Black, iCol * ColWidth + 3, iRow * RowHeight + 3)
  Next iCol, iRow
  For iCol As Integer = 0 To Tab.GetUpperBound(1)
    g.DrawLine(System.Drawing.Pens.Black, (iCol + 1) * ColWidth, 0, (iCol + 1) * ColWidth, g.ClipBounds.Height)
  Next iCol
End Sub

Private Sub PicTab_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PicTab.Paint
  Call DrawTab(e.Graphics)
End Sub

' Pour imprimer (on utilise un PrintDocument)
Private Sub TonPrintDocument_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles TonPrintDocument.PrintPage
  Call DrawTab(e.Graphics)
End Sub, ----
(Coloration syntaxique automatique par Kenji)

__________
Kenji
Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
35
Salut,

En effet, je ne pense pas qu'une RichTextBox soit bien approprié pour ca.
Le mieux, je pense, et de dessiner toi même ton tableau avec les outils du gdi.
Si tu dessine dans une PictureBox que tu place dans une panel avec AutoScroll, sa te placera tout seul la ScrollBar.






__________
Kenji
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
126
Oui ou utiliser directement les outils de reporting qui sont fait pour cà, ce sera bien plus simple !
Messages postés
486
Date d'inscription
mardi 24 octobre 2000
Statut
Membre
Dernière intervention
23 mars 2019
4
Merci pour vos reponses.

Pour la reponse de Charles Racaud, c'est quoi le gdi ??? , et si je place le tous dans une picturebox est ce que je vais pouvoir imprimer toutes les lignes ???

Pour la reponse de DARKISIDIOUS , je suis avec la version express de VB 2005, je n'ai pas le reporting je crois !!!

MANUANTIBES [:p]
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
Pour le cas ou tu souhaiterais conserver la RTB, il te faut utiliser une police à espacement fixe style Courrier New. Mais ça sera moins joli comme affichage

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
486
Date d'inscription
mardi 24 octobre 2000
Statut
Membre
Dernière intervention
23 mars 2019
4
Merci pour ton bout de code Charles.
Ca va bien me servir
A+

MANUANTIBES [:p]