StalkerSoftware
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору ShIvADeSt Пытался я на базе TColorMemo сделать TColorEdit, но что оно не очень. Отрисовка идет не правильная. К TEdit я добавил три свойства WordWrap, WantReturns, Alignment, что бы можно было в Edit визуально вводить текст в виде виде нескольких строк (хотя конечно реально там одна строка). Все эти свойства работают и отрисовывают текст нормально. В ряде случаев такой псевдо многострочный Edit удобнее чем Memo. А потом я добавил в него функциональность ColorMemo. Само выделение текста работает вроде бы нормально, но вот отрисовка всего этого глючит. Вот ссылка на код ColorEdit и небольшую демку к нему. 1) Периодически (но не всегда, похоже это как то задается во время компиляции) текст почему то центрируется в Edit. 2) При заходе в ColorEdit1 всегда выделяется текст, хотя по идее он должен выделятся только один раз. 3) При заходе в ColorEdit1 виден скачок текста в начало Edit, а потом опять по центру. 4) В ColorEdit2, где включен режим WordWrap текст дублируется по всей высоте Edit'а. 5) Отрисовка текста весьма плохо (или даже вообще ни как) не согласуется с новыми тремя свойствами. Как я понимаю, основная проблема тут зарыта в обработчиках WMPaint, WMPrintClient и в PaintLine, так где идет расчет координат и непосредственная отрисовка текста. Пробовал их менять, но честно говоря получилось весьма не очень. Все же получившийся ColorMemo оказалось перенести на Edit гораздо сложнее, чем я первоначально думал. 2 ShIvADeSt: Очень нужна твоя помощь в этом вопросе. Добавлено: data man Ну ты скорый, не успел выложить, ты уже смотришь Цитата: Ну первая ошибка - требуется ColorEdit, но это мелочи | Исправил, перезалил. Цитата: Если долго держать нажатой любую символьную клавишу - очень медленно работает. Тесты продолжаются. | Насколько долго ее надо держать ? У меня этого замедление не наблюдается, правда у меня довольно быстрый проц E8500, так что на более медленных машинах оно может и есть ... Проявляется ли это замедление в оригинальном коде ShIvADeSt или в стандартном TMemo ? Посмотри, если для первой мемки закомментировать IsUnderline := True, будет ли видно это замедление ? |