Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Delphi: Создание простого цветного TMemo или TEdit

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9

Открыть новую тему     Написать ответ в эту тему

data man



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
StalkerSoftware
Доводы то понятны - но все равно получается практически полное переписывание TMemo.
Оффтоп  на этом закончу, сорри.

Всего записей: 1696 | Зарегистр. 13-10-2005 | Отправлено: 20:55 31-08-2009
ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
StalkerSoftware
Фигасе себе я там багу допустил. Вернее не одну багу, но вот еще один вариант.
Подробнее...
 
Насчет тормозов - ребята, посмотрел загрузку проца при скролировании в акельпаде и Дельфи,  у первого процентов на 5 выше чем у меня, у второй сопоставимо. Так что либо используем стандартные контролы, либо соглашаемся с загрузкой проца. У меня на старом пне 4 с гипертридингом глюков со скролингом (лагов и прочего) на последней версии (я ее оптимизировал немного на отрисовку) не наблюдается.  
Насчет выделений и поведения при нажатиях кнопок. Добавьте нужные коды кнопок на которые выделение не должно пропадать и наоборот (там достаточно большой список перечислений).
Глюков с кривыми выделениями больше не наблюдаю
 
ЗЫ. Перешел от статического массива к динамическому.

----------
И создал Бог женщину... Существо получилось злобное, но забавное...

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 04:37 01-09-2009 | Исправлено: ShIvADeSt, 05:20 01-09-2009
data man



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ну раз кнопки (клавиши ?) не в счет, тогда пока со скроллингом средней кнопкой баг остался.

Всего записей: 1696 | Зарегистр. 13-10-2005 | Отправлено: 08:03 01-09-2009
ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
data man

Цитата:
Ну раз кнопки (клавиши ?) не в счет, тогда пока со скроллингом средней кнопкой баг остался.

Опиши суть бага.

----------
И создал Бог женщину... Существо получилось злобное, но забавное...

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 08:49 01-09-2009
data man



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
если нажать среднюю кнопку и поскролить, появляются "артефакты".

Точнее - у меня кусочек скроллируемого текста отображается в верхнем левом углу, остальная область не перерисовывается.

Всего записей: 1696 | Зарегистр. 13-10-2005 | Отправлено: 08:51 01-09-2009 | Исправлено: data man, 08:53 01-09-2009
ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
data man

Цитата:
Точнее - у меня кусочек скроллируемого текста отображается в верхнем левом углу, остальная область не перерисовывается.

Не подтверждаю, не смог повторить багу. Вот мной скомпилированный ехешник
http://rapidshare.com/files/274134746/ColorMemo.zip.html
попробуйте повторить в нем.

----------
И создал Бог женщину... Существо получилось злобное, но забавное...

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 09:02 01-09-2009
data man



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ShIvADeSt
То же самое, возможно из-за того, что у меня Win7.
Хотя вчера StalkerSoftware тоже подтверждал (хоть и на предыдущей версии).
По моему трабла в WMMouseMove, там где
Код:
else {begin

Всего записей: 1696 | Зарегистр. 13-10-2005 | Отправлено: 09:06 01-09-2009 | Исправлено: data man, 09:14 01-09-2009
ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
data man

Цитата:
То же самое, возможно из-за того, что у меня Win7.

Видимо под вынью7 редроу криво работает, переделал - вот архив с кодом и ехешником
http://rapidshare.com/files/274149953/ColorMemo.zip.html
Так как код переделывал для нормального поведения скролинга колесиком, то тестируйте баги заново.

----------
И создал Бог женщину... Существо получилось злобное, но забавное...

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 10:11 01-09-2009
data man



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ShIvADeSt
Теперь баг возникает не всегда. Иногда при скроллинге, как и раньше прокручивается только верхний левый угол, а потом рывком скролируется и все остальное.
Да, моя тестовая среда не годится. Еще и D2010 компилирую.

Всего записей: 1696 | Зарегистр. 13-10-2005 | Отправлено: 10:26 01-09-2009
ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В общем под ХР SP2 у меня нет багов при скролинге Компиляю в Дельфи 5, тестировать под вистой или вин7 нет возможности. Поэтому ставьте брейкпойнты на WM_MOUSEWHEEL и смотрите что там происходит (происходит ли вообще что то).

----------
И создал Бог женщину... Существо получилось злобное, но забавное...

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 10:41 01-09-2009
data man



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Теперь нужно StalkerSoftware поглядеть на новую версию, если его устроит, то и ладненько.

Всего записей: 1696 | Зарегистр. 13-10-2005 | Отправлено: 10:50 01-09-2009
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
StalkerSoftware
1) Дело хорошее, но вывода о том, что дублирование кода имеет отрицательный характер, я бы не стал. Таких выводов уже не делаю. Тут Вы рискуете пройти мимо истинной интеграции и прийти к изобретению велосипеда. (По моему можно потентовать всё, что не запотентовано, например колесо +смайл).
2) Как не бился - не могу нормально в мемке позиционировать - задать положение курсора и сделать скрол чтоб видно было. Это думаю не считается у нас лишним функционалом? А так сделано из вполне прагматичных рассуждений...
3) Можно о принципиальном в двух/трёх предложениях? Я, вот, не уловил.

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 11:22 01-09-2009 | Исправлено: delover, 11:24 01-09-2009
ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
delover

Цитата:
прийти к изобретению велосипеда

Примерно это и было сделано (то что реализовано в самописных контролах с подсветкой я переписал для Мемо).

Цитата:
Как не бился - не могу нормально в мемке позиционировать - задать положение курсора и сделать скрол чтоб видно было

В моей реализации или сам что то лабаешь? Просто у меня нормально все позиционируется, смотри код - все открыто.

Цитата:
Можно о принципиальном в двух/трёх предложениях? Я, вот, не уловил.

Объясняю за топик стартера - у него есть глобальное приложение, в котором уже это все реализовано на Мемо и Едитах, переходить на другой контрол - перелопачивать код (помимо замены контролов) на приведение в  соотв с новыми контролами.
 
От себя. Сам недавно по работе делал программку, нужно было на 5 Дельфи сделать нормальную отрисовку виндовых тем (5 дельфи не поддерживает темы), в итоге пока нашел аналогичный компонент с поддержкой тем - уже сам переписал существующий, вернее дописал функционал.
 
ЗЫ. вроде придумал как сделать правильную отрисовку выделения, завтра выложу код.

----------
И создал Бог женщину... Существо получилось злобное, но забавное...

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 12:43 01-09-2009 | Исправлено: ShIvADeSt, 14:17 01-09-2009
StalkerSoftware



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ShIvADeSt
Скачал последнюю версию.
 
Ошибки 2 (пол символа) и 3 (выделение текста), про которые я писал на предыдущей странице  остались. Для того, что бы их увидеть достаточно у memo в демке установить не моноширинный фонт (например Arial, 9).
 
Заметил еще один баг с выделением: Сразу после запуска твоего .exe если не трогать мышь, а пользоваться только клавишами, то выделение клавишами не работает. Но после первого же выделения текста мышкой, начинает работать и выделения клавишами.
 
data man

Цитата:
Точнее - у меня кусочек скроллируемого текста отображается в верхнем левом углу, остальная область не перерисовывается.

У меня было немного по другому. При скролинге текста средней кнопкой мыши вниз, внизу оставалась какая то старая строка, а остальной текст скролировался до нее.
Причем я это увидел на компе с XP SP3, хотя на другом компе XP SP2 я этого не наблюдал. В последней версии мемки этого уже нет.
 
delover

Цитата:
Объясняю за топик стартера - у него есть глобальное приложение, в котором уже это все реализовано на Мемо и Едитах, переходить на другой контрол - перелопачивать код (помимо замены контролов) на приведение в  соотв с новыми контролами.

В принципе все верно.
У меня есть библиотека, которую я начал еще во время D1 и с тех пор постоянно ее понемногу развиваю. В ней, помимо прочих компонент и модулей, есть компоненты наследники TMemo и TEdit, в которых я добавил много свойств, методов, событий для облегчения себе разработки программ.
А у этих наследников (в частности у TEdit) есть свою наследники. Все это хозяйство работает достаточно стабильно и на базе него сделан не один десяток программ.
 
В последнее время, мои пользователи все чаще стали просить про добавления орфографии в мои программы. И если сама проверка орфографии у меня почти есть (переделал под себя проверку орфографии от RichView, для hunspell, отвязав ее от RichView), то выделения текста для проверки у меня нет. Вот я и думал добавить ее в TEdit и TMemo малой кровью.
Но судя по уже проделанной работе, уважаемого ShIvADeSt, малой кровью там похоже не очень получается.

Всего записей: 682 | Зарегистр. 23-06-2008 | Отправлено: 18:59 01-09-2009 | Исправлено: StalkerSoftware, 19:00 01-09-2009
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
В моей реализации или сам что то лабаешь?

Я использовал вполне стандартный мемо к которому естественно не дописаны никакие апишные дополнения кроме возможностей драг-дроба файлов. Этому приёмчику научился из одной полезной книженции и не смог, просто, потом отказаться (оказалось органичным для приложения)... Реализацию скачал - думаю она поможет мне понять, каким образом изменились координаты (за что отдельное спасибо)... Там что-то типа попыток поместить всё в lparam припоминается.
 

Цитата:
Объясняю за топик стартера - у него есть глобальное приложение

Как я это понимаю...
 

Цитата:
компонент с поддержкой тем - уже сам переписал существующий,

Сейчас встретился с подобными трудностями. Заметил что нормальное приложение без манифеста меняет рамку окна, а с манифестом в некоторых ситуациях перестаёт просто это делать. Очёвидно что дальше потребуется больше уточнений как и что должно уметь приложение. Поэтому Дельфи 5 настолько для меня священна, что я пожалуй уже и не осмелюсь использовать её для кого-та и кому-та. Только себе.
 
О принципиальном (в случае стартера) думаю надо глядеть в сторону хэшевых приёмов, а не различий между едитами и граф.контролами.

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 19:42 01-09-2009
data man



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
StalkerSoftware
Насчет орфографии - может это пригодится AutoCorrect Components
Там и для TМemo работает. Если подойдет - в ПМ. (т.к. лежит в CC)
ЗЫ Забыл добавить, что для D7 и выше.

----------
Любой достаточно развитый тролль неотличим от подлинно помешанного на какой-либо идее.
Кекс. Антибиотики. Ламбада.

Всего записей: 1696 | Зарегистр. 13-10-2005 | Отправлено: 19:59 01-09-2009 | Исправлено: data man, 20:50 01-09-2009
StalkerSoftware



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
data man

Цитата:
Насчет орфографии - может это пригодится AutoCorrect Components  

Почитал описание, посмотрел демку и немного код.
 
1) Он умеет красить только в наследнике TRichEdit, а в наследниках TMemo и TEdit не умеет. Если я не прав, и он умеет красить текст и для TMemo или TEdit, то поправь меня.
 
2) Если же говорить про функцию "AutoCorrect", т.е. вводим слово ключ, жмем пробел и ключ разворачивается в некий текст, то эта фишка у меня и так есть в моих наследниках TMemo и TEdit.
 
Так что, исходя из п.1 он похоже мне не годится. Хотя за ссылку все равно спасибо.

Всего записей: 682 | Зарегистр. 23-06-2008 | Отправлено: 20:44 01-09-2009
data man



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
StalkerSoftware
Не - красить вообще не умеет, только авто замену.
А TEdit и TMемо есть

Код:
 
 TEditWithAutoCorrect = class(TEdit)
TMemoWithAutoCorrect = class(TMemo)
 

Но раз п.2 реализован - значит не пригодится.

----------
Любой достаточно развитый тролль неотличим от подлинно помешанного на какой-либо идее.
Кекс. Антибиотики. Ламбада.

Всего записей: 1696 | Зарегистр. 13-10-2005 | Отправлено: 20:55 01-09-2009
StalkerSoftware



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
data man

Цитата:
Не - красить вообще не умеет, только авто замену.  

Красить он все же умеет, но не сам, а средствами самого RichEdit в его наследнике TRichEditWithAutoCorrect.

Всего записей: 682 | Зарегистр. 23-06-2008 | Отправлено: 20:59 01-09-2009 | Исправлено: StalkerSoftware, 21:00 01-09-2009
data man



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
StalkerSoftware
Хм, мы же TMemo обсуждаем, нет

----------
Любой достаточно развитый тролль неотличим от подлинно помешанного на какой-либо идее.
Кекс. Антибиотики. Ламбада.

Всего записей: 1696 | Зарегистр. 13-10-2005 | Отправлено: 21:30 01-09-2009 | Исправлено: data man, 21:33 01-09-2009
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Delphi: Создание простого цветного TMemo или TEdit


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru