Вот решил поделиться примером реализации блокнота со строками различных цветов.
Для этого использовал компонент 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.
Буду рад любым комментариям, спасибо.