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;
L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. :bug: ___ "http://club.developpez.com/regles/#LIII-A"É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.4.2 Entreprise - Delphi 11.3 Entreprise - Visual studio 2022
OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.7)
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.
![]()
L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. :bug: ___ "http://club.developpez.com/regles/#LIII-A"É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.4.2 Entreprise - Delphi 11.3 Entreprise - Visual studio 2022
OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.7)
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![]()
Partager