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

Delphi Discussion :

Mettre tous les nombres zero en Bold dans un TRichEdit


Sujet :

Delphi

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    321
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 321
    Points : 88
    Points
    88
    Par défaut Mettre tous les nombres zero en Bold dans un TRichEdit
    Bonsoir, Voici mon petit probleme!
    J'ai une variable String que j'importe dans un TRichEdit, le but est que si je pousse sur le bouton1 tous les 0 doit être mise en fsBold.
    Voici ce que j'ai fait, mais sa ne fonctionne pas correctement, je dois faire quelque par un mauvais raisonnement. Merci pour vôtre aide.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    // Le contenue de la variable ImportCode1 est par expl.  '0123456789023762106542067'
     
    Form1.FMemo1.Lines.Text := ImportCode1; 
    ..
    ..
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      for I := 1 to length(Form1.FMemo1.Lines.Text) do
      begin
        if (Form1.FMemo1.Lines.Text[i] = '0')  then Form1.FMemo1.Font.Style := fsBold];
      end;
    end;
    Salutations

  2. #2
    Membre chevronné Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 552
    Points : 1 780
    Points
    1 780
    Par défaut
    Pour faire ce que tu veux il faut que tu écrive caractère par caractère dans ton TRichEdit et, quand tu vas écrire un '0' tu passe en bold quand tu écris autre chose tu passes en normal.

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    321
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 321
    Points : 88
    Points
    88
    Par défaut
    Donc si je pousse sur mon bouton1 je dois rescanner tout mon text et changer la condition à cette position..! Merci pour ta réponse.

  4. #4
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 54
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Tu peux essayer ceci (click du bouton) :
    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
    procedure TForm1.Button1Click(Sender: TObject);
    var
    FoundAt:LongInt;
    StartPos,ToEnd:Integer;
    begin
      with RichEdit1 do
      begin
        StartPos :=0;
        ToEnd :=Length(Text)-StartPos;
        FoundAt :=FindText('0',StartPos,ToEnd,[stMatchCase]);
        while FoundAt <>-1 do
        begin
          SelStart :=FoundAt;
          SelLength :=1;
          SelAttributes.Style:=SelAttributes.Style+[fsbold];
          StartPos:=SelStart+SelLength;
          ToEnd :=Length(Text)-StartPos;
          FoundAt :=FindText('0',StartPos,ToEnd,[stMatchCase]);
        end;
      end;
    end;

    Et ça c'est pour quand tu souhaites le faire pendant la frappe (OnChange du RichEdit) :
    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
    procedure TForm1.RichEdit1Change(Sender: TObject);
    var FontStyles:TFontStyles;
    begin
      with RichEdit1 do
      begin
        if Text[Length(Text)]='0' then
        begin
          FontStyles:=SelAttributes.Style;
          SelStart:=SelStart-1;
          SelLength:=1;
          SelAttributes.Style:=SelAttributes.Style+[fsbold];
          selstart:=Length(Text);
          SelAttributes.Style:=FontStyles;
        end;
      end;
    end;
    Bon dev

  5. #5
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    321
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 321
    Points : 88
    Points
    88
    Par défaut
    Bonsoir, J'ai eu un grand plaisire à lire tout cela, Merci
    Encore juste une petite question
    Si je veux effacer un nombre de la même manière comme tu me le propose
    dois-je tout simplement remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SelAttributes.Style:=SelAttributes.Style+[fsbold];
    par quelque chose de similaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SelAttributes.Style:=SelAttributes.delete // ????
    Salutations

  6. #6
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 54
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    non, le principe, c'est que tu sélectionne ton texte avec SelStart et SelLength (ou SelEnd), et tu remplace le texte sélectionné comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SelText:=''; //supprime le texte sélectionné en le remplaçant par une chaîne vide
    SelAttributes contient le formattage du texte sélectionné, si on agit dessus, c'est donc pour modifier l'apparence du texte, pas le texte lui-même.

  7. #7
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    321
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 321
    Points : 88
    Points
    88
    Par défaut
    Merci pour tes explications trés claire, bonne journée.

  8. #8
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219

  9. #9
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 54
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Citation Envoyé par Sub0
    Il est vraiment super ton petit programme, court et très efficace !

  10. #10
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Citation Envoyé par waskol
    Il est vraiment super ton petit programme, court et très efficace !
    Merci du compliment. Pour bien faire, il faudrait l'optimiser en ne traitant que la ligne en cours d'édition... Mais bon, c'est une petite démo.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 29/03/2014, 20h55
  2. [TPW] Afficher tous les nombres parfaits dans l'intervalle 1..99999
    Par fatma2013 dans le forum Turbo Pascal
    Réponses: 1
    Dernier message: 30/10/2013, 18h45
  3. [PPT-2010] mettre à jour les nombres dans une phrase
    Par pepsister dans le forum Powerpoint
    Réponses: 1
    Dernier message: 14/06/2010, 10h32
  4. Réponses: 6
    Dernier message: 17/10/2006, 19h55
  5. Réponses: 11
    Dernier message: 19/07/2006, 18h28

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