Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.10.2009, 20:58   #1
W0LF
Форумчанин
 
Аватар для W0LF
 
Регистрация: 28.03.2008
Сообщений: 940
Восклицание

Люди кто может помочь ?
Нужно обшарить каждую строку и если она начинаеться с
Код:
'<'+name+'>'
тогда закрасить эту часть строки например красным цветом, а если она начинаеться словом, начинающемся символом '<' но не равняеться вышеупомянутому
Код:
'<'+name+'>'
тогда этот кусок с '<' по '>' покрасить в синий.

Код:
procedure TForm1.RichEdit1Change(Sender: TObject);
var
f, t, l, I: cardinal;
begin
for I:=0 to RichEdit1.Lines.Count-1 do begin
   f := pos('<', RichEdit1.Lines.Strings[i])-1;
   t := pos('>', RichEdit1.Lines.Strings[i]);
   l := t - f;
   RichEdit1.SelStart := f;
   RichEdit1.SelLength := l;
   RichEdit1.SelAttributes.Color := clRed;
  end;
  end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Richedit1.Text:='<W0LF> Сообщение';
end;
Вот так работате, но не работает если добавлять текст через Lines.Add, а здесь совершенно не одна строчка будет

Последний раз редактировалось Stilet; 27.10.2009 в 16:53.
W0LF вне форума Ответить с цитированием
Старый 25.10.2009, 22:34   #2
HellMercenariess
Форумчанин
 
Аватар для HellMercenariess
 
Регистрация: 27.07.2009
Сообщений: 547
По умолчанию

http://programmersforum.ru/showthread.php?t=56874

Цитата:
Есть RichMemo - компонент для подсветки синтаксиса без лишних наворотов
"Виновник этого парада,он не дурак, ушел как надо!" Похороны панка.
HellMercenariess вне форума Ответить с цитированием
Старый 27.10.2009, 16:26   #3
W0LF
Форумчанин
 
Аватар для W0LF
 
Регистрация: 28.03.2008
Сообщений: 940
По умолчанию

Помогите плиз, а то очень надо, но не могу найти нечего, что мне помогло б...

Код:
procedure ColoredRE(sim1,sim2:Char;name,text:string);
var
  i:integer;
begin
Form1.RichEdit1.Lines.Add(sim1+name+sim2+' '+text); //будет текст типа: <nik> Привет всем!!!
  for i:=0 to Form1.RichEdit1.Lines.Count-1 do begin
    if Pos(sim1,Form1.RichEdit1.Lines.Strings[i])<>0 then
        if Pos(sim2,Form1.RichEdit1.Lines.Strings[i])<>0 then begin
          Form1.RichEdit1.SelStart:=0;
          Form1.RichEdit1.SelLength:=Length(name)+2;
          Form1.RichEdit1.SelAttributes.Color:=clRed;
        end;
  end;
Красит только первую строку в RichEdit'e, а остальные нехочет.. В чом проблема?

Последний раз редактировалось Stilet; 27.10.2009 в 16:53.
W0LF вне форума Ответить с цитированием
Старый 01.11.2009, 17:41   #4
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Хм... Поясните что именно должно получаться...
И для чего оно будет использоваться - пользователю разрешено писать что-то в RichEdit1 или туда будет только программно что-то вписываться?

А для "покраски текста" использовать RichEdit1Change, да ещё и с циклом по всему тексту как-то слишком жестоко.....

Ну если это будет чат, то можно сделать что-то вроде такого:
Код:
Procedure AddMessage(Name, Msg: String);
Var n: Integer;
Begin
n:=Length(Form1.RichEdit1.Text); // запоминаем длину текста
Form1.RichEdit1.Lines.Add('<'+Name+'> Сообщение:');
Form1.RichEdit1.SelStart:=n; // устанавливаем начало выделения
Form1.RichEdit1.SelLength:=Length(Name)+2; // устанавливаем длину выделения (длина имени плюс две скобки)
Form1.RichEdit1.SelAttributes.Style:=[fsBold, fsUnderline]; // делаем имя жирным и подчёркнутым
Form1.RichEdit1.SelAttributes.Color:=clNavy; // ... и тёмно синего цвета
Form1.RichEdit1.Lines.Add(Msg); // добавляем само сообщение
Form1.RichEdit1.Lines.Add(''); // пустая строка, чтоб разделить сообщения
End;

Procedure TForm1.Button1Click(Sender: TObject);
Begin
AddMessage('Tom', 'Hello!'); // проверка процедуры
AddMessage('Robot', 'My'#13'Name'#13'Is'#13'Robot!'); // #13 сделает переход на новую строку (#10 добавлять не надо, "Lines.Add" его обычно само добавляет)
End;
I am the First of Cyber Evolution...
I am the First to Program your Future...

Последний раз редактировалось Stilet; 03.11.2009 в 11:46.
DomiNick вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Смена цвета. Stranger333 Общие вопросы Delphi 6 07.10.2009 21:14
Смена цвета в ListCtrl assasin Общие вопросы C/C++ 0 22.08.2009 01:13
смена цвета строки dbgrid - ? Evgenii БД в Delphi 3 04.07.2009 07:57
Смена цвета текста или фона строки относительно возвращённого значения abdumanon Microsoft Office Excel 1 07.04.2009 02:10
смена цвета ячейки если... zetrix Microsoft Office Excel 0 30.10.2006 19:06