cs_othland
Messages postés298Date d'inscriptionjeudi 18 décembre 2003StatutMembreDernière intervention 9 février 2010
-
27 déc. 2006 à 16:19
cs_othland
Messages postés298Date d'inscriptionjeudi 18 décembre 2003StatutMembreDerniè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
cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023123 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.
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 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 ;