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 :

Insérer du text seulement entre parenthèse dans un richedit!


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 Insérer du text seulement entre parenthèse dans un richedit!
    Bonjours,
    Je suis en train de chercher comment insérer du texte dans un TRichEdit seulement entre parenthèse ( ) c'est à dire le reste du texte ne doit pas être modifiable.

    Je fais rentrer le texte dans le TRichEdit seulement par une variable string.

    Ce que j'arrive à faire jusqu'à présent est de limité le nombre de lines
    mais je ne sais pas dans quelle événement de cherche les nombres de
    colonnes (DE...A) qui est (....) et de bloquer l'insertion texte si le curseur n'est pas entre parenthèse.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    procedure TForm1.FMemo1KeyPress(Sender: TObject; var Key: Char);
    begin
    if (key=#13)and((sender as TRichEdit).lines.Count>=StrToInt(y)) then
      Key :=#0;
    end;
    Merci beaucoup les infos, salutations
    Ardely

  2. #2
    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
    Salut, pourrais-tu reformuler un petit peu tout ça ?
    Parce que c'est difficilement compréhensible...
    Merci

    Bref, je crois avoir compris, mais je n'en suis pas tout à fait sur....

  3. #3
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    En admettant que le format RTF n'utilise pas les parenthèses en interne, tu devrais pouvoir t'en tirer comme ça :
    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
    function AllowEdit(const Text : string; SelStart, SelEnd : integer) : boolean;
    var I, BracketsDepth : integer;
    begin
      Result := False;
      BracketsDepth := 0;
     
      for I := 1 to SelEnd do
      begin
        case Text[I] of
          '(' : inc(BracketsDepth);
          ')' : dec(BracketsDepth);
        end;
     
        if (I >= SelStart) and (BracketsDepth) <= 0 then exit;
      end;
     
      Result := True;
    end;
    Il faudra sûrement réfléchir un peu aux départ et fin des tests (le to et le if), mais l'idée est là.

  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
    L'idée de sjrd me pârait vraiment très bien

  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
    Voici l'idée que j'ai eu waskol.
    Bref, le but est que l'utilisateur puisse entre des données dans un richedit que dans les champs proposer qui est dans mon cas entre parenthèse. C'est à dire que le texte qui n'est pas dans le champs (..), l'utilisateur ne peut pas modifier, peut seulement modifier ou ajouter des données dans la position entre parenthèse. Au demarage c'est l'application qui fait ajouter le texte Question dans le richedit par une variable string. (L'éditeur est du ..genre.. formulaire a remplir..)

    Merci beaucoup pour l'aide.

  6. #6
    Membre habitué Avatar de aliwassem
    Inscrit en
    Janvier 2004
    Messages
    293
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 293
    Points : 157
    Points
    157
    Par défaut
    Citation Envoyé par Ardely
    Voici l'idée que j'ai eu waskol.
    Bref, le but est que l'utilisateur puisse entre des données dans un richedit que dans les champs proposer qui est dans mon cas entre parenthèse. C'est à dire que le texte qui n'est pas dans le champs (..), l'utilisateur ne peut pas modifier, peut seulement modifier ou ajouter des données dans la position entre parenthèse. Au demarage c'est l'application qui fait ajouter le texte Question dans le richedit par une variable string. (L'éditeur est du ..genre.. formulaire a remplir..)

    Merci beaucoup pour l'aide.
    Salut
    pour moi peut etre une autre idee, mais dans un richEdit est ce que vous avez une seule Question ou plus,,,,,
    si vous avez une seule Qusetion alors vous pouvez interdit l'utilisateur d'utiliser la 1er ligne de la richedit.......... et biensur la cursor dans la 2eme ligne toujours...
    mais si vous avez plueieure Qusetions dans le RichEdit alors , il faut connaitre les lignes de chaque Qusetion et comme le 1er.....

    c'est une idee ...

  7. #7
    Membre régulier
    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 156
    Points : 106
    Points
    106
    Par défaut
    Quel est l'intéret de faire cette saisie dans un TRichEdit ? Si c'est un formulaire à compléter, pourquoi ne pas utiliser autant de TEdit qu'il y a de zones entre parenthèses, le reste du texte étant mis sur des TLabel....

    Il ne reste plus ensuite qu'à recomposer le texte complet.

    Il me semble que le TRichEdit n'apporte que l'opportunité d'avoir un texte enrichi dans ses polices de caractères (gras, italique, souligné, taille et couleur de la police etc...)

  8. #8
    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
    C'est vrais avec des TLabel et TEdit c'est plus simple..mais dans un TRichEdit
    les caractères et autres possibilité sont plus enrichi...bon..
    J'ai des difficultés a faire fonctionner la fonctionne de sjrd je dois faire quelle que chose qui n'est pas correcte!
    voici ce que j'ai fait!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    procedure TForm1.FMemo1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
       var
     ..
       If AllowEdit(FMemo1.Text,y,X)then  begin
    ..
    J'ai l'impression que les coordonner y,x ne sont pas des valeurs exacte..que je prend!

    Merci beaucoup pour l'aide, Salutations.

  9. #9
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    C'est OnKeyDown que tu dois utiliser ! Ou OnKeyPress si celui-ci ne permet pas de modifier le paramètre. Je n'ai pas Delphi sous la main pour vérifier.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TForm1.RichEditKeyDown(Sender: TObject; var Key : Word);
    begin
      with RichEdit do if not AllowEdit(Text, SelStart, SelEnd) then
        Key := 0;
    end;
    Si SelEnd est inconnu, c'est aussi SelStart+SelLength.

  10. #10
    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, beaucoup pour ta réponse, je fait des testes...
    Trés bonne journée

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 15/04/2011, 17h26
  2. [OL-2007] Insérer un texte à l'emplacement courant dans le corps d'un message
    Par Phileo dans le forum VBA Outlook
    Réponses: 0
    Dernier message: 13/07/2010, 11h57
  3. Réponses: 4
    Dernier message: 08/05/2008, 16h07
  4. Insérer le texte d'une ComboBox dans une ListBox
    Par PascGuil dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 23/07/2007, 19h56
  5. [Oracle] Insérer le texte d'un textarea dans un champ CLOB
    Par kum dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 26/10/2005, 17h29

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