unit uLineSpacing;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, Menus,
RichMemo;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
RatioSingle: TMenuItem;
RatioOneHalf: TMenuItem;
RatioDouble: TMenuItem;
PMLineSpacing: TPopupMenu; // PM = PopMenu
RichMemo1: TRichMemo;
procedure Button1Click(Sender: TObject);
procedure RatioSingleClick(Sender: TObject);
procedure RatioOneHalfClick(Sender: TObject);
procedure RatioDoubleClick(Sender: TObject);
private
ParagraphMetric: TParaMetric;
public
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
begin
{
PopUp menu with 3 items:
1.0: OnClick --> RatioSingleClick
1.5: OnClick --> RatioOneHalfClick
2.0: OnClick --> RatioDoubleClick
}
PMLineSpacing.PopUp;
end;
procedure TForm1.RatioSingleClick(Sender: TObject);
begin
InitParaMetric(ParagraphMetric);
with RichMemo1 do begin
GetParaMetric(SelStart, ParagraphMetric);
ParagraphMetric.LineSpacing := DefLineSpacing;
ShowMessage('Line Space:' + #13 +
'SelStart = ' + IntToStr(SelStart) + #13 +
'SelLength = ' + IntToStr(SelLength) + #13 +
'LineSpacing = ' + FloatToStr(ParagraphMetric.LineSpacing));
{
The use of SetParaMetric or SetRangeParaParams works both well
in Windows, but not in Linux.
}
SetParaMetric(SelStart, SelLength, ParagraphMetric);
//SetRangeParaParams(SelStart, SelLength, [pmm_LineSpacing], ParagraphMetric);
end;
end;
procedure TForm1.RatioOneHalfClick(Sender: TObject);
begin
InitParaMetric(ParagraphMetric);
with RichMemo1 do begin
GetParaMetric(SelStart, ParagraphMetric);
ParagraphMetric.LineSpacing := DefLineSpacing * 1.5;
ShowMessage('One Half Line Space:' + #13 +
'SelStart = ' + IntToStr(SelStart) + #13 +
'SelLength = ' + IntToStr(SelLength) + #13 +
'LineSpacing = ' + FloatToStr(ParagraphMetric.LineSpacing));
{
The use of SetParaMetric or SetRangeParaParams works both well
in Windows, but not in Linux.
}
SetParaMetric(SelStart, SelLength, ParagraphMetric);
//SetRangeParaParams(SelStart, SelLength, [pmm_LineSpacing], ParagraphMetric);
end;
end;
procedure TForm1.RatioDoubleClick(Sender: TObject);
begin
InitParaMetric(ParagraphMetric);
with RichMemo1 do begin
GetParaMetric(SelStart, ParagraphMetric);
ParagraphMetric.LineSpacing := DefLineSpacing * 2;
ShowMessage('Double Line Space:' + #13 +
'SelStart = ' + IntToStr(SelStart) + #13 +
'SelLength = ' + IntToStr(SelLength) + #13 +
'LineSpacing = ' + FloatToStr(ParagraphMetric.LineSpacing));
{
The use of SetParaMetric or SetRangeParaParams works both well
in Windows, but not in Linux.
}
SetParaMetric(SelStart, SelLength, ParagraphMetric);
//SetRangeParaParams(SelStart, SelLength, [pmm_LineSpacing], ParagraphMetric);
end;
end;
end.