You've already forked lazarus-ccr
applications
bindings
components
Comba_Animation
aboutcomponent
acs
beepfp
callite
captcha
chelper
chemtext
cmdline
cmdlinecfg
colorpalette
cryptini
csvdocument
epiktimer
everettrandom
examplecomponent
exctrls
extrasyn
fpexif
fpsound
fpspreadsheet
fractions
freetypepascal
geckoport
gradcontrols
grid_semaphor
gridprinter
industrialstuff
iosdesigner
iphonelazext
jujiboutils
jvcllaz
kcontrols
lazautoupdate
lazbarcodes
lazmapviewer
lclextensions
longtimer
manualdock
mbColorLib
mplayer
multithreadprocs
nicechart
nicegrid
nicesidebar
nvidia-widgets
onguard
orpheus
playsoundpackage
poweredby
powerpdf
rgbgraphics
richmemo
carbon
cocoa
gtk2
ide
qt
qt5
samples
customrtfload
hittest
inline
links
mlparse
paragraphs
icons.PNG
mainform.lfm
mainform.pas
paraword.rtf
testpara.lpi
testpara.lpr
print
search
testsimple
zoom
win32
readme.txt
richmemo.pas
richmemofactory.pas
richmemohelpers.pas
richmemopackage.lpk
richmemopackage.pas
richmemortf.pas
richmemoutils.pas
rtfdata.inc
rtfparspre211.pas
wsrichmemo.pas
richview
rtfview
rx
scrolltext
smnetgradient
spktoolbar
splashabout
svn
systools
tdi
thtmlport
tparadoxdataset
tvplanit
xdev_toolkit
zlibar
zmsql
examples
image_sources
lclbindings
wst
update the paragraph demo to adjust paragraph metrics git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3786 8e941d3f-bd1b-0410-a28a-d453659cc2b4
181 lines
3.9 KiB
ObjectPascal
181 lines
3.9 KiB
ObjectPascal
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.
|
|
|