Помощь - Поиск - Пользователи - Календарь
Полная версия: Вопрос про TMemo
Форум «Всё о Паскале» > Delphi, Assembler и другие языки. > Delphi
Unconnected
Привет всем.

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

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

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


Актуален, почему нет smile.gif
volvo
Тогда уточняй, как именно ты добавляешь текст в Мемо, и от чего хочешь избавиться?
Unconnected
Ну вот допустим в Memo был нажат Enter. Произошёл переход на следующую строку. Как программно поставить курсор на начало Memo?
volvo
var
p: TPoint;
//
P.X := 0; P.Y := 0;
Memo1.CaretPos := P;
Memo1.SetFocus;
?
Unconnected
Спасибо, помогло smile.gif
Unconnected
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;


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

Я сейчас брошу на форму RichEdit, и сделаю так, что твой код заработает (не твое дело, ЧТО я для этого буду делать, но вот тот кусок кода, который ты привел, будет делать то, что я хочу понимать под твоим описанием, следовательно, он будет работать), что тогда?
Unconnected
Ок, каюсь, описание:
всё это висит на событии OnRead клиентского сокета, т.е. приходит сообщение - и оно помещается в TRichEdit, сверху. Вот так это выглядит:

Изображение

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

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
Спасибо, работает good.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.