Extractfilepath et curseur sur un edit!!!

cs_othland Messages postés 298 Date d'inscription jeudi 18 décembre 2003 Statut Membre Dernière intervention 9 février 2010 - 27 déc. 2006 à 16:19
cs_othland Messages postés 298 Date d'inscription jeudi 18 décembre 2003 Statut Membre Dernière intervention 9 février 2010 - 2 janv. 2007 à 14:49
slt tlm;
j'ai deux petites questions:

1) j'ai un nom de fichier executable sans le '.exe' à la fin, et je veux avoir son chemin dans le disque dur, j'ai éssayer avec la fonction : ExtractFilePath(Edit1.Text); mais ça n'a pas marché!!!
avez vous une autre idée???

2) j'ai une chaine de caractère écrite dans un TEdit, je veux placer le curseur clignotant (|) dans un emplacement bien défini au milieu de la chaine!!
connaissez vous une fonction qui fais ce truc???
merci infiniment!
ciao

3 réponses

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
27 déc. 2006 à 16:26
1) La fonction ExtractFilePath traite une chaine de caractere, elle va pas trouver un fichier sur le disque dur pour toi. Il faut que tu utilise des fonctions du genre "findnext" et autre en partant recursivement de la racine.

2) SetCursosPos ?
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
27 déc. 2006 à 17:16
Salut,

Voici un petit exemple qui permet de définir et/ou récuperer la position du curseur dans un TEdit, TMemo ... etc

{Function qui récupère la position du Curseur}
Function GetCaretPos(aHandle : THandle): TPoint;
Begin
  Result.X := LongRec(SendMessage(aHandle, EM_GETSEL, 0, 0)).Hi;
  Result.Y := SendMessage(aHandle, EM_LINEFROMCHAR, Result.X, 0);
  Result.X := Result.X - SendMessage(aHandle, EM_LINEINDEX, -1, 0);
End ;

{Procedure qui définit la position du Curseur}
Procedure SetCaretPos(aHandle : THandle; Value: TPoint);
var
  CharIdx: Integer;
begin
  SetFocus(aHandle);
  CharIdx : = SendMessage(aHandle, EM_LINEINDEX, Value.y, 0) + Value.x;
  SendMessage(aHandle, EM_SETSEL, CharIdx, CharIdx);
end;

{ Utilisation }
procedure TForm1.btn_GetCaretPosClick(Sender: TObject);
Var Point : TPoint;
begin
  Point := GetCaretPos(Edit1.Handle);
  Label1.Caption := Format('X : %d, Y : %d', [Point.X, Point.Y]);
end ;

procedure TForm1.btn_SetCaretPosClick(Sender: TObject);
var
  Value : TPoint;
begin
  Value.x : = 2;  Value.y :0; // dans un Edit il n'y a qu'une ligne ... donc Y 0
  SetCaretPos(Edit1.Handle, Value);
end ;

 
@+
Cirec

<hr size ="2" />
0
cs_othland Messages postés 298 Date d'inscription jeudi 18 décembre 2003 Statut Membre Dernière intervention 9 février 2010 1
2 janv. 2007 à 14:49
slt tlm;


pour la position du curseur dans le TEdit, je viens de trouver ça :
///////////////////////////


Edit1.SetFocus;


Edit1.SelStart := 2; //le curseur se positionne aprés la deuxièmme letre de ce qui est 
                               //écrit dans le champ edit!!
///////////////////////
ciao
0
Rejoignez-nous