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

Lazarus Pascal Discussion :

[Linux] TSynAutoComplete, comment terminer un mot automatiquement


Sujet :

Lazarus Pascal

  1. #1
    Membre confirmé Avatar de winow
    Inscrit en
    Novembre 2004
    Messages
    668
    Détails du profil
    Informations personnelles :
    Âge : 59

    Informations forums :
    Inscription : Novembre 2004
    Messages : 668
    Points : 628
    Points
    628
    Par défaut [Linux] TSynAutoComplete, comment terminer un mot automatiquement
    Bonjour

    Sous Ubuntu avec Lazarus,

    J'ai sur ma fiche il y a un composant TSynEdit et un TSynAutoComplete.

    J'ai rien trouvé sur le web qui montre simplement comment terminer un mot automatiquement etc..

    Pour exemple: comment dans le synedit, quand j'écris <a> le composant SynAutoComplete1 me termine la chaine avec <a></a>.

    J'ai rien trouvé dans les propriérés qui pourrait le faire,
    c'est pourtant bien sa fonction au SynAutoComplete de terminer une chaine de caractère non ?.

    Merci A+
    .
    Why
    .
    //------------------

  2. #2
    Membre confirmé Avatar de winow
    Inscrit en
    Novembre 2004
    Messages
    668
    Détails du profil
    Informations personnelles :
    Âge : 59

    Informations forums :
    Inscription : Novembre 2004
    Messages : 668
    Points : 628
    Points
    628
    Par défaut
    Bonjour

    Du coup j'ai abandonné le composant SynAutoComplete,

    j'ai fait comme ceci pour le moment
    mais le problème c'est que ca ne marche que
    si on écrit le texte cible qu'en début dune ligne, position ( SelStart a 0 ).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    procedure TForm1.SynEdit1Change(Sender: TObject);
     
      const Scible: array[1..2] of string = ('<a>', '<b>');
          Sreplace: array[1..2] of string = ('<a></a>', '<b></b>');
            var ix: Integer;
    begin
           for ix:= High(Scible) downto Low(Scible) do
           begin
             if SynEdit1.LineText = Scible[ix] then
                SynEdit1.LineText := Sreplace[ix];
           end;
     
    end;
    .
    Why
    .
    //------------------

  3. #3
    Membre confirmé Avatar de winow
    Inscrit en
    Novembre 2004
    Messages
    668
    Détails du profil
    Informations personnelles :
    Âge : 59

    Informations forums :
    Inscription : Novembre 2004
    Messages : 668
    Points : 628
    Points
    628
    Par défaut
    ce code est un peut mieux sauf qu'il y a un problème du coté de la touche retour,
    une fois les caractères effacés jusque <a> ça réécrit </a> ( <a></a> ).

    uses StrUtils;

    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
     
    procedure TForm1.SynEdit1Change(Sender: TObject);
    begin
     
         if AnsiEndsStr('<a>', SynEdit1.LineText) then
            SynEdit1.LineText := SynEdit1.LineText + '</a>'
        else
            SynEdit1.LineText := SynEdit1.LineText;
     
         if AnsiEndsStr('<b>', SynEdit1.LineText) then
            SynEdit1.LineText := SynEdit1.LineText + '</b>'
        else
            SynEdit1.LineText := SynEdit1.LineText;
     
    end;
    A+
    .
    Why
    .
    //------------------

  4. #4
    Membre confirmé Avatar de winow
    Inscrit en
    Novembre 2004
    Messages
    668
    Détails du profil
    Informations personnelles :
    Âge : 59

    Informations forums :
    Inscription : Novembre 2004
    Messages : 668
    Points : 628
    Points
    628
    Par défaut
    j'avais pas mis le code au bon endroit, il fallait le mettre dans SynEdit1KeyPress.

    celui ci marche comme je le voulais.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    procedure TForm1.SynEdit1KeyPress(Sender: TObject; var Key: char);
     
      const Scible: array[1..2] of string = ('<a', '<b');
          Sreplace: array[1..2] of string = ('</a>', '</b>');
            var ix: Integer;
    begin
           for ix:= High(Scible) downto Low(Scible) do
           begin
             if (AnsiEndsStr(Scible[ix], SynEdit1.LineText)) then
                SynEdit1.LineText := SynEdit1.LineText + Sreplace[ix]
       else
            SynEdit1.LineText := SynEdit1.LineText;
           end;
    end;
    A+
    .
    Why
    .
    //------------------

Discussions similaires

  1. comment eteindre le PC automatiquement ?
    Par enseignant_info dans le forum Windows
    Réponses: 12
    Dernier message: 28/11/2012, 07h49
  2. Comment changer le mot de passe sous Interbase
    Par ETOKA dans le forum InterBase
    Réponses: 3
    Dernier message: 05/08/2004, 11h25
  3. [linux] socket comment savoir si est un client est d
    Par Mascos dans le forum Réseau
    Réponses: 14
    Dernier message: 04/08/2004, 12h05
  4. Comment changer des mots dans un fichier?
    Par ptitbonum dans le forum Linux
    Réponses: 5
    Dernier message: 07/04/2004, 23h42
  5. [linux][gcc] Comment travaille t-on avec plusieurs fichiers?
    Par kaygee dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 02/04/2004, 17h48

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