Текущий архив: 2011.01.23;
Скачать: CL | DM;
Вниз
Как все цифры в RichEdit покрасить в другой цвет? Найти похожие ветки
← →
demon © (2010-10-26 04:10) [0]Прошу помощи, задача вроде бы простая, но я в тупике.
Если конкретно, то не знаю как определить число в RichEdit1.SelText или другой символ.
← →
KilkennyCat © (2010-10-26 06:12) [1]case RichEdit1.SelText of
"1" : showmessage("один");
"2" : showmessage("два");
else showmessage("много");
end;
strtointdef()
← →
MonoLife © (2010-10-26 06:59) [2]procedure Val() +F1
← →
Leonid Troyanovsky © (2010-10-26 07:44) [3]
> KilkennyCat © (26.10.10 06:12) [1]
> case RichEdit1.SelText of
Ordinal type required.
--
Regards, LVT.
← →
Leonid Troyanovsky © (2010-10-26 07:54) [4]
> demon © (26.10.10 04:10)
> Если конкретно, то не знаю как определить число в RichEdit1.
> SelText или другой символ.
Если конкретно, то
1. В SelText м.б. и не один символ.
2. Число м.б. представлено не только десятичными цифрами,
f.e., 0xFF, +0.1e-3, e^(i*pi).
--
Regards, LVT.
← →
KilkennyCat © (2010-10-26 08:33) [5]
> Leonid Troyanovsky © (26.10.10 07:44) [3]
гм.. и в новых делфях? что-то мне помнится, с селектом очень нагло работал...
← →
Leonid Troyanovsky © (2010-10-26 09:10) [6]
> KilkennyCat © (26.10.10 08:33) [5]
> гм.. и в новых делфях? что-то мне помнится, с селектом очень
> нагло работал...
Наверное, с SelText[1] или подобным.
--
Regards, LVT.
← →
RWolf © (2010-10-26 14:01) [7]
> Как все цифры в RichEdit покрасить в другой цвет?
1) выгрузить содержимое RichEdit в формате RTF;
2) с помощью регулярных выражений дополнить все вхождения чисел оператором цвета \cbn (см. http://www.codenet.ru/progr/formt/rtf1.php);
3) загрузить RTF обратно в RichEdit.
← →
demon © (2010-10-26 17:12) [8]Смысл способа ясен, но такой вариант очень громоздкий.
← →
Германн © (2010-10-26 17:38) [9]
> такой вариант очень громоздкий
Тогда замени RichEdit на SinEdit. Ничего ручками делать не надо будет.
:)
← →
TStas (2010-10-26 21:30) [10]А нужно именно в SelText? Или вообще во всём тексте? Самый, ИМХО, короткий путь примерно такой.
1) BegN := RichEdit1.SelStart; //Получил номер начала выделения, начиная с 0
Ln := RichEdit1.SelLength; //Длинна выделения
If Ln = 0 then exit; //С пустым текстом ничего не делаем
S := RichEdit1.SelText; //Собственно, выделенная строчка
2) RichEdit1.Lines.BeginUpdate; //Заблокировал рисование, чтобы не мелькало при перекраске
3) for i := 1 to Ln do //Цикл по всей выделенной строке
If S[i] in ["0".."9"] then //Это цифра?
begin // - Да, цифра
n := BegN + i - 1; //Номер символа от начала текста. -1 поскольку с 0
RichEdit1.SelStart := n; //Начал выделять с цифры
RichEdit1.SelLength := 1; //Выделил 1 символ
RichEdit.SelAttributes.Color := clRed; //красеньким. Это TColor
RichEdit1.SelAttributes.Style := [fsBold]; //Жирным. Это стиль шрифта
end;
4) RichEdit1.Lines.EndUpdate; //Разрешил рисоваться
Это самый простой способ. Название свойств писал по памяти, мог и с ошибками написать. Его можно, но особо не нужно, оптимизировать, например, посчитав сколько подряд цифр и выделяя их сразу. Но в реальности это значение не имеет, т. к. время тратится на перерисовку, а здесь просто выставляются атрибуты.
Если нужно заменить выделение не в выделенном, а во всём тексте, тогда нужно SelText заменить в шаге 1 на просто текст, а BegN просто выкинуть, он 0, а вместо Ln := SelLength написать Length(RichEdit1.Text)
← →
TStas (2010-10-26 21:32) [11]PS. SelText - это обычное строковое св-во. Копируешь его в переменную строковую, чтобы почём зря метод чтения не вызывать, и в строчке ищешь, что нужно.
Админы, не ругайтесь, что два сообщения подряд написал
← →
RWolf © (2010-10-27 01:18) [12]
> demon © (26.10.10 17:12) [8]
> Смысл способа ясен, но такой вариант очень громоздкий.
пять строчек кода — это громоздко?
← →
demon © (2010-11-01 17:37) [13]Подошел к своей задаче с другой стороны, наверняка неграмотно... Но работает.
Текст в RichEdit добавляю через:procedure AddText(Text: String);
begin
Form1.RichEdit1.SelText := Text;
end;
А цифры (то, что хочу выделить другим цветом):procedure AddColorNum(Text: String);
begin
Form1.RichEdit1.SelAttributes.Color := clBlue;
Form1.RichEdit1.SelText := Text;
Form1.RichEdit1.SelAttributes.Color := clBlack;
end;
Страницы: 1 вся ветка
Текущий архив: 2011.01.23;
Скачать: CL | DM;
Память: 0.5 MB
Время: 0.009 c