Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.011 c
1-11866
Cat
2003-12-08 13:57
2004.01.05
Как очистить Ole-контейнер


14-12076
Moscower
2003-12-15 11:13
2004.01.05
Помогите с английским :-)


3-11822
Nikolai_S
2003-12-08 12:59
2004.01.05
Редактирование записей в TADOQuery при запросе SELECT ... JOIN


14-12141
panov
2003-12-11 19:18
2004.01.05
Спор спамеров с анитиспамерами.


8-12001
xxxCrazyManxxx
2003-09-03 14:24
2004.01.05
Помогите закрасить например круг.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский