Files
lazarus-ccr/components/richmemo/samples/paragraphs/mainform.pas

181 lines
3.9 KiB
ObjectPascal
Raw Normal View History

unit mainform;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
Buttons, ComCtrls, Spin, RichMemo, RichMemoUtils;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
ImageList1: TImageList;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
OpenDialog1: TOpenDialog;
RichMemo1: TRichMemo;
btnLA: TSpeedButton;
btnCA: TSpeedButton;
btnRA: TSpeedButton;
btnJA: TSpeedButton;
edtFL: TSpinEdit;
edtHI: TSpinEdit;
edtTI: TSpinEdit;
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);
procedure edtFLChange(Sender: TObject);
procedure edtHIChange(Sender: TObject);
procedure edtTIChange(Sender: TObject);
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;
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;
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;
m : TParaMetric;
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;
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;
end;
procedure TForm1.SetRichAlign(a: TParaAlignment);
begin
RichMemo1.SetParaAlignment(RichMemo1.SelStart, RichMemo1.SelLength, a);
end;
end.