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![]()
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![]()
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;
Merci bien pour les fonctions, mais je ne les comprends pas très bien. Pourriez-vous m'expliquer?
Encore merci
Exemple avec un RichEdit et un Button :
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.
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.
![]()
Cela, j'avais compris mais les lignes:
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part SendMessage(m.Handle,EM_LINEFROMCHAR,m.SelStart,0);
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);
Le code fonctionne bien mais j'aimerai qu'on m'explique les lignes citées ci-dessus.
Merci d'avance
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
Un grand merci à toi mad0308. Je vais effectuer quelques changements mises-à-jour dans mon programme![]()
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager