Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Компонент вроде TRichEdit с усовершенствованиями. 
:(
    Опции темы
NightmareZ
Дата 9.8.2007, 10:18 (ссылка)  | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


[хакер]
**


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

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



Собсна, сабж.

Меня давно интересует подобный вопрос. Пытался разобраться сам, рылся в сорцах VCL, но до конца не понял.

Идея вот в чём: разработать компонент, реализующий такую функциональность, как, например, в той же IDE Delphi или Visual Studio. Т.е., подсветка синтаксиса, нумерация строк, и т.д. и т.п.

Подсветку синтаксиса пытался сделать на основе TRichEdit. Всё работало (к сожалению, код не могу привести сейчас, если надо будет - скажите, завтра скину), но ужасно тормозило. И это при том, что я проходил не по всему тексту в TRichEdit, а только в близлежащих 20 символах от места изменения. Т.е. пока пройдусь по всем ключевым словам (дабы их выделить цветом), проходит много времени.

Отчасти это было из-за перерисовки TRichEdit. Если от неё избавиться, то работает намного быстрее, но не настолько чтоб можно было применять в реальных приложениях.

Теперь вопросы:
1. На основе чего лучше реализовать редактор с подсветкой синтаксиса (и другими фишками) (только не предлагайте сторонние компоненты)?
2. Как вообще устроен TRichEdit на низком уровне? Как там буквы перекрашиваются и стили текста изменяются? (интересует уровень WinAPI).

Заранее спасибо.




--------------------
NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш
Ely-Art.ru - наша маленькая домашняя арт-студия
mugcraft.ru - кружки на любой вкус
PM WWW ICQ Skype GTalk AOL YIM   Вверх
Snowy
Дата 9.8.2007, 10:19 (ссылка) |  (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Так есть уже такой компонент.
SynEdit'ом зовётся...

Добавлено через 1 минуту и 33 секунды
Цитата(NightmareZ @  9.8.2007,  10:18 Найти цитируемый пост)
 Как вообще устроен TRichEdit на низком уровне? Как там буквы перекрашиваются и стили текста изменяются? (интересует уровень WinAPI).
Это вопрос к разработчикам Microsoft.
Это их контрол  smile 
А дельфийский TRichEdit всего лишь класс-обёртка над ним.
PM MAIL   Вверх
Addmin
Дата 14.8.2007, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Зря минусами в Snowy кидаетесь smile Он прав - Зачем изобретать велосипед, если всё уже давно сделано лучше, чем мы можем? 

Цитата

(только не предлагайте сторонние компоненты)

А на чём иначе? На Memo или на Edit? RTF изначально не приспособлен для таких громоздких работ. Если реализовать всё-то, что Вы хотите - это уже даже не RichEdit будет smile

Насколько я знаю, множество хороших редакторов сделано на SynEdit (Ну или Scintilla, но их меньшинство). И ничего, не жалуются smile


--------------------
PM MAIL   Вверх
Sanchezzz
  Дата 14.8.2007, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 5
Всего: 60



SynEdit я не нашел не каких минусов а вот при использование alphaskins глючить прокрутка... ну это дефект alphaskins.
TRichEdit представляю подсветку синтаксиса на нем даже если делать по примеру из delphiworlda который там есть большой текст будет тормозить. все же synedit удобнее и быстрей. откажись от этой мысли


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
Snowy
Дата 14.8.2007, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Цитата(Sanchezzz @  14.8.2007,  19:57 Найти цитируемый пост)
SynEdit я не нашел не каких минусов а вот при использование alphaskins глючить прокрутка... ну это дефект alphaskins.
Ну это легко лечится.
Просто нужно отключить его скинование.
Правда скрол становится не скиновым, но из двух зол...
Сам недавно наступил на эти грабли.
С VirtualTree проблемы там ещё серъёзней.
Приходится отключать скинование. Но лучше так, чем никак...
PM MAIL   Вверх
aktuba
Дата 14.8.2007, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

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



Цитата

SynEdit я не нашел не каких минусов а вот при использование alphaskins глючить прокрутка... ну это дефект alphaskins.


Использую и то и другое. Подобного не замечал. Можно подробнее?

Цитата

С VirtualTree проблемы там ещё серъёзней.


А с ним то какие проблемы? Кроме Header-а вроде все скиниться... 

Это сообщение отредактировал(а) aktuba - 14.8.2007, 21:17


--------------------
user posted image
PM MAIL WWW Skype   Вверх
Snowy
Дата 14.8.2007, 23:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Цитата(aktuba @  14.8.2007,  21:16 Найти цитируемый пост)
Использую и то и другое. Подобного не замечал. Можно подробнее?
Бывают глюки с отрисовкой.

Цитата(aktuba @  14.8.2007,  21:16 Найти цитируемый пост)
А с ним то какие проблемы? Кроме Header-а вроде все скиниться... 

Вот именно. Я про хедер и говорю. С ним глюки ужасные.
В принципе и хедеры скинятся. Но только статичные. И криво. Не перерисовываются.
А динамические глючат на полную.
То есть использование, как листвью невозможно. Особенно при динамическом построении.
Вот и приходится отрубать.
Но енто оффтоп...
PM MAIL   Вверх
aktuba
Дата 15.8.2007, 08:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

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



Цитата

Вот именно. Я про хедер и говорю. С ним глюки ужасные.
В принципе и хедеры скинятся. Но только статичные. И криво. Не перерисовываются.
А динамические глючат на полную.
То есть использование, как листвью невозможно. Особенно при динамическом построении.
Вот и приходится отрубать.
Но енто оффтоп... 


В принципе, я делал проще, наверно поэтому и не замечал глюков. Я назначал хидеру основной для скина цвет (есть в alphaskins такой параметр)... ну и пару раз руками рисовал хедеры. Я вообще понемногу огорчаюсь в AlphaSkins, наверно придется другую библиотеку подбирать  smile 

Простите за оффтоп...


--------------------
user posted image
PM MAIL WWW Skype   Вверх
NightmareZ
Дата 16.8.2007, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


[хакер]
**


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

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



Цитата(Sanchezzz @ 14.8.2007,  19:57)
SynEdit я не нашел не каких минусов а вот при использование alphaskins глючить прокрутка... ну это дефект alphaskins.
TRichEdit представляю подсветку синтаксиса на нем даже если делать по примеру из delphiworlda который там есть большой текст будет тормозить. все же synedit удобнее и быстрей. откажись от этой мысли

Вообще, странный подход "это сложно - откажись". Мне интересно. Хочу сделать.


--------------------
NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш
Ely-Art.ru - наша маленькая домашняя арт-студия
mugcraft.ru - кружки на любой вкус
PM WWW ICQ Skype GTalk AOL YIM   Вверх
Rennigth
Дата 16.8.2007, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 49
Всего: 76



Цитата(NightmareZ @  16.8.2007,  12:44 Найти цитируемый пост)
Вообще, странный подход "это сложно - откажись". 

Не такой уж и странный. Зачем что-то делать если это уже сделано за тебя. Цель не оправдывает средства. Если бы программисты писали все всегда с нуля...  так бы и жили бы в каменном веке до сих пор.

Цитата(NightmareZ @  16.8.2007,  12:44 Найти цитируемый пост)
Мне интересно. Хочу сделать. 

Похвально, тогда тебе сюда. Более полной документации нигде не найдешь.





--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
Addmin
Дата 16.8.2007, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата

так бы и жили бы в каменном веке до сих пор.

Ага, и на "Эльбрусе" работали!


--------------------
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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