2014-11-26 16:58:35 +00:00
|
|
|
unit mainform;
|
|
|
|
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
|
|
|
|
interface
|
|
|
|
|
|
|
|
uses
|
|
|
|
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
|
2014-11-26 17:41:48 +00:00
|
|
|
Buttons, ComCtrls, Spin, RichMemo, RichMemoUtils;
|
2014-11-26 16:58:35 +00:00
|
|
|
|
|
|
|
type
|
|
|
|
|
|
|
|
{ TForm1 }
|
|
|
|
|
|
|
|
TForm1 = class(TForm)
|
|
|
|
Button1: TButton;
|
|
|
|
Button2: TButton;
|
|
|
|
ImageList1: TImageList;
|
2014-11-26 17:41:48 +00:00
|
|
|
Label1: TLabel;
|
|
|
|
Label2: TLabel;
|
|
|
|
Label3: TLabel;
|
2014-11-26 16:58:35 +00:00
|
|
|
OpenDialog1: TOpenDialog;
|
|
|
|
RichMemo1: TRichMemo;
|
|
|
|
btnLA: TSpeedButton;
|
|
|
|
btnCA: TSpeedButton;
|
|
|
|
btnRA: TSpeedButton;
|
|
|
|
btnJA: TSpeedButton;
|
2014-11-26 17:41:48 +00:00
|
|
|
edtFL: TSpinEdit;
|
|
|
|
edtHI: TSpinEdit;
|
|
|
|
edtTI: TSpinEdit;
|
2014-11-26 16:58:35 +00:00
|
|
|
procedure btnCAClick(Sender: TObject);
|
|
|
|
procedure btnJAClick(Sender: TObject);
|
|
|
|
procedure btnLAClick(Sender: TObject);
|
|
|
|
procedure btnRAClick(Sender: TObject);
|
|
|
|
procedure Button1Click(Sender: TObject);
|
|
|
|
procedure Button2Click(Sender: TObject);
|
|
|
|
procedure Button3Click(Sender: TObject);
|
2014-11-26 17:41:48 +00:00
|
|
|
procedure edtFLChange(Sender: TObject);
|
|
|
|
procedure edtHIChange(Sender: TObject);
|
|
|
|
procedure edtTIChange(Sender: TObject);
|
2014-11-26 16:58:35 +00:00
|
|
|
procedure FormShow(Sender: TObject);
|
|
|
|
procedure RichMemo1Click(Sender: TObject);
|
|
|
|
procedure RichMemo1KeyDown(Sender: TObject; var Key: Word;
|
|
|
|
Shift: TShiftState);
|
|
|
|
private
|
|
|
|
{ private declarations }
|
|
|
|
public
|
|
|
|
{ public declarations }
|
|
|
|
procedure SelectionChanged;
|
|
|
|
procedure SetRichAlign(a: TParaAlignment);
|
|
|
|
end;
|
|
|
|
|
|
|
|
var
|
|
|
|
Form1: TForm1;
|
|
|
|
|
|
|
|
implementation
|
|
|
|
|
|
|
|
{$R *.lfm}
|
|
|
|
|
|
|
|
{ TForm1 }
|
|
|
|
|
|
|
|
procedure TForm1.Button1Click(Sender: TObject);
|
|
|
|
begin
|
|
|
|
if OpenDialog1.Execute then begin
|
|
|
|
LoadRTFFile( RichMemo1, OpenDialog1.FileName );
|
|
|
|
SelectionChanged;
|
|
|
|
end;
|
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TForm1.btnLAClick(Sender: TObject);
|
|
|
|
begin
|
|
|
|
SetRichAlign(paLeft);
|
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TForm1.btnRAClick(Sender: TObject);
|
|
|
|
begin
|
|
|
|
SetRichAlign(paRight);
|
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TForm1.btnCAClick(Sender: TObject);
|
|
|
|
begin
|
|
|
|
SetRichAlign(paCenter);
|
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TForm1.btnJAClick(Sender: TObject);
|
|
|
|
begin
|
|
|
|
SetRichAlign(paJustify);
|
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TForm1.Button2Click(Sender: TObject);
|
|
|
|
var
|
|
|
|
st, ln: Integer;
|
|
|
|
begin
|
|
|
|
RichMemo1.GetParaRange(RichMemo1.SelStart+RichMemo1.SelLength, st, ln);
|
|
|
|
Caption:=Format(' start: %d, len %d', [st, ln]);
|
|
|
|
RichMemo1.SelStart:=st;
|
|
|
|
RichMemo1.SelLength:=ln;
|
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TForm1.Button3Click(Sender: TObject);
|
|
|
|
begin
|
|
|
|
end;
|
|
|
|
|
2014-11-26 17:41:48 +00:00
|
|
|
procedure TForm1.edtFLChange(Sender: TObject);
|
|
|
|
var
|
|
|
|
m : TParaMetric;
|
|
|
|
begin
|
|
|
|
InitParaMetric(m);
|
|
|
|
m.FirstLine:=edtFL.Value;
|
|
|
|
RichMemo1.SetRangeParaParams(RichMemo1.SelStart, RichMemo1.SelLength,
|
|
|
|
[pmm_FirstLine], m);
|
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TForm1.edtHIChange(Sender: TObject);
|
|
|
|
var
|
|
|
|
m :TParaMetric;
|
|
|
|
begin
|
|
|
|
InitParaMetric(m);
|
|
|
|
m.HeadIndent:=edtHI.Value;
|
|
|
|
RichMemo1.SetRangeParaParams(RichMemo1.SelStart, RichMemo1.SelLength,
|
|
|
|
[pmm_HeadIndent], m);
|
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TForm1.edtTIChange(Sender: TObject);
|
|
|
|
var
|
|
|
|
m :TParaMetric;
|
|
|
|
begin
|
|
|
|
InitParaMetric(m);
|
|
|
|
m.TailIndent:=edtTI.Value;
|
|
|
|
RichMemo1.SetRangeParaParams(RichMemo1.SelStart, RichMemo1.SelLength,
|
|
|
|
[pmm_TailIndent], m);
|
|
|
|
end;
|
|
|
|
|
2014-11-26 16:58:35 +00:00
|
|
|
procedure TForm1.FormShow(Sender: TObject);
|
|
|
|
begin
|
|
|
|
SelectionChanged;
|
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TForm1.RichMemo1Click(Sender: TObject);
|
|
|
|
begin
|
|
|
|
SelectionChanged;
|
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TForm1.RichMemo1KeyDown(Sender: TObject; var Key: Word;
|
|
|
|
Shift: TShiftState);
|
|
|
|
begin
|
|
|
|
SelectionChanged;
|
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TForm1.SelectionChanged;
|
|
|
|
var
|
|
|
|
pa : TParaAlignment;
|
2014-11-26 17:41:48 +00:00
|
|
|
m : TParaMetric;
|
2014-11-26 16:58:35 +00:00
|
|
|
begin
|
|
|
|
pa:=RichMemo1.GetParaAlignment(RichMemo1.SelStart);
|
|
|
|
case pa of
|
|
|
|
paLeft: btnLA.Down:=true;
|
|
|
|
paRight: btnRA.Down:=true;
|
|
|
|
paCenter: btnCA.Down:=true;
|
|
|
|
paJustify: btnJA.Down:=true;
|
|
|
|
end;
|
2014-11-26 17:41:48 +00:00
|
|
|
edtFL.OnChange:=nil;
|
|
|
|
edtHI.OnChange:=nil;
|
|
|
|
edtTI.OnChange:=nil;
|
|
|
|
RichMemo1.GetParaMetric(RichMemo1.SelStart, m);
|
|
|
|
edtFL.Value:=round(m.FirstLine);
|
|
|
|
edtHI.Value:=round(m.HeadIndent);
|
|
|
|
edtTI.Value:=round(m.TailIndent);
|
|
|
|
edtFL.OnChange:=@edtFLChange;
|
|
|
|
edtHI.OnChange:=@edtHIChange;
|
|
|
|
edtTI.OnChange:=@edtTIChange;
|
2014-11-26 16:58:35 +00:00
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TForm1.SetRichAlign(a: TParaAlignment);
|
|
|
|
begin
|
|
|
|
RichMemo1.SetParaAlignment(RichMemo1.SelStart, RichMemo1.SelLength, a);
|
|
|
|
end;
|
|
|
|
|
|
|
|
end.
|
|
|
|
|