| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Коодинаты курсора в координаты каретки |
| Автор: Delphist 23.3.2006, 13:42 |
| Возникла следующ. проблема: хочу сделать чтобы при наведении курсора мыши на слово текста хранимого в редакторе подобного TMemo над ним выскакивал hint. Умеется есть мой класс по отображению hint'a с заданной позицией и сообщением, но сообщение hint'a формируется относительно того на какое слово мы поставили курсор, поэтому я должен узнать строку и столбец в котором находится слово. Но как Перевести коодинаты курсора в координаты каретки (т.е. в строку и столбец). |
| Автор: _hunter 23.3.2006, 14:10 |
| TCustomMemo.CaretPos |
| Автор: Delphist 23.3.2006, 15:33 | ||||
CaretPos возращает позицию каретки(курсора клавиатуры), а что мне нужно объясню напримере: Есть процедура:
см. рис. который прикреплен. |
| Автор: _hunter 23.3.2006, 15:50 |
| оно и для записи доступно. а потом SelStart -- получиш часть своего слова.потом пробежаться влево/вправо, до разделителя -- получим слово... |
| Автор: Delphist 23.3.2006, 16:18 | ||
Т.к. я из координат 133x34 получу 3:25? Может чего я не понимаю - примерчик не мог бы набрасать?! |
| Автор: Alexeis 23.3.2006, 16:41 | ||
| Что-то похожее уже обсуждали. Сошлюсь на справку
как будто бы оно, но сам не проверял |
| Автор: Delphist 23.3.2006, 17:11 | ||||
1) Как будет выглядеть SendMessage с этим сообщением? 2) Что непосредственно возвращает это собщение: слово над курсором или координаты курсора в координатах каретки? |
| Автор: Delphist 23.3.2006, 17:30 | ||||
Проверил я это сообщение - в итоге оно возвращает позицию символа. т.е: в редакторе memo написал текст: строка1 строка2 {на данной строке на букву р навёл курсор в итоге должен был получить строка: 2 столбец 3, а получил строка 12, столбец 0. Я даже понял как получилось 12: строка1+#13#10+строка2 и р как раз будет 12 символ} ? Так как же пользоваться этим сообщением? Код который я использовал для проверки:
|
| Автор: Delphist 23.3.2006, 17:54 |
| Всё _hunter проблема решена надо вместо Lo и Hi использовать LoWord и HiWord |
| Автор: Delphist 24.3.2006, 12:56 | ||||
_hunter возникла новая проблема. Я прикрепляю исходник, в котором реализовано возращения слова под курсором мыши, в качестве редактора, в котором хранится текст, берется TRichEdit, если я пытаюсь взять вместо TRichEdit'a — TMemo или TfsSyntaxMemo(TfsSyntaxMemo -наследник от TCustomControl), то слово не возвращается. Помоги исправить этот недастаток. P.S. Если нужен TfsSyntaxMemo — это компонент библиотеки FastReport, то я выложу. |
| Автор: _hunter 24.3.2006, 13:08 |
| справка гласит, что это сообщение работает только на виндовых контролах ( edit, RichEdit ). на самоклепах нужно по моей стратегии работать ( если есть поддержка аналогов CaretPos ) |
| Автор: Alexeis 24.3.2006, 13:28 |
| _hunter, если в самоклепах это сообщение не перехватывать, а их строить на базе стандартных, то все должно работать аналогично. |
| Автор: _hunter 24.3.2006, 13:40 |
| дык и я о том же. но TMemo по иерархии лежит дальше чем TCustomControl. поэтому ( с большой долей вероятности ) можно утверждать что самоклеп склепан на самоклепном рисовальщике [ о как завернул... ] |
| Автор: Delphist 24.3.2006, 15:38 | ||
Обзор слов я хочу заточить под TfsSyntaxMemo - компонент библиотеки FastReport. Если она(там есть исходники TfsSyntaxMemo) нужна я могу выложить. |
| Автор: Alexeis 24.3.2006, 15:50 |
| Лучше, канечно, выложить |