Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.02.05;
Скачать: CL | DM;

Вниз

Вопрос по TRichEdit   Найти похожие ветки 

 
Dima1   (2006-01-20 22:03) [0]

Народ. Помогите.

Есть TRichEdit. Текст в нем не выделен.

Надо сделать так, чтобы по нажатию ПРАВОЙ кнопки мыши
НАД словом в нем, получить ВСЕ слово, которое под мышкой.

Своего рода аналог ВЫДЕЛЕННОГО слова, как при двойном клике.
На крайний случай можно это слово и выделить. Потом можно
узнать по SelText. Но как его выделить по правой кнопке.
Но без выделения было бы все же лучше.


 
Gero ©   (2006-01-21 01:16) [1]

Если нужно, чтобы не происходило перевода каретки, то что-то вроде этого:

function GetRichEditWordAtPt(RichEdit: TRichEdit; Pt: TPoint): string;

function GetTextRange(BeginPos, MaxLength: Integer): string;
var
 TextRange: TTextRangeA;
begin
 if MaxLength > 0 then
   begin
     with TextRange do
       begin
         chrg.cpMin := BeginPos;
         chrg.cpMax := BeginPos + MaxLength;
       end;
     SetLength(Result, MaxLength);
     TextRange.lpstrText := PChar(Result);
     SetLength(Result, SendMessage(RichEdit.Handle, EM_GETTEXTRANGE, 0, LongInt(@TextRange)));
   end
 else
   Result := "";
end;

var
 StartPos, EndPos: Integer;
begin
 StartPos := SendMessage(RichEdit.Handle, EM_CHARFROMPOS, 0, Longint(@Pt));
 if (StartPos < 0) or (SendMessage(RichEdit.Handle, EM_FINDWORDBREAK, WB_CLASSIFY, StartPos) and
  (WBF_BREAKLINE or WBF_ISWHITE) <> 0) then
   begin
     Result := "";
     Exit;
   end;
 if SendMessage(RichEdit.Handle, EM_FINDWORDBREAK, WB_CLASSIFY, StartPos - 1) and
  (WBF_BREAKLINE or WBF_ISWHITE) = 0 then
   StartPos := SendMessage(RichEdit.Handle, EM_FINDWORDBREAK, WB_MOVEWORDLEFT, StartPos);
 EndPos := SendMessage(RichEdit.Handle, EM_FINDWORDBREAK, WB_MOVEWORDRIGHT, StartPos);
 Result := Trim(GetTextRange(StartPos, EndPos - StartPos));
end;


Если перевод каретки устраивает, то можно проще, но это не интересно :)


 
Dima1   (2006-01-21 01:25) [2]

Спасибо! Попробую



Страницы: 1 вся ветка

Текущий архив: 2006.02.05;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.026 c
15-1137099274
Jolik
2006-01-12 23:54
2006.02.05
Кто напишет компоненту за деньги?


15-1135543511
версия для печати
2005-12-25 23:45
2006.02.05
Альтернативные источники энергии


15-1136960266
ArchValentin
2006-01-11 09:17
2006.02.05
Блин, народ, не могу с Blootuth портом разобраться!


6-1130502643
Сергей1981
2005-10-28 16:30
2006.02.05
Кодировка в WebBrowser


15-1137401848
WondeRu
2006-01-16 11:57
2006.02.05
...->Югославия->Афганистан->Ирак->Иран->...->Канада->...