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 :

RichEdit+obtenir le numéro de la ligne et de la colonne


Sujet :

Delphi

  1. #1
    Membre actif
    Homme Profil pro
    Analyste/développeur Java EE
    Inscrit en
    Janvier 2005
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste/développeur Java EE

    Informations forums :
    Inscription : Janvier 2005
    Messages : 376
    Points : 271
    Points
    271
    Par défaut RichEdit+obtenir le numéro de la ligne et de la colonne
    Bonjour,
    je suis en train de développer un éditeur avec un RichEdit et j'aimerai savoir comment on pourrait avoir le numéro de la ligne et de la colonne où je suis positionné.

    Merci d'avance
    Utilisez les balises "Code" (alt+c).
    Nous avons répondu à votre question? Pensez au tag

    Le "lol" est aux boulets ce que le ";" est aux programmeurs

  2. #2
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 967
    Points
    6 967
    Par défaut
    Voici 2 fonctions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    function RichRow(m:TRichedit) : LongInt; 
    begin 
      Result:=SendMessage(m.Handle,EM_LINEFROMCHAR,m.SelStart,0); 
    end; 
    function RichCol(m:TRichedit) : LongInt; 
    begin 
      Result:=m.SelStart-SendMessage(m.handle,EM_LINEINDEX, 
       SendMessage(m.Handle,EM_LINEFROMCHAR,m.SelStart,0),0); 
    end;
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  3. #3
    Membre actif
    Homme Profil pro
    Analyste/développeur Java EE
    Inscrit en
    Janvier 2005
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste/développeur Java EE

    Informations forums :
    Inscription : Janvier 2005
    Messages : 376
    Points : 271
    Points
    271
    Par défaut
    Merci bien pour les fonctions, mais je ne les comprends pas très bien. Pourriez-vous m'expliquer?

    Encore merci
    Utilisez les balises "Code" (alt+c).
    Nous avons répondu à votre question? Pensez au tag

    Le "lol" est aux boulets ce que le ";" est aux programmeurs

  4. #4
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 967
    Points
    6 967
    Par défaut
    Exemple avec un RichEdit et un Button :
    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
     
    unit Unit1;
    interface
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ComCtrls;
    type
      TForm1 = class(TForm)
        RichEdit1: TRichEdit;
        Button1: TButton;
        Label1: TLabel;
        procedure Button1Click(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
    var
      Form1: TForm1;
    implementation
    {$R *.dfm}
    function RichRow(m:TRichedit) : LongInt;
    begin
      Result:=SendMessage(m.Handle,EM_LINEFROMCHAR,m.SelStart,0);
    end;
    function RichCol(m:TRichedit) : LongInt;
    begin
      Result:=m.SelStart-SendMessage(m.handle,EM_LINEINDEX,
       SendMessage(m.Handle,EM_LINEFROMCHAR,m.SelStart,0),0);
    end;
    procedure TForm1.Button1Click(Sender: TObject);
    begin
       Label1.Caption := 'Ligne :  ' + IntToStr(RichRow(RichEdit1)) + ' - colonne :  ' + IntToStr(RichCol(RichEdit1));
    end;
    end.
    Il suffit de passer le RichEdit en paramètre aux fonctions, pour qu'elles retourne respectivement la position du curseur dans ce RichEdit, en ligne et en colonne.

    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  5. #5
    Membre actif
    Homme Profil pro
    Analyste/développeur Java EE
    Inscrit en
    Janvier 2005
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste/développeur Java EE

    Informations forums :
    Inscription : Janvier 2005
    Messages : 376
    Points : 271
    Points
    271
    Par défaut
    Cela, j'avais compris mais les lignes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SendMessage(m.Handle,EM_LINEFROMCHAR,m.SelStart,0);
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    m.SelStart-SendMessage(m.handle,EM_LINEINDEX,
       SendMessage(m.Handle,EM_LINEFROMCHAR,m.SelStart,0),0);
    Utilisez les balises "Code" (alt+c).
    Nous avons répondu à votre question? Pensez au tag

    Le "lol" est aux boulets ce que le ";" est aux programmeurs

  6. #6
    Membre actif
    Homme Profil pro
    Analyste/développeur Java EE
    Inscrit en
    Janvier 2005
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste/développeur Java EE

    Informations forums :
    Inscription : Janvier 2005
    Messages : 376
    Points : 271
    Points
    271
    Par défaut
    Le code fonctionne bien mais j'aimerai qu'on m'explique les lignes citées ci-dessus.

    Merci d'avance
    Utilisez les balises "Code" (alt+c).
    Nous avons répondu à votre question? Pensez au tag

    Le "lol" est aux boulets ce que le ";" est aux programmeurs

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 11
    Points : 10
    Points
    10
    Par défaut
    Salut,

    J'ai pas très bien compris le code au dessus mais tu peux recupérer plus facilement la position du curseur grâce aux méthodes déjà définies dans delphi.
    Ton RichEdit est defini comme ceci:
    RichEdit1: TRichEdit;

    Il te suffira d'appeler la fonction CaretPos pour obtenir le numero de ligne et de colonne :
    ligne : integer;
    colonne :integer;
    colonne := RichEdit1.CaretPos.X;
    ligne := RichEdit1.CaretPos.Y;

    Cordialement
    mad0308

  8. #8
    Membre actif
    Homme Profil pro
    Analyste/développeur Java EE
    Inscrit en
    Janvier 2005
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste/développeur Java EE

    Informations forums :
    Inscription : Janvier 2005
    Messages : 376
    Points : 271
    Points
    271
    Par défaut
    Un grand merci à toi mad0308. Je vais effectuer quelques changements mises-à-jour dans mon programme
    Utilisez les balises "Code" (alt+c).
    Nous avons répondu à votre question? Pensez au tag

    Le "lol" est aux boulets ce que le ";" est aux programmeurs

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 01/09/2014, 07h03
  2. JTree: Obtenir le numéro de la ligne d'un noeud de JTree
    Par dark_geek dans le forum Composants
    Réponses: 8
    Dernier message: 20/03/2009, 18h51
  3. Obtenir le numéro de ligne dans les LOGS
    Par kakibend dans le forum C
    Réponses: 4
    Dernier message: 21/01/2008, 17h35
  4. Obtenir la hauteur d'une ligne dans un RichEdit
    Par Juicebox dans le forum Windows
    Réponses: 1
    Dernier message: 10/10/2006, 23h35
  5. [TMemo] Obtenir le numéro de la ligne
    Par JFM dans le forum Composants VCL
    Réponses: 3
    Dernier message: 03/08/2005, 20h06

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