Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как правильно добавлять разноцветные строки в RichEdit?


lics ©   (2007-02-28 13:40:00) 

К примеру мне надо добавить в RichEdit строку 'rgb', чтобы буквы r, g и b соответственно были clRed, clGreen и clBlue. Как это правильно сделать?


Dmitrij_K   (2007-02-28 16:09:00) [1]

procedure AddText(const aText: AnsiString; aColor: TColor);
var k : Integer;
begin
 k := RichEdit1.GetTextLen;
 RichEdit1.Perform(EM_SETSEL, k, k);
 RichEdit1.SelAttributes.Color := aColor;
 RichEdit1.Perform(EM_REPLACESEL, 0, Longint(PChar(aText)));
end;


lics   (2007-02-28 14:17:00) [2]

А есть какая-нибудь альтернатива? Что-нибудь наподобии:
r.SelAttributes.Color:=clRed;
r.AddText('r');
r.SelAttributes.Color:=clGreen;
r.AddText('g');
r.SelAttributes.Color:=clBlue;
r.AddText('b'+#13#10);


Elen   (2007-02-28 14:13:00) [3]


> Но по-моему это "левое" решение.

Рабочее решение левым не бывает. ;)


lics   (2007-02-28 14:01:00) [4]

Вот так все работает:
r.Lines.Add('rgb');
r.SelStart:=Length(r.text)-5;
r.SelLength:=1;
r.SelAttributes.Color:=clRed;
r.SelStart:=r.SelStart+1;
r.SelLength:=1;
r.SelAttributes.Color:=clGreen;
r.SelStart:=r.SelStart+1;
r.SelLength:=1;
r.SelAttributes.Color:=clBlue;

Но по-моему это "левое" решение.

Наверняка можно сделать как-нибудь иначе через DefAttributes...


lics   (2007-02-28 13:57:00) [5]

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


Elen   (2007-02-28 13:55:00) [6]


> lics   (28.02.07 13:40)

А, в смысле каждая буква разного цвета?


Elen   (2007-02-28 13:53:00) [7]


> lics   (28.02.07 13:40)

типа :
var t:Tcolor;
begin
t:=clred or clgreen;
caption:=ColorToString(GetRValue(t))+' '+ColorToString(GetGValue(t))+
ColorToString(GetBValue(t));
end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо