Компонент Richmemo

Добрый день!
Вот решил поделиться примером реализации блокнота со строками различных цветов.
Для этого использовал компонент richmemo http://wiki.freepascal.org/RichMemo
Но когда скачал его по ссылке выше, то при компиляции возникли ошибки в коде (неверное число параметров процедуры и т.п.) поэтому я не стал с этим возится и скачал рабочий пакет здесь http://lazplanet.blogspot.ru/2013/12/create-rich-text-editor-for-yourself.html
Если вы посмотрите блог очень хороший с подробными примерами.
Но далее интереснее - как выделить строку цветом не выделяя её, а просто при добавлений.
Логически было верно так
Но этот код не работает, поэтому пришлось зделать немного по другому.
Буду рад любым комментариям, спасибо.
Вот решил поделиться примером реализации блокнота со строками различных цветов.
Для этого использовал компонент 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.
Буду рад любым комментариям, спасибо.