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 :

[Lazarus] SelText dans un TMemo


Sujet :

Lazarus Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 3
    Par défaut [Lazarus] SelText dans un TMemo
    Bonjour à tous ! Je cherche à récupérer un String en Double-cliquant dans un Memo. J'utilise Lazarus . Sous Delphi je faisais : (dans Memo1 OnDblClick): sChaine := Memo1.SelText;
    Avec Lazarus ça coince ! par contre SelStart fonctionne impec, mais pas SelLength ! J'utilise Lazarus 0.9.24 béta.
    Merci à tous pour votre aide.

  2. #2
    Membre chevronné

    Inscrit en
    Avril 2003
    Messages
    284
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 284
    Par défaut
    Si j'ai bien compris ce que tu cherches à faire, tu veux, sur un double click, recupérer dans un memo contenant du texte, la portion de texte que tu as précédemment selectionnée.

    Malheureusement, un double click dans un memo a pour concequence immédiate de changer la selection et de ne selectionner que le mot sous la souris, ce qui pose problème

    Je te propose de récupérer ta selection via un menu sur le click droit de ta souris.

    commençons par ajouter deux variables dans les déclarations générales de variables :

    MaString : string;
    Longueur : integer;

    Celles-ci nous permettront de stocker les résultats.

    Ajoute ensuite un Tpopupmenu sur ta form avec la souris, puis ajoutes-y un nouvel item en double cliquant dans l'inspecteur d'objet sur newitem
    Saisir pour sa propriété caption : Enregistrer la selection
    Dans l'onglet evenements de ce Tpopupmenu, double click sur onclick

    Ceci nous permet d'ecrire directement le code dans la procedure correspondante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TForm1.MenuItem1Click(Sender: TObject);
    begin
      MaString := Memo1.SelText;
      Longueur := memo1.SelLength;
    end;
    Il ne reste plus qu'à selectionner le memo et lui indiquer dans l'inspecteur d'objet, que son popupmenu est celui que nous venons de créer.

    Ceci fonctionne parfaitement.
    On peut ajouter un bouton pour vérifier le résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      showmessage('le texte selectionné est : '+ MaString+ #13#10+
                  'Nombre de caractère de ce texte : ' + inttostr(Longueur));
    end;

    voici le code complet :
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    unit Unit1; 
     
    {$mode objfpc}{$H+}
     
    interface
     
    uses
      Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls,
      Menus;
     
    type
     
      { TForm1 }
     
      TForm1 = class(TForm)
        Button1: TButton;
        Memo1: TMemo;
        MenuItem1: TMenuItem;
        PopupMenu1: TPopupMenu;
        procedure Button1Click(Sender: TObject);
        procedure MenuItem1Click(Sender: TObject);
      private
        { private declarations }
      public
        { public declarations }
      end; 
     
    var
      Form1: TForm1; 
      MaString : string;
      Longueur : integer;
    implementation
     
    { TForm1 }
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      showmessage('le texte selectionné est : '+ MaString + #13#10+
                  'Nombre de caractère de ce texte : ' + inttostr(Longueur));
    end;
     
     
     
    procedure TForm1.MenuItem1Click(Sender: TObject);
    begin
      MaString := Memo1.SelText;
      Longueur := memo1.SelLength;
     
    end;
     
     
    initialization
      {$I unit1.lrs}
     
    end.
    et des screenshots en PJ

    Bonne continuation
    Images attachées Images attachées   

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 3
    Par défaut OK merci Clandestino !
    J'essaie ton code. Merci pour ton aide. TMemo n'était peut être pas le composant adéquat !

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

Discussions similaires

  1. Positionnement de ligne dans un TMemo
    Par tixu dans le forum Composants VCL
    Réponses: 4
    Dernier message: 18/12/2004, 11h45
  2. Position du curseur dans un TMemo
    Par yokito dans le forum Composants VCL
    Réponses: 3
    Dernier message: 28/08/2003, 16h35
  3. Taille des tabulations dans un TMemo ?
    Par dergen dans le forum Composants VCL
    Réponses: 2
    Dernier message: 07/01/2003, 19h38
  4. Retour chariot dans un TMemo ?
    Par Vincent PETIT dans le forum C++Builder
    Réponses: 7
    Dernier message: 27/08/2002, 18h55

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