Главная страница
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.025 c
6-1130825016
Edelweis
2005-11-01 09:03
2006.02.05
NMFTP1.Connect - ошибка, при маленькой скорости инета


15-1137279478
Volf_555
2006-01-15 01:57
2006.02.05
Разблокирование возможностей компьютера


2-1137512161
Rust007
2006-01-17 18:36
2006.02.05
Как создать фаил, который может прочитать только сама программа


15-1137072733
ArtemESC
2006-01-12 16:32
2006.02.05
Алгоритм Маркова...


1-1135901247
Name
2005-12-30 03:07
2006.02.05
Ошибки программы