Вниз
Скачать: CL | DM;

Как в RichEdit Выводить строку с заданным стилем?   Найти похожие ветки 

← →
h0use ©   (2003-12-17 10:50) [0]

Уважаемые мастера, есть вопрос. Есть нека строка, которую надо неким цветом (например, красным) вывести в ричедите, при все при этом остальной текст должен остоваться черным. Как это проделать? Искал, искал, но так и не нашел :(


← →
Babay ©   (2003-12-17 11:24) [1]

Richedit - SelAttributes - F1


← →
VAleksey ©   (2003-12-17 11:51) [2]

Найти номер символа начала строки и конца, выделить (SelStart, SelLength) + Babay © (17.12.03 11:24).


← →
h0use ©   (2003-12-17 12:15) [3]

Не совсем то хотелось...как Babay я просто вывожу строку, а хотелось добавить по Add строку так, чтоб часть ее была одного стиля нежели другая, например есть строка "тестовая строка", хочется вывести ее в Риче как " тестовая строка"


← →
Babay ©   (2003-12-17 12:25) [4]

прямой функции нет.
см. VAleksey © (17.12.03 11:51) [2]
но для твоего примера ищем начало слова "строка"


← →
h0use ©   (2003-12-17 12:37) [5]

Т.е. как я понял, сначала методом Add мы добавляем строку в RichEdit, а потом выделяя по кускам назначаем стили?

А можно добовлять строку в Ричедит кусками?


← →
Babay ©   (2003-12-17 12:42) [6]

Richedit1.Lines[<№ твоей строки>]:=Richedit1.Lines[<№ твоей строки>]+"<следующийкусок>";


← →
h0use ©   (2003-12-17 12:45) [7]

Спасибо, я сам додумался, буду тебе экспериментить на тему, будет ли при таком добавлении меняться стиль добавляемого элемента


← →
Babay ©   (2003-12-17 12:45) [8]

sorry glyknulo
1. да все верно ты понял

2. Richedit1.Lines[<№ твоей строки>]:=Richedit1.Lines[<№ твоей строки>]+"<следующийкусок>";

Тока строка при этом должна уже существовать. Т.е. первый кусок по add или insert


← →
h0use ©   (2003-12-17 13:26) [9]

Кстати, а как быстро получить номер последней строки?


← →
h0use ©   (2003-12-17 13:37) [10]

Увы свойства селекта почему-то остаются на всю строку :(


← →
h0use ©   (2003-12-17 13:47) [11]

Вот процедура вывода

procedure TfmMain.AddChatText(AString:String);
var
I: Integer;
S: string;
P: Integer;
begin
reChat.SelAttributes.Style:=[fsBold];
reChat.Lines.Add("["+DateTimeToStr(Now)+"]");
S:=Copy(AString,2,Pos("]",AString)-2);
reChat.SelAttributes.Style:=reChat.SelAttributes.Style-[fsBold];
if S=BAConn.Login then reChat.SelAttributes.Style:=[fsItalic]
else reChat.SelAttributes.Style:=[fsBold];
P:=reChat.Lines.Count-1;
reChat.Lines[P]:=reChat.Lines[P]+"["+S+"]";
S:=Copy(AString,Pos("]",AString)+1,Length(AString));
reChat.Lines[P]:=reChat.Lines[P]+S;
end; // AddChatText

При первом вызове процедуры получаем всю жирную строку (даже при выполнении проверки). При втром и далее вызове вообще никак не выделяет, просто кидает обычным шрифтом.

В чем грабли?


← →
h0use ©   (2003-12-17 14:29) [12]

Ну так что?



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.013 c
14-99737
Chuha
2003-12-08 08:27
2003.12.30
Гробница фараона


1-99528
velial
2003-12-16 11:56
2003.12.30
Передача параметров в процедуру/функцию


1-99540
Иванько
2003-12-15 17:16
2003.12.30
Жутко умный вопрос про ОЛЕ, WINAPI и все остальное :)))


1-99636
Новенький
2003-12-16 21:45
2003.12.30
Закрыть форму до открытия...


14-99782
cyborg
2003-12-05 15:38
2003.12.30
Два компьютера




   Наверх