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

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

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

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

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

MandrataPupa

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Благодарю за разъяснение. Ну я просто, как всякий нормальный ламер решил, что мне уже море по колено. Это бывает. На счёт того, чтобы почитать мне эту теорию - боюсь, как бы у меня вообще тогда не отшибло всю охоту осваивать дельфи. Уж про Ц++ даже и не говорю. Буду лучше пока пользоваться тем, что умные люди придумали.
MikeZ, щас попробовал RichEdit. Да, действительно, открывает TXT. Но таки всё равно сохраняет в RTF. Можно как-то заставить его сохранять в TXT?

Всего записей: 12 | Зарегистр. 31-10-2010 | Отправлено: 22:01 06-11-2010
MikeZ

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MandrataPupa
А свойство PlainText поклацать true/false перед сохранением?
Смысл RichEdit'а в том, что в нём можно с текстом (и не только) по-разному изгаляться. Но сохранение в *.txt убьёт всю малину. Так и смысл его брать?
 
ShIvADeSt
StalkerSoftware
Про начало топика, кстати: киньте ссылкой на прикручивание орфографии, пожалуйста!

Всего записей: 407 | Зарегистр. 01-02-2004 | Отправлено: 02:50 07-11-2010
ShIvADeSt



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

Цитата:
Про начало топика, кстати: киньте ссылкой на прикручивание орфографии, пожалуйста!

Я это не делал, меня более интересует программирование на АПИ. В инете наверное инфа есть.

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

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 03:04 07-11-2010
MandrataPupa

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

Всего записей: 12 | Зарегистр. 31-10-2010 | Отправлено: 09:14 07-11-2010 | Исправлено: MandrataPupa, 09:22 07-11-2010
MikeZ

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Да я, в основном, к StalkerSoftware. Я уже на прикрученное хотел взглянуть.

Всего записей: 407 | Зарегистр. 01-02-2004 | Отправлено: 15:09 07-11-2010
StalkerSoftware



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MikeZ
До прикручивания орфографии у меня дело так и не дошло пока.
 

Всего записей: 682 | Зарегистр. 23-06-2008 | Отправлено: 18:33 08-11-2010
MikeZ

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
StalkerSoftware
досадно, да..
 
all  
хотелось бы, действительно, со стилями шрифтов что-то забацать. Есть мысли, как italic симулировать? Если и не 100% такой стиль, но хоть как-то обозначить? Как bold сделал: просто вывел то же, но со смещением в 1 пкс.

Всего записей: 407 | Зарегистр. 01-02-2004 | Отправлено: 23:36 08-11-2010
ShIvADeSt



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

Цитата:
хотелось бы, действительно, со стилями шрифтов что-то забацать. Есть мысли, как italic симулировать? Если и не 100% такой стиль, но хоть как-то обозначить? Как bold сделал: просто вывел то же, но со смещением в 1 пкс.  

Похоже мой пост выше не дошел до понимания Выводить шрифтом можно любым. Можете проверить, едиту пофигу каким шрифтом что написано, но готовьтесь к тому, что каретка вначале будет посередине символа, а потом со смещением на символ.  

Цитата:
Как bold сделал: просто вывел то же, но со смещением в 1 пкс.  

Не видел как получилось, но боюсь часть букв будет не читаема на некоторых фонтах. Я даже не понимаю честно, нафига так привязались к этому Мемо. Стояла задача сделать синтаксическую подсветку в Мемо. Задача решена. Если же нужен более менее полноценный контрол с более менее полноценной поддержкой различных шрифтов и стилей - РичЕдит наше все. У него врожденная поддержка жирных, курсивов и прочих вкусностей. При этом каретка позиционируется как раз исходя из шрифтов, которые использовались на строке. И делается это на порядок проще и быстрее, чем извращение с Мемо.

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

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 02:08 09-11-2010
MikeZ

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

Цитата:
Похоже мой пост выше не дошел до понимания  

Вообще-то, это моё объяснение, которое я привёл MandrataPupa на середине 7-й страницы Речь не о шрифтах, а о стилях. И то, с ограничением.
 

Цитата:
Я даже не понимаю честно, нафига так привязались к этому Мемо. Стояла задача сделать синтаксическую подсветку в Мемо. Задача решена.
Тот Memo, на котором решалась эта задача, исходно назывался ColorMemo и имел возможность раскрашивать текст. Ну так уже и до стиля один шаг? Да, в RichEdit, кстати, и подчеркивание на раз делается, но memo ж из спортивного интереса раскрашивали?
 
 

Всего записей: 407 | Зарегистр. 01-02-2004 | Отправлено: 12:59 09-11-2010
ShIvADeSt



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

Цитата:
Тот Memo, на котором решалась эта задача, исходно назывался ColorMemo и имел возможность раскрашивать текст. Ну так уже и до стиля один шаг?

Нет не один шаг Я же говорю, использование жирного или курсива вместе с обычным текстом чревато некорректным позиционированием каретки. ColorMemo - это просто название класса, он порождем от обычного мемо, а он по сути обычный едит. При этом основные свойства мемо не трогались - шло только подмена отрисовки, то есть все буквы рисовались на тех же местах, как если бы они были в обычном мемо. Теперь представим что у нас идет смесь стилей - часть текста жирная (ширина текста больше к примеру на 2 пикселя), часть курсивом (на 3 пикселя), часть обычная. В итоге мы имеем что каретка при передвижении смещается неправильно. Если ВЕСЬ текст жирный или курсив - то проблемы нет (так как в основном мемо он такой, то каретка движется правильно), а вот если у нас у основного мемо другой стиль, то чревато.

Цитата:
Да, в RichEdit, кстати, и подчеркивание на раз делается, но memo ж из спортивного интереса раскрашивали?

Да мне было интересно, особенно когда на многих форумах читал, что это невозможно. Но при этом я не добавлял функционал, который нельзя добавить - например вывод картинок или урл .  
Чтобы понять про что я - попробуй выводить буквы чрез одну жирной и обычной и посмотреть как будет прыгать каретка.

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

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 14:38 09-11-2010
MikeZ

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ShIvADeSt
Еще раз: я в курсе про каретку и про все траблы с нею Посмотри, как я «bold» сделал - катретку не трогая.
 
Вот и спрашиваю: какой такой эффект all мог бы предложить забацать, чтобы буквы как-то на italic стали похожи (или стали бы похожи на что-то, что можно было бы, закрыв глаза, условно принять за italic). Чтобы все стили как-то сэмулировать. Чтобы
Цитата:
при этом основные свойства мемо не трогались


Всего записей: 407 | Зарегистр. 01-02-2004 | Отправлено: 23:05 09-11-2010 | Исправлено: MikeZ, 23:06 09-11-2010
ShIvADeSt



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

Цитата:
Посмотри, как я «bold» сделал - катретку не трогая.  

Я читал и написал уже на некоторых шрифтах возможны траблы с отображением некоторых букв.
Насчет курсива - тут единственное что может подойти, это (закрыв глаза естессно ) рисовать реально курсивом, но уменьшить размер шрифта, то есть рассчитываем ширину буквы с нормальным фонтом, потом начинаем подбирать такой размер, чтобы курсив был такого же размера. Скорее всего на 1 размер меньше надо будет делать. Вплоть до таблицы - от такого до такого размера для курсива берем на 1 меньше, для такого на 2 и тп. То есть нужно вывести курсив, рисуешь его шрифтом на 1 меньше. В принципе аналогично можно и с жирным сделать. Если закрыть глаза на небольшое уменьшение текста, то сойдет.

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

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 03:29 10-11-2010
MikeZ

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

Цитата:
на некоторых шрифтах возможны траблы с отображением некоторых букв.

читал, читал! Возможны, да. Но это ж не RichEdit! Так что Бог с ним!
 

Цитата:
рисовать реально курсивом, но уменьшить размер шрифта
Супер! Так и сделаю! Если не будет сильно бросаться в глаза, то и bold туда же. Жалко, нельзя шаг шрифта 0,5 ввести как в Word'е.

Всего записей: 407 | Зарегистр. 01-02-2004 | Отправлено: 07:10 10-11-2010 | Исправлено: MikeZ, 07:14 10-11-2010
MikeZ

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

Цитата:
на некоторых шрифтах возможны траблы с отображением некоторых букв.

Только что нашел ссылку, вроде на МСДН: «Чтобы синтезировать букву в полужирном шрифте, система рисует букву дважды: с отправной точки, и снова со сдвигом на один пиксель вправо от отправной точки.»  
 
Там же;
«Чтобы синтезировать букву в курсивном шрифте, система рисует два ряда пикселей внизу символьного знакоместа, перемещает отправную точку на один пиксель вправо, рисует следующие два ряда, и продолжает это до тех пор, пока не нарисует букву. При помощи перемещения пикселей каждая буква показывается сдвинутой вправо.  Величина сдвига фрагмента изображения является функцией высоты буквы.»
Сейчас будем оформлять

Всего записей: 407 | Зарегистр. 01-02-2004 | Отправлено: 11:53 10-11-2010
ShIvADeSt



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

Цитата:
Чтобы синтезировать букву в курсивном шрифте, система рисует два ряда пикселей внизу символьного знакоместа, перемещает отправную точку на один пиксель вправо, рисует следующие два ряда, и продолжает это до тех пор, пока не нарисует букву. При помощи перемещения пикселей каждая буква показывается сдвинутой вправо.  Величина сдвига фрагмента изображения является функцией высоты буквы.»
Сейчас будем оформлять

Чую тормоза получишь Попробуй лучше меньшим шрифтом рисовать - я в ворде сравнивал, почти не видно разницы

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

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 13:32 10-11-2010
MikeZ

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ShIvADeSt
На самом деле, тормозов особо не будет - выводишь на 1-й временный холст текст, потом на 2-й копируешь 2-пиксельные полоски 1-го со сдвигом, потом копируешь куда надо. Должно быть быстро. Но мы пойдём другим путём
 
Я проще метод нашел: если надо вывести текст в координаты (X, Y), то это означает, что выводятся символы текста в координаты (X + Wi, Y), где Wi - сумма ширин всех символов перед i-м. Ширины этих символов мы знаем, каким бы стилем они не выводились. Запоминаем их и переключаемся на тот стиль, что нам нужен. И выводим «новые» символы в те же позиции. Всё Сейчас наваяю.

Всего записей: 407 | Зарегистр. 01-02-2004 | Отправлено: 17:21 10-11-2010
MikeZ

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Наваял. Замечательно вышло
Теперь можно в обработчике задавать вообще любые стили, для выбранного слова они будут приоритетными, перебивая дефолтные. Например, можно для некоего слова отменить дефолтный Bold.
 
ColorEdit
 
ColorMemo

Всего записей: 407 | Зарегистр. 01-02-2004 | Отправлено: 00:04 11-11-2010
MandrataPupa

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У меня почему-то ругается "Undeclared identifier TUnderLineType".

Всего записей: 12 | Зарегистр. 31-10-2010 | Отправлено: 21:52 12-11-2010
MikeZ

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MandrataPupa
Unit, наверное, не обновил... Посмотри в исходники, оно там сразу объявлено

Всего записей: 407 | Зарегистр. 01-02-2004 | Отправлено: 22:49 12-11-2010 | Исправлено: MikeZ, 22:52 12-11-2010
MandrataPupa

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Да, вижу, что объявлено. Но таки остальное-то всё прекрасно проглотило. Непонятное явление. Я щас просто поудалял UnderLineType отовсюду - и в вызовах FOnCheckWord и, соответственно, в параметрах TCheckWordEvent. Щас всё заработало. Только вот не могу въехать, как заюзать FontStyle. Что мне туда присвоить, чтобы, допустим, получился жирный курсив?
 
Добавлено:
Всё, докопался. Базовых знаний не хваталово, приходится хитростью добывать информацию. Посмотрел в отладчике какое значение получилось у фонта, когда поставил для колормемо болд+италик и такое же присвоил для кейворда. Классно получилось!!! Ну теперь этот колормемо вообще замечательная штуковина!!! К стати, можно было и не париться уж тогда с подчёркиванием, если бы сразу стилем озадачиться. Сразу несколько зайцев одним кирпичом убито!

Всего записей: 12 | Зарегистр. 31-10-2010 | Отправлено: 23:33 12-11-2010
Открыть новую тему     Написать ответ в эту тему

Страницы: 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