Главная страница
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.043 c
15-1137141985
Барлог(с)
2006-01-13 11:46
2006.02.05
Несколько "жизненных вопросов"


2-1137359399
Tort
2006-01-16 00:09
2006.02.05
Копировать файлы


15-1136989131
Хинт
2006-01-11 17:18
2006.02.05
Статья: "Оптимизация кода"


15-1137512561
oldman
2006-01-17 18:42
2006.02.05
Предложение к модераторам...


2-1137504939
mctarik
2006-01-17 16:35
2006.02.05
Трансляция тарабарского языка*