![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как правильно добавлять разноцветные строки в 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;