Как реализовать подсветку синтаксиса и свертку

Модератор: Модераторы

Timid
постоялец
Сообщения: 290
Зарегистрирован: 21.11.2007 20:33:15

Как реализовать подсветку синтаксиса и свертку

Сообщение Timid »

Необходимо написать компонент-текстовый редактор кода, с поддержкой подсветки синтаксиса и свертки блоков кода.
Очень желательно наличие возможности отрисовывать графику поверх текста, подсветку строк, которые бы синхронизировались с текстом при скролировании и вводе.

Есть ли подобные примеры с открытым кодом? На Lasarus или Delphi?
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

synedit
Timid
постоялец
Сообщения: 290
Зарегистрирован: 21.11.2007 20:33:15

Сообщение Timid »

Mr.Smart писал(а):synedit

Там только текст подсвечивается, это можно и в memo сделать, а мне нужна свертка.
Но, спасибо
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

В самой IDE данный компонент доработан и в нём реализована свёртка.
Timid
постоялец
Сообщения: 290
Зарегистрирован: 21.11.2007 20:33:15

Сообщение Timid »

Все равно не совсем то, что хотелось бы посмотреть. Нужна отрисовка графики поверх текста с синхронизацией перемещения, событие onEnter и т.п.

Я многого хочу? :)
Tsukasa-mixer
новенький
Сообщения: 12
Зарегистрирован: 06.04.2010 01:27:37
Откуда: г.Киров

Сообщение Tsukasa-mixer »

Timid писал(а):Я многого хочу? :)

Ну не мало :lol:
Timid
постоялец
Сообщения: 290
Зарегистрирован: 21.11.2007 20:33:15

Сообщение Timid »

Мда, все плохо.
Будем искать сами.
скалогрыз
долгожитель
Сообщения: 1804
Зарегистрирован: 03.09.2008 02:36:48

Сообщение скалогрыз »

Timid писал(а):Все равно не совсем то, что хотелось бы посмотреть. Нужна отрисовка графики поверх текста с синхронизацией перемещения, событие onEnter и т.п.

Я многого хочу? :)

а ещё можно написать свой-готовый компонент ;)

правка текста не такая уж и хитрая штука...
пока дело не доходит до шрифтов с проивзольной шириной символов, различными лигатурами, и разнонаправленным текстом :D

имхо, проще с SynEdit-ом разобраться. В котором есть OnPaint и в этом onPaint рисовать нужно графику "поверх текста"
alaken
постоялец
Сообщения: 221
Зарегистрирован: 18.02.2010 08:02:13

Сообщение alaken »

скалогрыз писал(а):имхо, проще с SynEdit-ом разобраться.

есть где нибудь наглядный пример использования компонента, мне нужно подсветить свои определенные ключевые слова, как это сделать?
скалогрыз
долгожитель
Сообщения: 1804
Зарегистрирован: 03.09.2008 02:36:48

Сообщение скалогрыз »

такой покатит или нужно что-нить покруче?!
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось скалогрыз 12.04.2010 11:51:02, всего редактировалось 1 раз.
alaken
постоялец
Сообщения: 221
Зарегистрирован: 18.02.2010 08:02:13

Сообщение alaken »

скалогрыз писал(а):такой покатит или нужно что-нить покруче?!

это то что надо, СПАСИБО.
эм... только скрин не соответствует вложенному примеру в архиве...
скалогрыз
долгожитель
Сообщения: 1804
Зарегистрирован: 03.09.2008 02:36:48

Сообщение скалогрыз »

alaken писал(а):эм... только скрин не соответствует вложенному примеру в архиве...

действительно.

вот правильный проект.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
alaken
постоялец
Сообщения: 221
Зарегистрирован: 18.02.2010 08:02:13

Сообщение alaken »

думаю мне нужно что-то по круче =)
мне нужно чтобы подсвечивались ключи вида "[data]" или "$data"
научным методом тыка пока ничего не получается...
скалогрыз
долгожитель
Сообщения: 1804
Зарегистрирован: 03.09.2008 02:36:48

Сообщение скалогрыз »

alaken писал(а):думаю мне нужно что-то по круче =)
мне нужно чтобы подсвечивались ключи вида "[data]" или "$data"
научным методом тыка пока ничего не получается...

SQL парсер?!

можно ли в примерах?!
alaken
постоялец
Сообщения: 221
Зарегистрирован: 18.02.2010 08:02:13

Сообщение alaken »

нет не SQL парсер, это будет софтина оповещающая о состоянии хостов, а в SynEdit будет шаблон отчета посылаемого по почте
[hostname] ([host]) status was changed on [status] in [date] [time]

не охота делать длинные ключевые слова типа CurrentDate, CurrentTime, MonitoringHostName и прочее...
думаю с квадратными скобками оптимальный вариант.

Добавлено спустя 1 час 10 минут 44 секунды:
параметр
TSynAnySyn.DollarVariables := True
позволяет подсвечивать переменные со знаком "$" в начале имени переменной ($Date)
со скобками пока ничего не получается...

и еще как убрать поле с номерами строк в TSynEdit?

Добавлено спустя 1 час 35 минут 15 секунд:
убрать поле с нумерацией строк удалось...
параметр
TSynEdit.Gutter.Visible := True
сработал не сразу, после нескольких компиляций случайно изменил параметр
TSynEdit.Gutter.Autosize := False
и нумерация строк исчезла...
уточняю Lazarusу меня пересобран с ключем
-dOldAutoSize


у компонента TSynEdit есть возможность включить WordWrap?

и не работает TSynAutoComplete, TSynAutoComplete.Editor присвоил компонент TSynEdit и заполнил TSynAutoComplete.AutoCompleteList
но в TSynEdit ничего не завершается при нажатии комбинации выбранной в TSynAutoComplete.ShortCut
Ответить