Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Реализация подсветки 
:(
    Опции темы
mr.Anderson
Дата 9.1.2007, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 3
Всего: 128



Я уже который месяц работаю над реализацией подсветки.
Подсветка уже реализована, по-моему, довольно неплохо. Но у нее есть один серьезный изъян.

Часть этой функции была взята из DRKB и переделана под C++ Builder, но в ней достаточно моих поправок (если надо, я могу привести код функции подсветки). Тем не менее, принцип работы остается тем же:

1. В переменную загоняется текущее слово.
2. Оно ищется в словаре.
3. Если оно там есть - оно выделяется в тексте.
4. Ему присваиваются нужные атрибуты шрифта.
5. Выделение снимается.
6. Работа переходит к следующему слову.

Но! Несмотря на моментальность этой работы, постоянная операция "выделить <-> снять выделение" вызывает очень неприятное мерцание. Как его можно избежать?


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Romikgy
Дата 9.1.2007, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 11
Всего: 146



DoubleBuffered
?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
mr.Anderson
Дата 9.1.2007, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 3
Всего: 128



Я вроде его уже ставил... Попробую еще разок.

Добавлено @ 15:34 
Вспомнил. Попробуйте врубить это свойство у RichEdit'а. У меня лично почему-то весь текст, который я набираю в RichEdit'е с врубленным DoubleBuffered, пропадает. Он набирается, но его не видно. И выделить его нельзя - выделения тоже не видно.

Это сообщение отредактировал(а) mr.Anderson - 9.1.2007, 15:23


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Rodman
Дата 9.1.2007, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 7
Всего: 122



а если этот весь процесс провести в буфере или в невидимом RichEdit, а потом скопировать...
PM MAIL WWW Skype GTalk YIM MSN   Вверх
mr.Anderson
Дата 9.1.2007, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 3
Всего: 128



Rodman, а тогда разве не будет моргания? В любом случае этот вариант очень "тяжелый" с точки зрения модернизации программы. Нужно будет добрую половину кода переписать на новый лад...

Может, еще есть варианты? Плз.

Добавлено @ 17:02 
А в буфере - это вообще как? Как можно выставить подсветку кода в буфере?


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
codelord
Дата 9.1.2007, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 777
Регистрация: 7.5.2005
Где: ты моя темноглаза я где?!

Репутация: 16
Всего: 39



Цитата(mr.Anderson @  9.1.2007,  13:01 Найти цитируемый пост)
Может, еще есть варианты? Плз.

Есть такая штука SynEdit 
качай и наслаждайся в этом компоненте еще много всего, зачем изобретать велосипед RichEdit от Builder на мой взгляд тормознутый непростительно.
смотри здесьhttp://sourceforge.net/project/showfiles.php?group_id=3221


--------------------
Доступен поиск по исходным кодам в GOOGLE.
http://www.google.com/codesearch
PM MAIL   Вверх
mr.Anderson
Дата 9.1.2007, 20:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 3
Всего: 128



Вот только хотел сказать, не предлагайте SynEdit. smile Вы поймите, мне интересен процесс создания подсветки. Я не хочу пользоваться тем, что сделал кто-то другой, хотя бы потому, что мне приносит удовольствие создания кода своими ручками. Я люблю понимать, то что я делаю, только тогда создание программы приносит удовольствие.

Я, конечно, не смогу сделать то же, что в SynEdit, но хотя бы что-то подобное - вполне. Поэтому я и прошу подсказать, как можно избавиться от мерцания.


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Romikgy
Дата 9.1.2007, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 11
Всего: 146



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


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
mr.Anderson
Дата 9.1.2007, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 3
Всего: 128



Romikgy, не совсем понял. Поподробнее плз.


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Romikgy
Дата 9.1.2007, 21:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 11
Всего: 146



ну как ты подсветку делаешь ?
и на основе какого компонента вообще делаешь?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
mr.Anderson
Дата 10.1.2007, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 3
Всего: 128



Подсветку делаю в TRichEdit. Алгоритм выше я описал. Этот алгоритм срабатывает при отпускании клавиши в RichEdit'е (событие OnKeyUp ).


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Romikgy
Дата 10.1.2007, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 11
Всего: 146



могу посоветовать
написать типа такой процедуры
 procedure WMPaint(var Message: TWMPaint); message WM_PAINT;
и регулировать когда рисовать , а когда нет
имхо этим избавишься от мерцания


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
mr.Anderson
Дата 10.1.2007, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 3
Всего: 128



А как эту функцию использовать? Примерно хотя бы. А то я никак не въеду. Примерчик накатайте плз, если не сложно.

Добавлено @ 22:08 
И, плз, на языке C++, хорошо? smile А то я в нем пишу. Буду благодарен.


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
WaReZMEN
Дата 23.9.2007, 01:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 683
Регистрация: 9.6.2006
Где: Россия, Санкт-Пет ербург

Репутация: нет
Всего: 3



Я тоже хочу пример  smile  вызова этои процедуры (WMPaint) в Biulder C++.
PM MAIL ICQ   Вверх
WaReZMEN
Дата 23.9.2007, 05:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 683
Регистрация: 9.6.2006
Где: Россия, Санкт-Пет ербург

Репутация: нет
Всего: 3



Мне уже  не нужно я сам разобрался smile
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0658 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.