Вот решил поделиться примером реализации блокнота со строками различных цветов.
Для этого использовал компонент richmemo http://wiki.freepascal.org/RichMemo
Но когда скачал его по ссылке выше, то при компиляции возникли ошибки в коде (неверное число параметров процедуры и т.п.) поэтому я не стал с этим возится и скачал рабочий пакет здесь http://lazplanet.blogspot.ru/2013/12/create-rich-text-editor-for-yourself.html
Если вы посмотрите блог очень хороший с подробными примерами.
Но далее интереснее - как выделить строку цветом не выделяя её, а просто при добавлений.
Логически было верно так
- Код: Выделить всё
- procedure TForm1.Button1Click(Sender: TObject);
 var
 s: string;
 i: integer;
 begin
 i:=rich.GetTextLen;
 s:='зеленая строка'+inttostr(i);
 rich.Lines.Add(s);
 rich.SetRangeColor(i+1,length(s),clgreen); //Число знаков до добавления + 1 - это начальная позиция.
 end;
Но этот код не работает, поэтому пришлось зделать немного по другому.
- Код: Выделить всё
- unit Unit1;
 {$mode objfpc}{$H+}
 interface
 uses
 Classes, SysUtils, FileUtil, RichMemo, Forms, Controls, Graphics, Dialogs,
 StdCtrls;
 type
 { TForm1 }
 TForm1 = class(TForm)
 Button1: TButton;
 Button2: TButton;
 Button3: TButton;
 Rich: TRichMemo;
 procedure Button1Click(Sender: TObject);
 procedure Button2Click(Sender: TObject);
 procedure Button3Click(Sender: TObject);
 private
 { private declarations }
 public
 { public declarations }
 end;
 var
 Form1: TForm1;
 implementation
 {$R *.lfm}
 { TForm1 }
 procedure TForm1.Button1Click(Sender: TObject);
 var
 s: string;
 i: integer;
 begin
 i:=rich.GetTextLen;
 s:='зеленая строка'+inttostr(i);
 rich.SetRangeColor(i,1,clgreen);
 rich.Lines.Add(s);
 end;
 procedure TForm1.Button2Click(Sender: TObject);
 var
 s: string;
 i: integer;
 begin
 i:=rich.GetTextLen;
 s:='красная строка'+inttostr(i);
 rich.SetRangeColor(i,1,clred);
 rich.Lines.Add(s);
 end;
 procedure TForm1.Button3Click(Sender: TObject);
 var
 s: string;
 i: integer;
 begin
 i:=rich.GetTextLen;
 s:='обычная строка'+inttostr(i);
 rich.SetRangeColor(i,1,cldefault);
 rich.Lines.Add(s);
 end;
 end.
Буду рад любым комментариям, спасибо.



 А то люди так и застаряли в r3400
 А то люди так и застаряли в r3400 
