Med version 7 af TeamShare tager Lector næste skridt og bygger en platform for AI-agenter, der i højere grad kan følge medarbejderen gennem hele arbejdsprocessen.
Jeg har sammenfattet det til følgende lille funktion som du kan benytte.
Function PosFromChar(Handle: Hwnd; CaretPos: Integer): TPoint; begin SendMessage(Handle, EM_POSFROMCHAR, longint(@Result), CaretPos); end;
Funktionen tager parametrene handle, der richeditens handle og en caretposition. Caret positionen er nem at hente da den er lig selstart. Resultatet er en TPoint type med positionen relativ til richeditens øverste venstre hjørne.
Et eks.
procedure TForm1.Button1Click(Sender: TObject); Begin Showmessage(\'x \' + IntToStr(PosFromChar(Richedit1.Handle, Richedit1.selstart).x) + \'; y \' + IntToStr(PosFromChar(Richedit1.Handle, Richedit1.selstart).y)); end;
Som delphijj så ganske rigtigt siger så er det ret enkelt nå man ved det !
PÅ den anden side er der ingen grund til at gøre tingende mere besværligt end de i virkeligheden er .....
delphijj svar er rigtigt, men efter min smag for besværligt .... Der findes en property på en RichEdit der hedder CarretPos. Jeg foreslår man benytter sig af denne.
Jeg vil foreslå det følgende :
procedure TForm1.RichEdit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin with RichEdit1.CaretPos do Caption := Format(\'Carret pos (x,y) = (%d,%d)\',[x,y]); end;
Der er blot det \"lille\" problem at delphijj eksemple ikke virker ... Hvis nu du markerer noget tekst over 2 eller flere linjer så viser den noget forkert :o(
problemer er jo at du kører Delphiu 3 og ikke mindst Delphi 4. Du er derfor nød til selv at implemtere en funktion der kan giver dig positionen på en Cursor ... ref. Mit svar på \"Funktion ved linieskift\" (http://www.eksperten.dk/spm/23635)
Som jeg opfatter spørgsmålet er det et spørgsmål om hvilket koordinat careten har. Jens B dit forslag giver ikke dette men noget andet, hvad aner jeg ikke, jeg er ikke ekspert på dette område, men jeg kan se at y-koordinaten er lig linjenummeret!!! Mit forslag er ikke smukt, men giver den rette x og y-koordinat.
Prøv at checke deklarationen af TRichedit.CaretPos og skriv din vurdering af den.
delphij>> Vi er så fulstendig enig .. Der er bare flere måder at implemtere svaret på. Hvis du kigger på mit svar i http://www.eksperten.dk/spm/23635 vil du opdage at jes_petersen i jævne træk spørger om det samme og det svar jeg til sidst har givfet ham der minder meget om det du har giver her ...
Jens B
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.