Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.02.2009, 18:03   #1
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
Печаль Положение курсора в RichEdit

Я пишу свой язык программирования. Хочу сделать к нему редактор, чтобы как в Делфи при наведении на строку выскакивала полезная информация. Так вот суть проблемы: мне необходимо получить координаты курсора мыши в RichEdit и перевести их в номер строки RichEdit1.Lines.Strings и смещение в строке. Таким образом, я буду знать конкретный элемент и в зависимости от него смогу провести подсветку и внести в хинт краткую информацию по контексту содержимого.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 07.02.2009, 07:30   #2
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Как пример - получение слова под курсором RichEdit`а при движении по нему мыши
Код:
uses RichEdit; 
--------------------------------------------------------------------------------
// получить слово под курсором 
procedure TForm1.RichEdit1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); 
var 
  iCharIndex, iLineIndex, iCharOffset, i, j: Integer; 
  Pt: TPoint; 
  s: string; 
begin 
  with TRichEdit(Sender) do 
  begin 
    Pt := Point(X, Y); 
    iCharIndex := Perform(Messages.EM_CHARFROMPOS, 0, Integer(@Pt)); 
    if iCharIndex < 0 then Exit; 
    iLineIndex  := Perform(EM_EXLINEFROMCHAR, 0, iCharIndex); 
    iCharOffset := iCharIndex - Perform(EM_LINEINDEX, iLineIndex, 0); 
    if Lines.Count - 1 < iLineIndex then Exit; 
    s := Lines[iLineIndex]; 
    i := iCharOffset + 1; 
    while (i > 0) and (s[i] <> ' ') do Dec(i); 
    j := iCharOffset + 1; 
    while (j <= Length(s)) and (s[j] <> ' ') do Inc(j); 
    Caption := Copy(s, i, j - i);// достали само слово 
  end; 
end;
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Старый 07.02.2009, 16:11   #3
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
Радость

Большое спасибо, пойду применять под свои нужды.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 09.02.2009, 10:32   #4
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

iLineIndex := Perform(EM_EXLINEFROMCHAR, 0, iCharIndex);
Делфи ругается на эту строчку
Поковырялся нашел замену WM_USER-54, но как применить стандартные обозначения? Так код выглядит не очень логично. Возможно я не влючил чего-нибудь в uses? Пишу на 7-ке. А эта строка как раз мне и нужна, в ней и определяется положение курсора RichEdit'а.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 09.02.2009, 10:42   #5
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Цитата:
Делфи ругается
модуль Richedit подключен ?
все прекрасно работает ...
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Старый 09.02.2009, 10:48   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А что RichEdit1.Cursor уже отменили?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как спрятать каретку курсора в RichEdit? Aravild Общие вопросы Delphi 2 17.08.2008 15:29
Безвыходное положение BETONOMESHALKA Общие вопросы Delphi 2 03.11.2007 19:06
Положение курсора в Memo vvaassiill Помощь студентам 4 31.05.2007 05:09
Положение картинок в RichEdit НЕ_АЙС Компоненты Delphi 0 18.04.2007 11:59
положение курсора mishel Общие вопросы Delphi 9 30.01.2007 21:37