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

Langage Delphi Discussion :

Savoir le mot saisi dans un Memo


Sujet :

Langage Delphi

  1. #1
    Membre actif

    Inscrit en
    Mai 2010
    Messages
    403
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 403
    Points : 295
    Points
    295
    Par défaut Savoir le mot saisi dans un Memo
    Bonsoir à tous ,
    SVP est-il possible de savoir le mot saisi dans un memo après l’appui sur la touche contrôle du clavier ?
    c-a-d l'utilisateur saisit du texte dans un memo quand il appuie sur la touche contrôle du clavier, je dois afficher le mot saisi.

    un exemple :

    Bonjour les développeurs
    si il appuie sur la touche contrôle du clavier après le mot "développeurs" je dois afficher : (développeurs)

    ainsi si il appuie sur la touche contrôle du clavier après le mot "les" je dois afficher : (les) .
    vraiment je suis perdu

  2. #2
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 862
    Points : 11 330
    Points
    11 330
    Billets dans le blog
    6
    Par défaut
    Tu dois donc lors de l'appui sur CTRL afficher le mot qui démarre après le dernier espace et finit la chaîne saisie ?
    Ou est-il question de détecter le mot sous le curseur, qui n'est pas forcément le dernier ?
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  3. #3
    Membre actif

    Inscrit en
    Mai 2010
    Messages
    403
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 403
    Points : 295
    Points
    295
    Par défaut
    Citation Envoyé par tourlourou Voir le message
    Tu dois donc lors de l'appui sur CTRL afficher le mot qui démarre après le dernier espace et finit la chaîne saisie ?
    c'est exactement ce que je cherche.

  4. #4
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    664
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 664
    Points : 3 642
    Points
    3 642
    Billets dans le blog
    2
    Par défaut
    Bonsoir,

    Voici une solution possible (en supposant qu'il y a sur la form1 un TMemo nommé memo1) :
    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
    24
    25
    26
    27
    28
    function TForm1.RechercheMotSousCurseur:string;
    var
      lstCaracteresSep, lgMemo : string;
      i, iDebutMot, iFinMot : integer;
    begin
      // Liste des caractères à considérer comme séparateur de mots
      lstCaracteresSep := ' .,;:!?/\([])}';
     
      // On récupère la ligne du memo où est le curseur
      lgMemo := memo1.Lines[memo1.CaretPos.Y];
     
      // Recherche le début du mot à partir de la position du curseur dans la ligne
      for I := memo1.CaretPos.X downto 0 do
      begin
        if pos(lgMemo[i], lstCaracteresSep) > 0 then break
        else iDebutMot := i;
      end;
     
      // Recherche la fin du mot à partir de la position du curseur dans la ligne
      for I := memo1.CaretPos.X to length(Memo1.Text)-1 do
      begin
        if pos(lgMemo[i], lstCaracteresSep) > 0 then break
        else iFinMot := i;
      end;
     
      // On retourne la partie de la ligne en fonction des bornes trouvées
      result := copy(lgMemo,iDebutMot,iFinMot-iDebutMot+1);
    end;
    Dans cet exemple, la variable lstCaracteresSep contient la liste des caractères à considérer comme séparateur de mots. Il faut la modifier en fonction des cas.

    Et puis, sur l'événement OnKeyDown du memo, lorsque l'utilisateur appuie sur CTRL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
    begin
      if key = VK_CONTROL then showmessage(RechercheMotSousCurseur);
    end;
    Mon site - Mes tutoriels - GitHub - N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  5. #5
    Membre actif

    Inscrit en
    Mai 2010
    Messages
    403
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 403
    Points : 295
    Points
    295
    Par défaut
    Merci beaucoup gbegreg .
    magnifique .

  6. #6
    Membre expérimenté
    Avatar de retwas
    Homme Profil pro
    Développeur Java/Delphi
    Inscrit en
    Mars 2010
    Messages
    698
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Java/Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 698
    Points : 1 608
    Points
    1 608
    Billets dans le blog
    4
    Par défaut
    Tu peux aussi utiliser les Regex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Showmessage(TRegEx.Match('Bonjour les développeurs', '[a-zA-Zéèçàù]*$').Value);

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

Discussions similaires

  1. Comment savoir si la saisie dans un JDateChooser est vide
    Par airdeug dans le forum AWT/Swing
    Réponses: 13
    Dernier message: 17/10/2016, 21h36
  2. Réponses: 3
    Dernier message: 14/06/2014, 00h47
  3. [PHP 5.0] Récupérer les mots saisis dans un moteur de recherche
    Par masiuxus dans le forum Langage
    Réponses: 11
    Dernier message: 22/09/2010, 19h45
  4. Comment masquer la saisie dans un Memo???
    Par Jayceblaster dans le forum Delphi .NET
    Réponses: 1
    Dernier message: 04/04/2006, 16h19

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