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 < 0) or (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- 1) and (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;
|