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
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
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)
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
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. ___ É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)
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);
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
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
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
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
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