|
Технофашист
229 / 217 / 11
Регистрация: 11.03.2009
Сообщений: 887
|
|
Подсветка синтаксиса при помощи TRichEdit19.04.2012, 11:50. Показов 3814. Ответов 13
Метки нет (Все метки)
Нужна подсветка синтаксиса как в нормальных отладчиках. Т.е. пишешь код или вставил ctrl+v - текст сразу отформатировался.
Реально ли это реализовать средствами TRichEdit? Я пробовал пару лет назад, но жутко тормозило. Может конечно делал коряво. Или тут только лезть на WinAPI?
0
|
|
| 19.04.2012, 11:50 | |
|
Ответы с готовыми решениями:
13
Подсветка синтаксиса Подсветка синтаксиса в RichEdit |
|
74 / 63 / 0
Регистрация: 24.03.2012
Сообщений: 333
|
|
| 19.04.2012, 12:01 | |
|
Для такого есть SynEdit, например
1
|
|
|
Технофашист
229 / 217 / 11
Регистрация: 11.03.2009
Сообщений: 887
|
|
| 20.04.2012, 00:27 [ТС] | |
|
Скачал я его, вроде установил как сказано здесь
SynEdit для XE2 но чего то вообще не понимаю, что дальше делать? в компонентах он не появился, я вообще туплю (( целый день уже мучаюсь
0
|
|
|
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
|
|
| 20.04.2012, 06:01 | |
|
Особой разницы между методами RichEdit и WinAPI не замечал (ибо в конечном счете используются апи функции). При корректном алгоритме (без посимвольных сравнений 100500 строк) задержек быть не должно.
1
|
|
|
Технофашист
229 / 217 / 11
Регистрация: 11.03.2009
Сообщений: 887
|
|
| 20.04.2012, 09:59 [ТС] | |
|
Дело не в задержках, алгоритм на RichEdit я довольно шустрый сделал. Проблема в том, что не пойму что делать с функцией отмены действия, ибо в буфер запоминаются и действия по форматированию текста. Искал, но так и не нашел в RichEdit возможности отключения буфера на время (чтобы просто "заморозить", но не стирать его совсем). Т.е. отключил запись в буфер отмены - сделал форматирование - опять включил.
0
|
|
|
|
||||||
| 20.04.2012, 21:46 | ||||||
|
Вот накатал по быстрячку невникая, вроде норм...
1
|
||||||
|
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
|
||
| 20.04.2012, 22:46 | ||
|
1
|
||
|
Технофашист
229 / 217 / 11
Регистрация: 11.03.2009
Сообщений: 887
|
|
| 21.04.2012, 00:25 [ТС] | |
|
Avazart, проблема не в алгоритме, а в скорости его работы и невозможности корректной отмены действий.
DefineTrueFalse, про копирование форматированного текста интересная мысль... только как. Насколько я помню, RichEdit подчиняется стандарту rtf-файлов, т.е. содержит невидимые теги форматирования. Но эти теги не доступны через поле Text компонента.....
0
|
|
|
|
||||||||
| 21.04.2012, 00:48 | ||||||||
Текст "Слово2" красным жирным шрифтом если сохранить в файл и открыть блокнотом
http://support.microsoft.com/kb/199852/ru http://www.rsdn.ru/forum/com/67137.all.aspx Но на RichEdit3.0 ли написан TRichEdit?
0
|
||||||||
|
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
|
||||||||||||
| 21.04.2012, 03:21 | ||||||||||||
|
Если идет речь о создании некого плагина, чтобы RichEdit был весь радужный и в цветочек - гиблая затея. В любом случае нужно будет создавать собственный компонент, и тут уже встает вопрос что брать за родитель. В случае, если брать готовый RichEdit, то ваши возможности все равно будут ограничены встроенными функциями. Чуток создать расширение функциональности можно, если использовать метод Perform, и если есть обратная совместимость, то пара-тройка плюшек гарантированы. Однако для полноценной реализации - нужно капитальное создание через API. Хочу заострить внимание именно на этом. При создании указывается класс, создаваемого окна и если разработчики мелкомягких посчитали, что идет "новая ветвь" компонента, то это название будет отличаться. Но чтобы не устраивать тотальный обвал совместимости со старыми приложениями, конечно оставляют некоторые стабильные версии классов. Но это теория. Итак, чем же так хороши API функции? Если на машине есть возможность использовать компонент последний версии, то не важно, есть такая возможность в IDE или нет - все равно создаст (обратное правило тоже действует). Далее привожу пример компонента версии 4.1.
Как я уже выше говорил, я не посвещал время на вопрос о вставке уже форматированного текста, но помню, что для обратной процедуры было что-то вроде:
3
|
||||||||||||
|
Технофашист
229 / 217 / 11
Регистрация: 11.03.2009
Сообщений: 887
|
|
| 21.04.2012, 12:19 [ТС] | |
|
Ладно, всем спасибо. Легкого пути нет, как я понял, а на трудный нет времени.
Хотя буду признателен, если кто-нибудь поможет советом как быть с буфером отмены операций. Пробовал формировать текст в другом компоненте и отправлять его в буфер обмена, а после вставлять в RichEdit - вставляется всё хорошо, но отмена операции всёравно глючит - отмененное слово просто влево сдвигается и перекрывает другой текст.
0
|
|
|
Технофашист
229 / 217 / 11
Регистрация: 11.03.2009
Сообщений: 887
|
|
| 21.04.2012, 13:45 [ТС] | |
|
Думал об этом, но думаю это не простая затея.
Если повесить на метод OnChange (срабатывает при любом изменение данных в RichEdit) помимо отрисовки еще и сохранение, думаю производительность упадет еще больше - мерцания обеспечены.
0
|
|
|
|
|
| 21.04.2012, 17:39 | |
|
Вообще что за требования таки к приложению по производительности?
Да и зачем большой буфеп отмены, создал например буфер к примеру из vector<String> на ограниченый на 10 запоминаемых действий и все нефиг ошибаться пользователю.Изменения фиксировать в OnChange, проверяя Modified. Да и отрисовка не должна грузить.
0
|
|
| 21.04.2012, 17:39 | |
|
Помогаю со студенческими работами здесь
14
Динамическая подсветка синтаксиса Подсветка синтаксиса в RichEdit
Подсветка синтаксиса RichEdit Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
|
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение:
DISM / Online / Add-Capability / CapabilityName:WMIC~~~~
Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
|
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: при создании документов установить период списания автоматически. . .
|
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2.
Задача: вывести данные из ТЧ нетипового документа. . .
|
|
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению.
На форме документа создается. . .
|
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
|
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
|
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
|