Position du Curseur dans un TEdit

Résolu
Signaler
Messages postés
27
Date d'inscription
dimanche 14 novembre 2004
Statut
Membre
Dernière intervention
14 février 2006
-
Messages postés
27
Date d'inscription
dimanche 14 novembre 2004
Statut
Membre
Dernière intervention
14 février 2006
-
Bonjour,



Est-il possible de connaitre la position du curseur dans un composant
TEdit, et de la changer, si non existe t-il un composant capable de
faire ce genre de chose.



Merci d'avance.

8 réponses

Messages postés
702
Date d'inscription
vendredi 21 mars 2003
Statut
Membre
Dernière intervention
1 octobre 2009
4
Salut,



Si c'est la position du curseur d'édition du TEdit que tu veux connaîte, utilise SelStart :




SelStart, propriété (TCustomEdit)



Représente la position du premier caractère sélectionné dans le texte.



Syntaxe Delphi :

property SelStart: Integer;

Syntaxe C++ :

__property int SelStart = {read=GetSelStart, write=SetSelStart, nodefault};



Description



Utilisez SelStart pour déterminer la position du premier caractère
sélectionné, où 0 représente le premier caractère. Si aucun texte n'est
sélectionné, SelStart indique la position du curseur. Affectez une
valeur à SelStart pour retirer la sélection en cours et positionner le
curseur immédiatement avant le caractère indiqué.



Pour sélectionner une portion de texte particulière, affectez d'abord
une valeur à SelStart pour positionner le curseur, puis affectez une
valeur à SelLength pour étendre la sélection.



Ken@vo

<hr size ="2" width="100%">Code, Code, Codec !

[%3C/body ]
Messages postés
73
Date d'inscription
mardi 8 avril 2003
Statut
Membre
Dernière intervention
24 juillet 2005

Slt,

Voilà ce ke je te propose sur un Tbutton;



procedure TForm1.Button1Click(Sender: TObject);

var cPos : TPoint;

begin

cPos:= Mouse.CursorPos; // Tu récolte sa position

edit1.text:=inttostr(MPos.X)+' - '+inttostr(mpos.y); // Et tu l'écrit dans un TEdit

end ;



Sur un TEDit c encore + simple !



procedure TForm1.Edit1MouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

begin

edit1.text: =inttostr(X)+' - '+inttostr(y);

// Ici, j'utilise X et Y car ce sont des variable fournie par la procedure et qui renvoie directement la position du curseur

end;



Maintenant si tu vx positioner ton curseur à un endroit préci :

(de nouveau sur un TButton)



procedure TForm1.Button2Click(Sender: TObject);

var cPos : TPoint;

begin

cpos.X:=200; // Tu attribues tes coordonées

cpos.Y:=200;

Mouse.CursorPos:=cPos; // et tu les aplliquent au curseur

end;



J'épère que ca rep à ta question.

Si oui, valide la réponse



Alexis
Messages postés
73
Date d'inscription
mardi 8 avril 2003
Statut
Membre
Dernière intervention
24 juillet 2005

Oups, Une petite erreur c'est glissée dans la première source :



Il faut remplacer les "MPos.X" et "MPos.y" par la variable déclarée à savoir "cPos" et pas "MPos".



Donc ca donne :



edit1.text:=inttostr(cPos.X)+' - '+inttostr(cPos.y);



Déso
Messages postés
1106
Date d'inscription
samedi 8 novembre 2003
Statut
Membre
Dernière intervention
3 septembre 2006
22
var P, PositionDansEdit : TPoint;
begin
GetCursorPos(P);
PositionDansEdit:=Edit1.ScreenToClient(P);
end;

Et inversement:

var P : TPoint;
begin
P:=Edit1.ClientToScreen(Point(X,Y));
SetCursorPos(P);
end;

C'est une autre manière (aux imperfections live près)...
Messages postés
73
Date d'inscription
mardi 8 avril 2003
Statut
Membre
Dernière intervention
24 juillet 2005

Je ne connaissais pas cette méthode, très très intéressant



Alexis
Messages postés
27
Date d'inscription
dimanche 14 novembre 2004
Statut
Membre
Dernière intervention
14 février 2006

désolé alexis2015, je me suis mal exprimer le curseur dont je parlai était celui de l'Edit, pas le curseur de la souris.

Merci kan meme.

Pour SelStart quand j'affecte une valeur :

Edit1.SelStart:=2;

rien ne se passe ? prk?

Je voudrai kan je clique sur un bouton, le curseur de l'edit se mette a un endroit précis par exemple avant le 3eme cractère.
Messages postés
27
Date d'inscription
dimanche 14 novembre 2004
Statut
Membre
Dernière intervention
14 février 2006

OK

Merci beaucoup ca marche.
Messages postés
702
Date d'inscription
vendredi 21 mars 2003
Statut
Membre
Dernière intervention
1 octobre 2009
4
Il ne se passe rien car c'est ton bouton qui détient le focus. Il faut écrire :



Edit1.SetFocus;

Edit1.SelStart := 2;



Ken@vo
Code, Code, Codec !

[%3C/body ]