IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

 
 Ответить  Открыть новую тему 
> Вопрос про TMemo
Unconnected
сообщение 30.04.2009 22:28
Сообщение #1


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Привет всем.

Вопрос: как в TMemo можно выделять другим цветом (шрифтом) определённые участки текста? И ещё, как можно программно избавиться от перевода каретки? Memo1.text:=''; не помогает unsure.gif


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 30.04.2009 22:55
Сообщение #2


Гость






Цитата
как в TMemo можно выделять другим цветом (шрифтом) определённые участки текста?
Никак. TMemo - это чистый текст, без форматирования. Надо форматирование - TRichEdit к твоим услугам.

Второй вопрос еще актуален?
 К началу страницы 
+ Ответить 
Unconnected
сообщение 30.04.2009 22:59
Сообщение #3


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Цитата

Второй вопрос еще актуален?


Актуален, почему нет smile.gif


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 30.04.2009 23:26
Сообщение #4


Гость






Тогда уточняй, как именно ты добавляешь текст в Мемо, и от чего хочешь избавиться?
 К началу страницы 
+ Ответить 
Unconnected
сообщение 1.05.2009 15:36
Сообщение #5


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Ну вот допустим в Memo был нажат Enter. Произошёл переход на следующую строку. Как программно поставить курсор на начало Memo?


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 1.05.2009 16:05
Сообщение #6


Гость






var
p: TPoint;
//
P.X := 0; P.Y := 0;
Memo1.CaretPos := P;
Memo1.SetFocus;
?
 К началу страницы 
+ Ответить 
Unconnected
сообщение 1.05.2009 20:56
Сообщение #7


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Спасибо, помогло smile.gif


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Unconnected
сообщение 2.05.2009 11:28
Сообщение #8


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


blink.gif теперь с RichEdit проблема, в него постепенно добавляются данные и мне нужно выделять цветом части этих строк,делаю так:

s7:=copy(s,1,Pos(';',s)-1)+' ('+slabel1.caption+') > '+#13+copy(s,Pos(';',s)+1,Length(s)-Pos(';',s));
ready.Lines.Insert(0,s7);
ready.selstart:=0;
ready.SelLength:=0;
ready.SelLength:=pos(#13,s);
ready.SelAttributes.color:=clred;


При первом добавлении всё нормально выделяется, а при последующих выделяется вся строка,не часть.


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 2.05.2009 11:51
Сообщение #9


Гость






Цитата
При первом добавлении всё нормально выделяется
Ну мне что, после каждого твоего поста писать: "ЧТО ВЫДЕЛЯЕТСЯ?" Как получаешь строку, из чего она состоит??? Я ж даже смоделировать ситуацию не могу, ибо у тебя и переменные непонятно какие, непонятно откуда берутся, непонятно, что содержат, непонятно на каком событии все это висит, и непонятно, ЧЕГО ТЫ ХОЧЕШЬ чтоб выделялось. Сколько можно уже? Хочешь помощи - давай информацию (скриншоты, описание, что-то, чтоб можно было определить причину неправильного - по твоему - поведения программы), а не просто КУСОК КОДА. Здесь не телепаты. Точка. Все твои последующие посты в этом стиле будут просто проигнорированы, потому что надоело ДОГАДЫВАТЬСЯ.

Я сейчас брошу на форму RichEdit, и сделаю так, что твой код заработает (не твое дело, ЧТО я для этого буду делать, но вот тот кусок кода, который ты привел, будет делать то, что я хочу понимать под твоим описанием, следовательно, он будет работать), что тогда?
 К началу страницы 
+ Ответить 
Unconnected
сообщение 2.05.2009 13:14
Сообщение #10


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Ок, каюсь, описание:
всё это висит на событии OnRead клиентского сокета, т.е. приходит сообщение - и оно помещается в TRichEdit, сверху. Вот так это выглядит:

Изображение

Как видно на скрине, когда сообщение самый первый раз добавляется в RichEdit, то всё происходит как нужно - никнейм отправителя и время отправления окрашиваются в красный цвет, само сообщение остаётся чёрным. При последующих добавлениях в RichEdit "краснеет" всё, и никнейм со временем, и само сообщение. Строка состоит из: никнейм отправителя+время+символ перевода каретки+само сообщение. Нужно, чтобы выделялись красным цветом никнейм и время.
Вроде всё.

Сообщение отредактировано: Unconnected - 2.05.2009 13:17


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 2.05.2009 16:45
Сообщение #11


Гость






Попробуй принудительно сбросить цвет у всего текста в новом сообщении, который не должен быть красным:

s7 := // тут собираешь свою строку

ready.Lines.Insert(0, s7); // сначала добавляешь, потом управляешь атрибутами !!!
b := Pos(#$D, s7); // var b: integer
ready.SelStart := 0;
ready.SelLength := b;
ready.SelAttributes.Color := clRed;
ready.SelStart := b;
ready.SelLength := Length(s7) - b;
ready.SelAttributes.Color := clBlack;
 К началу страницы 
+ Ответить 
Unconnected
сообщение 2.05.2009 17:39
Сообщение #12


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Спасибо, работает good.gif


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 29.04.2024 3:41
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"