Fórum Urgente (como selecionar uma palavra no rich ????) #169297

14/07/2003

0

caros colegas

estou precisando selecionar uma determinada palavra no richedit,
seria como se eu tivesse dado 2 clicks sobre a palavra .

eu sei a posição em que ela se encontra na linha , só falta selecionar para eu poder substituir por outra palavra !

obrigado pela ajuda

souza ,


Souzaarima

Souzaarima

Responder

Posts

14/07/2003

Oberdan

Eu tenho uma função aqui e nunca testei. Veja se dá certo:

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;


[]
Oberdan :!:


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar