procedure TCmdForm.SetOfsTop(Sender: TObject);
var
pf2: ParaFormat2;
x: double;
inpOK: boolean;
err: integer;
begin
Val(OfsTop.Text, x, Err);
InpOK:= (Err=0);
if InpOK then
begin
FillChar(pf2, SizeOf(pf2), 0);
pf2.cbSize := SizeOf(PARAFORMAT2);
SendMessage(PageMemo.Handle, EM_GetParaFormat, 0, LParam(@pf2));
pf2.dwMask := PFM_SPACEBEFORE;
pf2.dySpaceBefore:= round(x*20);
SendMessage(PageMemo.Handle, EM_SETPARAFORMAT, 0, Longint(@pf2));
end else if (length(OfsTop.Text)>0)
then showmessage('Improper TOP entry.')
else showmessage('Must enter TOP value.');
end;
procedure TCmdForm.SetOfsInd(Sender: TObject);
var
pf2: ParaFormat2;
x: double;
inpOK: boolean;
err: integer;
begin
Val(OfsInd.Text, x, Err);
InpOK:= (Err=0);
if InpOK then
begin
FillChar(pf2, SizeOf(pf2), 0);
pf2.cbSize := SizeOf(PARAFORMAT2);
SendMessage(PageMemo.Handle, EM_GetParaFormat, 0, LParam(@pf2));
pf2.dwMask := PFM_STARTINDENT; //PFM_STARTINDENT for absolute or PFM_OFFSETINDENT for relative to current
pf2.dxStartIndent:= round(x*20); // note: PFM_STARTINDENT is easier to undo
SendMessage(PageMemo.Handle, EM_SETPARAFORMAT, 0, Longint(@pf2));
end else if (length(OfsInd.Text)>0)
then showmessage('Improper IND entry.')
else showmessage('Must enter IND value.')
end;
procedure TCmdForm.SetOfsLft(Sender: TObject); // relative to PFM_STARTINDENT, ie. negative or positive,
var // and a zero value is flush with PFM_STARTINDENT.
pf2: ParaFormat2;
x: double;
inpOK: boolean;
err: integer;
begin
Val(OfsLft.Text, x, Err);
InpOK:= (Err=0);
if InpOK then
begin
FillChar(pf2, SizeOf(pf2), 0);
pf2.cbSize := SizeOf(PARAFORMAT2);
SendMessage(PageMemo.Handle, EM_GetParaFormat, 0, LParam(@pf2));
pf2.dwMask := PFM_OFFSET;
pf2.dxOffset:= round(x*20);
SendMessage(PageMemo.Handle, EM_SETPARAFORMAT, 0, Longint(@pf2));
end else if (length(OfsLft.Text)>0)
then showmessage('Improper LFT entry.')
else showmessage('Must enter LFT value.')
end;
procedure TCmdForm.SetOfsRht(Sender: TObject);
var
pf2: ParaFormat2;
x: double;
inpOK: boolean;
err: integer;
begin
Val(OfsRht.Text, x, Err);
InpOK:= (Err=0);
if InpOK then
begin
FillChar(pf2, SizeOf(pf2), 0);
pf2.cbSize := SizeOf(PARAFORMAT2);
SendMessage(PageMemo.Handle, EM_GetParaFormat, 0, LParam(@pf2));
pf2.dwMask := PFM_RIGHTINDENT;
pf2.dxRightIndent:= round(x*20);
SendMessage(PageMemo.Handle, EM_SETPARAFORMAT, 0, Longint(@pf2));
end else if (length(OfsRht.Text)>0)
then showmessage('Improper RHT entry.')
else showmessage('Must enter RHT value.')
end;
procedure TCmdForm.SetOfsBtm(Sender: TObject);
var
pf2: ParaFormat2;
x: double;
inpOK: boolean;
err: integer;
begin
Val(OfsBtm.Text, x, Err);
InpOK:= (Err=0);
if InpOK then
begin
FillChar(pf2, SizeOf(pf2), 0);
pf2.cbSize := SizeOf(PARAFORMAT2);
SendMessage(PageMemo.Handle, EM_GetParaFormat, 0, LParam(@pf2));
pf2.dwMask := PFM_SPACEAFTER;
pf2.dySpaceAfter:= round(x*20);
SendMessage(PageMemo.Handle, EM_SETPARAFORMAT, 0, Longint(@pf2));
end else if (length(OfsBtm.Text)>0)
then showmessage('Improper BTM entry.')
else showmessage('Must enter BTM value.')
end;
procedure TCmdForm.SetOfsLns(Sender: TObject); // multiple to base height extending down from top
var
pf2: ParaFormat2;
x: double;
inpOK: boolean;
err: integer;
begin
Val(OfsLns.Text, x, Err);
InpOK:= (Err=0);
if InpOK then
begin
// initialize pf2
FillChar(pf2, SizeOf(pf2), 0);
pf2.cbSize := SizeOf(PARAFORMAT2);
SendMessage(PageMemo.Handle, EM_GetParaFormat, 0, LParam(@pf2));
pf2.dwMask := PFM_LINESPACING;
if (LnsMultiply.checked=true) then // factored descent
begin
pf2.bLineSpacingRule := 5;
pf2.dyLineSpacing:= round(x*20);
SendMessage(PageMemo.Handle, EM_SETPARAFORMAT, 0, Longint(@pf2));
end;
if (LnsAtLeast.checked=true) then // minimum ascent
begin
pf2.bLineSpacingRule := 3;
pf2.dyLineSpacing:= round(x*20);
SendMessage(PageMemo.Handle, EM_SETPARAFORMAT, 0, Longint(@pf2));
end;
if (LnsExactly.checked=true) then // maximum ascent
begin
pf2.dwMask := PFM_LINESPACING;
pf2.bLineSpacingRule := 4;
pf2.dyLineSpacing:= round(x*20);
SendMessage(PageMemo.Handle, EM_SETPARAFORMAT, 0, Longint(@pf2));
end;
end else if (length(OfsLns.Text)>0)
then showmessage('Improper LNS entry.')
else showmessage('Must enter LNS value.')
end;