none
Rtf changer de police. RRS feed

  • Question

  • Salut !

    Je souhaite afficher un texte avec chaque police. Mon code ne marche pas.

    Str = InputBox("Exemple", "Tapez quelque chose :")
    Form1.RichTextBox1.Text = ""
    For I = 0 To FontFamily.Families.Length - 1
        Form1.RichTextBox1.SelectionFont = New Font("Arial", Form1.NumericUpDownTaille.Value)
        Form1.RichTextBox1.Rtf &= "Police : " & FontFamily.Families(I).Name & vbNewLine
        Form1.RichTextBox1.SelectionFont = New Font(FontFamily.Families(I).Name, Form1.NumericUpDownTaille.Value)
        Form1.RichTextBox1.Rtf &= Str & vbNewLine & vbNewLine
    Next
    
    Quelqu'un a une idée ?

    Merci

    lundi 18 janvier 2016 21:06

Réponses

  • Plusieurs choses:

    -vous uilisez Form1.RichTextBox1...cela veut probablement dire que vous faites cela depuis une autre form... il est possible que vous ayez besoin d'un Delegate...Vous ne dites pas si vous avez une erreur...

    -Str n'est pas un nom recommendable pour une chaîne... c'est une fonction de conversion...il faut éviter d'utiliser des noms qui prêtent à confusion...

    Le code suivant fonctionne:

    Dim strText As String = "The quick brown fox jumps over the lazy dogs"
    
            For I = 0 To FontFamily.Families.Length - 1
                RichTextBox1.SelectionFont = New Font("Arial", 12)
                RichTextBox1.AppendText("Police : " & FontFamily.Families(I).Name & vbNewLine)
                RichTextBox1.SelectionFont = New Font(FontFamily.Families(I).Name, 12)
                RichTextBox1.AppendText(strText & vbNewLine & vbNewLine)
            Next
            RichTextBox1.ScrollToCaret()

    Voici une capture de la RTB avec des Fonts affichées:

    Pas sûr de comment utiliser RichTextBox1.Rtf , peut être avec du texte formaté rtf par exemple RichTextBox1.rtf =@"{\rtf1\ansi This is some \b bold\b0 text.}"

    .


    Cyrille Precetti
    Bonne Année! Happy New Year!

    Marquez comme réponse ou votez si cela vous a aidé


    lundi 18 janvier 2016 21:57

Toutes les réponses

  • Plusieurs choses:

    -vous uilisez Form1.RichTextBox1...cela veut probablement dire que vous faites cela depuis une autre form... il est possible que vous ayez besoin d'un Delegate...Vous ne dites pas si vous avez une erreur...

    -Str n'est pas un nom recommendable pour une chaîne... c'est une fonction de conversion...il faut éviter d'utiliser des noms qui prêtent à confusion...

    Le code suivant fonctionne:

    Dim strText As String = "The quick brown fox jumps over the lazy dogs"
    
            For I = 0 To FontFamily.Families.Length - 1
                RichTextBox1.SelectionFont = New Font("Arial", 12)
                RichTextBox1.AppendText("Police : " & FontFamily.Families(I).Name & vbNewLine)
                RichTextBox1.SelectionFont = New Font(FontFamily.Families(I).Name, 12)
                RichTextBox1.AppendText(strText & vbNewLine & vbNewLine)
            Next
            RichTextBox1.ScrollToCaret()

    Voici une capture de la RTB avec des Fonts affichées:

    Pas sûr de comment utiliser RichTextBox1.Rtf , peut être avec du texte formaté rtf par exemple RichTextBox1.rtf =@"{\rtf1\ansi This is some \b bold\b0 text.}"

    .


    Cyrille Precetti
    Bonne Année! Happy New Year!

    Marquez comme réponse ou votez si cela vous a aidé


    lundi 18 janvier 2016 21:57
  • Bonjour.

    Merci. Oui le script se trouve dans un module. Ca marche très bien. Merci encore. Par contre, j'ai 400 polices et Write.exe plante lors de l'impression.

    Je fais comme ça :

            RichTextBox1.SaveFile(Application.StartupPath & "\Tmp.rtf")
            Shell("write.exe /p " & Application.StartupPath & "\Tmp.rtf")

    Mais en ouvrant Write avec le document, il plante quand même.

    PS : C'est Foxit Reader qui fait planter planter. :)



    • Modifié Michel56100 lundi 18 janvier 2016 22:58 Correction
    lundi 18 janvier 2016 22:50
  • Avez-vous essayé de recharger le fichier Tmp.rtf dans un autre RichTextBox avec LoadFile?

    Juste pour voir si cela charge.

    Pas de problème pour le fichier rtf généré sur mon test en ouverture dans write.exe (WordPad...).

    En fait Shell a besoin du path complet pour write.exe.... probablement C:\Programmes....

    Cela devrait fonctionner avec le path de l'application, et faites attention au format pour ce chemin; msdn explique les doubles "": (https://msdn.microsoft.com/en-us/library/xe736fyk%28v=vs.90%29.aspx)

    "You should always enclose the entire path and file specification in quotation marks, as the following example shows.

    ID = Shell("""C:\Program Files\display.exe"" -a -q", , True, 100000)
    

    Each pair of adjacent double quotation marks (" ") within the string literal is interpreted as one double quotation character in the string. Therefore, the preceding example presents the following string to the Shell function:

    "C:\Program Files\display.exe" -a -q
    

    If the path is not enclosed in quotation marks, Windows looks for a file called Program.exe in the C:\ directory, instead of display.exe in the C:\Program Files directory."


    Cyrille Precetti
    Bonne Année! Happy New Year!

    mardi 19 janvier 2016 08:17
  • Bonjour.

    Non c'est Foxit Reader (l'imprimante pour les fichiers PDF) qui plante parce que si j'ouvre write avec et le fichier tmp.rtf (sans utiliser le programme VB), il plante également.

    En revanche, si j'utilise mon imprimante Epson, ça marche bien.

    Généralement Shell n'a pas besoin du chemin complet quand c'est Windows voire peut être System32. Write est dans Windows. Quand c'est Program Files, oui, là il faut le chemin complet. Sans quoi, shell me dirait "Fichier introuvable".

    A bientôt.

    mardi 19 janvier 2016 10:31