IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

Remplacer des Tabulations par des espaces dans une RichTextBox


Sujet :

Windows Forms

  1. #1
    Futur Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 11
    Points : 7
    Points
    7
    Par défaut Remplacer des Tabulations par des espaces dans une RichTextBox
    Bonjour

    Je suis entrain de coder un éditeur en c# framework 1.1 et j'aimerais permettre aux utilisateurs de remplacer les tabulations par des espaces par un simple click.

    Déroulement :
    * l'utilisateur charge un fichier dans la RichTextBox de mon editeur (la RichTextBox est l'élément principale de mon éditeur)
    * l'utilisateur clique sur le fameux bouton "Convertir les tabulations en espaces".
    * Ma fonction parcourt le texte de la RichTextBox (texte en rtf) et pour chaque "\t" (tabulation en rtf) je remplace par « x » espaces (ou « x » est une variable correspondant au nombre d'espaces équivalent à la longueur de la tabulation)

    Pour le moment dans mon application, x est fixe car je n'arrive pas à calculer la longueur d'une tabulation.

    En effet dans les exemples suivant, les tabulations n'ont pas la même "taille" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    15        18   <-- ici la taille de la tabulation doit être égale à 8 après mon parsing
    16.11     4.2  <-- ici la taille de la tabulation doit être égale à 4 après mon parsing
    J’ai essayé de détailler un max afin que l'énoncé de mon problème soit clair. Ma question est donc : Comment calculer la taille de la tabulation (taille exprimé en nombre d’espace si possible  )

    Voila merci pour vos réponses et une salutation toute particulière à celui ou celle qui me sortira du pétrin : /

  2. #2
    Membre éprouvé Avatar de neptune
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 835
    Points : 958
    Points
    958
    Par défaut
    Un tabulation n'a pas de taille. C'est la police utilisée pour afficher le texte qui lui donne une taille.

    Si ton texte est un code source par exemple, avec plusieurs niveaux d'indentations, il y aura autant de \t que de niveaux d'indentation.

  3. #3
    Futur Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Pourtant la RichTextBox doit bien déterminer une taille lors de l'affichage de mon texte puisque visuellement cette taille (que j'essaie en vain de calculer) apparait (cf mon exemple : on voit clairement que les 2 tabulations n'ont pas la même longueur).

    Je vois très bien ce que tu veux dire puisque lorsque je regarde mon texte en RTF, les tab (\t) n'ont pas de longueur. C'est donc bien la RichTextBox qui lors de l'affichage détermine une "longueur" afin de bien aligner mon texte. C'est cette valeur que j'aimerais connaitre.

    Si cela peut aider, la police que j'utilise est : Courier New; 9,75pt mais je ne voit pas comment l'utiliser :/ .

    Merci pour tes informations.

  4. #4
    Membre éprouvé Avatar de neptune
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 835
    Points : 958
    Points
    958
    Par défaut
    Elle doit pouvoir se calculer sur base de la police utilisée et la taille. Et après, selon la mesure que tu souhaites obtenir, il faudra ajouter des critères tels que la résolution, etc.

  5. #5
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2004
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 304
    Points : 405
    Points
    405
    Par défaut
    J'ouvre mon Bloc-notes
    je vais dans Format->Police
    je choisi Courier New (et peu importe la taille)
    je tape une "Tabulation"
    je reviens à la ligne
    je tape des espaces jusqu'à atteindre la "Tabulation"
    je calcule le nombre d'espaces que j'ai tappé
    Bingo 8
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    	fin de la tabulation
            fin de mes 8 espaces (ça en fait un de trop) :'(
    Là du coup, je n'ai que 7 Espaces

    je passe
    S'il n'y a pas de Solution, c'est qu'il n'y a pas de Problème.
    ----------------------------------------------------------------------------------------
    Pour se protéger, un bon préservatif pour votre PC : AntiVir et SpyBot - Search & Destroy

  6. #6
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2004
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 304
    Points : 405
    Points
    405
    Par défaut
    ça m'étonne beaucoup
    je clic sur Affichage->Code Source de la Page
    je m'aperçois de la ligne suivante : font: 10pt verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif;
    ouf heureusement pour moi (police de caractères différentes de Courier New)
    Conclution : pour la Fonte Courier New, une tabulation est qui vaut à 8 espaces; pour les autres Fontes, il faudra faire des tests
    S'il n'y a pas de Solution, c'est qu'il n'y a pas de Problème.
    ----------------------------------------------------------------------------------------
    Pour se protéger, un bon préservatif pour votre PC : AntiVir et SpyBot - Search & Destroy

  7. #7
    Futur Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Ton exemple n'est pas significatif pour observer mon problème.
    Voici ce que tu peux faire pour voir de quoi je veux parler.

    -> ouvre ton Bloc-notes
    -> choisi Courier New comme police (mais je ne pense pas que la police soit dépendante)
    -> sur la premiere ligne tape : "12<tabulation>13" puis retour a la ligne
    -> sur la seconde ligne tape : "12.1<tabulation>13"

    Tu vois alors que les 2 tabulations n'ont pas la même taille. En effet, les 2 "13" sont alignés verticalement et donc la tabulation de la deuxième ligne représente en longueur 2 espaces de moins que celle du dessus.

    Moi j'aimerais savoir si il est possible de connaitre au moment ou je lis le caractère "tabulation" son équivalence en espace (afin de garder l'alignement/indentation).

    voila

  8. #8
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2004
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 304
    Points : 405
    Points
    405
    Par défaut
    3ème test, effectivement, ça n'a pas la même taille , je suis (excusez le langage) sur le cul
    S'il n'y a pas de Solution, c'est qu'il n'y a pas de Problème.
    ----------------------------------------------------------------------------------------
    Pour se protéger, un bon préservatif pour votre PC : AntiVir et SpyBot - Search & Destroy

  9. #9
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2004
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 304
    Points : 405
    Points
    405
    Par défaut
    d'un autre coté, tu pourrai par exemple faire comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    foreach(String LigneActuelle in RitchBox.Lines)//A verifier
     String LignePrecedente = //
     String NouvelleLigneActuelle = "";
     for(int i=0;i<LigneActuelle.Length;i++)
     {
       if(LigneActuelle[i] == '\t')
       {
         //int NbreEspace = 0;
         for(int j=i;j<LignePrecedente.Length;j++)
         {
             if(LignePrecedente[i] == ' ')
             {
                //NbreEspace++;
                NouvelleLigneActuelle+=" ";
             }
             else break;//cette partie pourrai être faite plus proprement. 
         }
       }
       else NouvelleLigneActuelle+=LigneActuelle[i];
     }
     LignePrecedente=NouvelleLigneActuelle;
    }
    et faut traiter le cas de la 1ere ligne, tu définie par exemple tes premiers '\t' = 4 espaces
    S'il n'y a pas de Solution, c'est qu'il n'y a pas de Problème.
    ----------------------------------------------------------------------------------------
    Pour se protéger, un bon préservatif pour votre PC : AntiVir et SpyBot - Search & Destroy

  10. #10
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2004
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 304
    Points : 405
    Points
    405
    Par défaut
    Un soupçon de ????
    S'il n'y a pas de Solution, c'est qu'il n'y a pas de Problème.
    ----------------------------------------------------------------------------------------
    Pour se protéger, un bon préservatif pour votre PC : AntiVir et SpyBot - Search & Destroy

  11. #11
    Futur Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Je me suis inspiré de ton algo pour régler mon problème Merci.

  12. #12
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2004
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 304
    Points : 405
    Points
    405
    Par défaut
    S'il n'y a pas de Solution, c'est qu'il n'y a pas de Problème.
    ----------------------------------------------------------------------------------------
    Pour se protéger, un bon préservatif pour votre PC : AntiVir et SpyBot - Search & Destroy

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Remplacer les tabulations par des espaces
    Par Henry22 dans le forum Débuter
    Réponses: 2
    Dernier message: 21/05/2012, 09h08
  2. récupérer des mots séparés par un espace dans une ligne
    Par laurentze dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 14/06/2010, 16h04
  3. remplacer les virgules par des tabulations
    Par cartographe dans le forum VB 6 et antérieur
    Réponses: 16
    Dernier message: 08/11/2007, 11h27
  4. Comment remplacer les tabulations par des espaces ?
    Par richarno dans le forum Langage
    Réponses: 7
    Dernier message: 25/10/2007, 13h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo