Rich - extrair a palavra que esta sob o cursor

Top  Previous  Next

Extarir palavra que está sob o cursor

function RECharIndexByPos(RichEdit: TRichEdit; X, Y: Integer): Integer;

{ retorna a posição absoluta do caracter para um conjunto de coordenadas do cursor}

var

P: TPoint;

begin

P := Point(X, Y);

Result := SendMessage(RichEdit.Handle, EM_CHARFROMPOS, 0, longint(@P));

end;

 

function REExtractWordFromPos(RichEdit: TRichEdit; X, Y: Integer): string;

{ X, Y - coordenadas num controle rich edit }

{retorna a palavra sob a posição corrente do cursor}

var

BegPos, EndPos: Integer;

begin

BegPos := RECharIndexByPos(RichEdit, X, Y);

if (BegPos < 0or

(SendMessage(RichEdit.Handle,EM_FINDWORDBREAK,WB_CLASSIFY,BegPos) and

(WBF_BREAKLINE or WBF_ISWHITE) <> 0 ) then

begin

result:='';

exit;

end;

if SendMessage(RichEdit.Handle, EM_FINDWORDBREAK, WB_CLASSIFY, BegPos- 1and

(WBF_BREAKLINE or WBF_ISWHITE) = 0 then

BegPos := SendMessage(RichEdit.Handle, EM_FINDWORDBREAK,

WB_MOVEWORDLEFT, BegPos);

EndPos := SendMessage(RichEdit.Handle, EM_FINDWORDBREAK,

WB_MOVEWORDRIGHT, BegPos);

Result := TrimRight(REGetTextRange(RichEdit, BegPos, EndPos - BegPos));

end;