Форум: "Основная";
Текущий архив: 2004.01.05;
Скачать: [xml.tar.bz2];
ВнизРазбор текста Найти похожие ветки
← →
Anton. (2003-12-17 15:37) [0]Пользователь пишет текст в Memo, как только он ввел слово file его нужно выделить жирным цветом. Например как procedure в Delphi
← →
Карелин Артем (2003-12-17 15:37) [1]Используй RichEdit.
← →
Amoeba (2003-12-17 15:38) [2]Обычный TMemo на такое не способен. Можно попробовать SynEdit
← →
Anton. (2003-12-17 15:41) [3]А в RichEdit как? Вообoще каков алгоритм действий?
← →
serge (2003-12-17 15:46) [4]Smotri nije - tam uje obsujdalosi cito-to pohojee
>
Как в RichEdit Выводить строку с заданным стилем? (h0use 17.12.03 14:29)
← →
Dmitriy O. (2003-12-17 16:02) [5]очень просто одновременно с набором текста пишешь его в переменную по символьно. Если пробел сравниваешь его с со словом ключем если да тогода селстарт и селлентс
← →
Anatoly Podgoretsky (2003-12-17 16:04) [6]Dmitriy O. © (17.12.03 16:02) [5]
Ну да, а есть еще и стрелочки вверх, вниз, вправо и другие.
← →
Developerr (2003-12-17 16:09) [7]Установи RxLibrary или JEDI JCL/JVCL и там есть пример работы с RxRichEdit
← →
}{enon (2003-12-17 18:34) [8]Если просто RichEdit, то в событии OnChange получеешь текущую позицию курсора (SelStart), после чего ищешь ближайший пробел (или другой разделитель) до и после этой позиции. Затем выделяешь текст между этими точками (SelStart := pos_1; SelLength := pos_2 - pos_1), присваиваешь выделенной строке нужные свойства (SelAttributes) и возвращаешь курсор на место.
Если не понял, то пиши - приведу код.
← →
Anton. (2003-12-18 09:58) [9]Понял но проблема в странном поведении SelStart он не всегда показывает текущую позицию курсора
← →
}{enon (2003-12-18 13:12) [10]Выводит-то он текущую позицию (либо левый край выделения), но этого недостаточно, если пользователь перемещает текст мышкой/вставляет его из буфера и т.п. (при вставке может потребоваться "подсветить" несколько слов, при Drag&Drop неизвестно откуда изъят текст).
В связи с этим пока придумал только один способ, не требующий постоянной перепроверки всего текста - отслеживать выделение текста (OnChange не требуется):
1) Ловить SelectionChange (вызывается при каждом изменении позиции курсора) и запоминать начало и длину выделения.
Если начальная позиция поменялась, а длина нет, то пользователь перетащил текст мышкой. Изменяй стиль для слова, на которое приходится старая стартовая позиция, и для всей перемещенной строки.
2) Если одновременно поменялась стартовая позиция и длина текста, то изменяй стиль текста между старой начальной позицией и новой позицией/окончанием выделения (до пробелов) - пользователь ввел букву или вставил текст из буфера/другой программы.
3) На всякий случай сделай кнопку "Проверить синтаксис", при нажатии которой просматривай весь текст.
P.S. Постараюсь придумать что-нибудь получше, но не слишком на это рассчитывай - у меня конец четверти :)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.01.05;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c