![]() |
|
|
![]()
|
|
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 3 Всего: 128 |
Я уже который месяц работаю над реализацией подсветки.
Подсветка уже реализована, по-моему, довольно неплохо. Но у нее есть один серьезный изъян. Часть этой функции была взята из DRKB и переделана под C++ Builder, но в ней достаточно моих поправок (если надо, я могу привести код функции подсветки). Тем не менее, принцип работы остается тем же: 1. В переменную загоняется текущее слово. 2. Оно ищется в словаре. 3. Если оно там есть - оно выделяется в тексте. 4. Ему присваиваются нужные атрибуты шрифта. 5. Выделение снимается. 6. Работа переходит к следующему слову. Но! Несмотря на моментальность этой работы, постоянная операция "выделить <-> снять выделение" вызывает очень неприятное мерцание. Как его можно избежать? |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 11 Всего: 146 |
DoubleBuffered
? -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 3 Всего: 128 |
Я вроде его уже ставил... Попробую еще разок.
Добавлено @ 15:34 Вспомнил. Попробуйте врубить это свойство у RichEdit'а. У меня лично почему-то весь текст, который я набираю в RichEdit'е с врубленным DoubleBuffered, пропадает. Он набирается, но его не видно. И выделить его нельзя - выделения тоже не видно. Это сообщение отредактировал(а) mr.Anderson - 9.1.2007, 15:23 |
|||
|
||||
| Rodman |
|
|||
|
CIO ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 6144 Регистрация: 7.5.2006 Где: Ukraine ⇛ Kyiv ci ty Репутация: 7 Всего: 122 |
а если этот весь процесс провести в буфере или в невидимом RichEdit, а потом скопировать...
|
|||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 3 Всего: 128 |
Rodman, а тогда разве не будет моргания? В любом случае этот вариант очень "тяжелый" с точки зрения модернизации программы. Нужно будет добрую половину кода переписать на новый лад...
Может, еще есть варианты? Плз. Добавлено @ 17:02 А в буфере - это вообще как? Как можно выставить подсветку кода в буфере? |
|||
|
||||
| codelord |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 777 Регистрация: 7.5.2005 Где: ты моя темноглаза я где?! Репутация: 16 Всего: 39 |
Есть такая штука SynEdit качай и наслаждайся в этом компоненте еще много всего, зачем изобретать велосипед RichEdit от Builder на мой взгляд тормознутый непростительно. смотри здесьhttp://sourceforge.net/project/showfiles.php?group_id=3221 |
|||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 3 Всего: 128 |
Вот только хотел сказать, не предлагайте SynEdit.
Я, конечно, не смогу сделать то же, что в SynEdit, но хотя бы что-то подобное - вполне. Поэтому я и прошу подсказать, как можно избавиться от мерцания. |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 11 Всего: 146 |
тогда имхо сначало анализируй всю подсветку в тексте, а уж потом вноси изменения в цвете, шрифте, и т.п.
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 3 Всего: 128 |
Romikgy, не совсем понял. Поподробнее плз.
|
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 11 Всего: 146 |
ну как ты подсветку делаешь ?
и на основе какого компонента вообще делаешь? -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 3 Всего: 128 |
Подсветку делаю в TRichEdit. Алгоритм выше я описал. Этот алгоритм срабатывает при отпускании клавиши в RichEdit'е (событие OnKeyUp ).
|
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 11 Всего: 146 |
могу посоветовать
написать типа такой процедуры procedure WMPaint(var Message: TWMPaint); message WM_PAINT; и регулировать когда рисовать , а когда нет имхо этим избавишься от мерцания -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 3 Всего: 128 |
А как эту функцию использовать? Примерно хотя бы. А то я никак не въеду. Примерчик накатайте плз, если не сложно.
Добавлено @ 22:08 И, плз, на языке C++, хорошо? |
|||
|
||||
| WaReZMEN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 683 Регистрация: 9.6.2006 Где: Россия, Санкт-Пет ербург Репутация: нет Всего: 3 |
Я тоже хочу пример
|
|||
|
||||
| WaReZMEN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 683 Регистрация: 9.6.2006 Где: Россия, Санкт-Пет ербург Репутация: нет Всего: 3 |
Мне уже не нужно я сам разобрался
|
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |