You've already forked lazarus-ccr
richmemo: improve win32 numbering
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3842 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -62,14 +62,15 @@ type
|
|||||||
Style : TParaNumStyle;
|
Style : TParaNumStyle;
|
||||||
Indent : Double;
|
Indent : Double;
|
||||||
CustomChar : WideChar;
|
CustomChar : WideChar;
|
||||||
NumberStart : Integer; // must be negative one to continue numbering, used for pnNumber only
|
NumberStart : Integer; // used for pnNumber only
|
||||||
SepChar : WideChar;
|
SepChar : WideChar;
|
||||||
|
ForceNewNum : Boolean; // if true and Style is pnNumber, NumberStart is used for the new numbering
|
||||||
end;
|
end;
|
||||||
|
|
||||||
const
|
const
|
||||||
SepNone : WideChar = #0;
|
SepNone = #0;
|
||||||
SepPar : WideChar = ')';
|
SepPar = ')';
|
||||||
SepDot : WideChar = '.';
|
SepDot = '.';
|
||||||
|
|
||||||
|
|
||||||
type
|
type
|
||||||
@ -228,6 +229,8 @@ function GetFontParams(const Name: String; Size: Integer; color: TColor; styles:
|
|||||||
|
|
||||||
procedure InitParaMetric(var m: TParaMetric);
|
procedure InitParaMetric(var m: TParaMetric);
|
||||||
procedure InitParaNumbering(var n: TParaNumbering);
|
procedure InitParaNumbering(var n: TParaNumbering);
|
||||||
|
procedure InitParaNumber(var n: TParaNumbering; ASepChar: WideChar = SepPar; StartNum: Integer = 1);
|
||||||
|
procedure InitParaBullet(var n: TParaNumbering);
|
||||||
|
|
||||||
var
|
var
|
||||||
RTFLoadStream : function (AMemo: TCustomRichMemo; Source: TStream): Boolean = nil;
|
RTFLoadStream : function (AMemo: TCustomRichMemo; Source: TStream): Boolean = nil;
|
||||||
@ -278,6 +281,20 @@ begin
|
|||||||
FillChar(n, sizeof(n), 0);
|
FillChar(n, sizeof(n), 0);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure InitParaNumber(var n: TParaNumbering; ASepChar: WideChar; StartNum: Integer);
|
||||||
|
begin
|
||||||
|
InitParaNumbering(n);
|
||||||
|
n.Style:=pnNumber;
|
||||||
|
n.NumberStart:=StartNum;
|
||||||
|
n.SepChar:=ASepChar;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure InitParaBullet(var n: TParaNumbering);
|
||||||
|
begin
|
||||||
|
InitParaNumbering(n);
|
||||||
|
n.Style:=pnBullet;
|
||||||
|
end;
|
||||||
|
|
||||||
{ TRichMemo }
|
{ TRichMemo }
|
||||||
|
|
||||||
function TRichMemo.GetRTF: string;
|
function TRichMemo.GetRTF: string;
|
||||||
|
@ -610,6 +610,7 @@ begin
|
|||||||
Result:=False;
|
Result:=False;
|
||||||
if not Assigned(RichEditManager) or not Assigned(AWinControl) then Exit;
|
if not Assigned(RichEditManager) or not Assigned(AWinControl) then Exit;
|
||||||
|
|
||||||
|
InitParaNumbering(ANumber);
|
||||||
eventmask:=RichEditManager.SetEventMask(AWinControl.Handle, 0);
|
eventmask:=RichEditManager.SetEventMask(AWinControl.Handle, 0);
|
||||||
RichEditManager.GetPara2(AWinControl.Handle, TextStart, para);
|
RichEditManager.GetPara2(AWinControl.Handle, TextStart, para);
|
||||||
RichEditManager.SetEventMask(AWinControl.Handle, eventmask);
|
RichEditManager.SetEventMask(AWinControl.Handle, eventmask);
|
||||||
@ -628,8 +629,14 @@ begin
|
|||||||
else
|
else
|
||||||
ANumber.Style:=pnNone;
|
ANumber.Style:=pnNone;
|
||||||
end;
|
end;
|
||||||
|
if para.wNumberingStyle or PFNS_PLAIN > 0 then
|
||||||
|
ANumber.SepChar:=SepNone
|
||||||
|
else if para.wNumberingStyle or PFNS_PERIOD > 0 then
|
||||||
|
ANumber.SepChar:=SepDot
|
||||||
|
else if (ANumber.Style<>pnNone) and ((para.wNumberingStyle and PFNS_SOMESEPCHAR)= 0) then
|
||||||
|
ANumber.SepChar:=SepPar;
|
||||||
ANumber.Indent:=para.wNumberingTab/20;
|
ANumber.Indent:=para.wNumberingTab/20;
|
||||||
Result:=true
|
Result:=true;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
class procedure TWin32WSCustomRichMemo.SetParaNumbering(
|
class procedure TWin32WSCustomRichMemo.SetParaNumbering(
|
||||||
@ -637,7 +644,8 @@ class procedure TWin32WSCustomRichMemo.SetParaNumbering(
|
|||||||
const ANumber: TIntParaNumbering);
|
const ANumber: TIntParaNumbering);
|
||||||
var
|
var
|
||||||
para : PARAFORMAT2;
|
para : PARAFORMAT2;
|
||||||
eventmask: INteger;
|
eventmask: Integer;
|
||||||
|
numbstyle: Integer;
|
||||||
begin
|
begin
|
||||||
if not Assigned(RichEditManager) or not Assigned(AWinControl) then Exit;
|
if not Assigned(RichEditManager) or not Assigned(AWinControl) then Exit;
|
||||||
FillChar(para, SizeOf(para), 0);
|
FillChar(para, SizeOf(para), 0);
|
||||||
@ -645,6 +653,13 @@ begin
|
|||||||
para.cbSize:=sizeof(para);
|
para.cbSize:=sizeof(para);
|
||||||
para.dwMask:=
|
para.dwMask:=
|
||||||
PFM_NUMBERING or PFM_NUMBERINGTAB;
|
PFM_NUMBERING or PFM_NUMBERINGTAB;
|
||||||
|
|
||||||
|
numbstyle:=0;
|
||||||
|
case ANumber.SepChar of
|
||||||
|
SepPar: numbstyle:=numbstyle or PFNS_PAREN;
|
||||||
|
SepDot: numbstyle:=numbstyle or PFNS_PERIOD;
|
||||||
|
SepNone: numbstyle:=numbstyle or PFNS_PLAIN;
|
||||||
|
end;
|
||||||
case ANumber.Style of
|
case ANumber.Style of
|
||||||
pnNone: para.wNumbering:=0;
|
pnNone: para.wNumbering:=0;
|
||||||
pnBullet: para.wNumbering:=PFN_BULLET;
|
pnBullet: para.wNumbering:=PFN_BULLET;
|
||||||
@ -652,7 +667,7 @@ begin
|
|||||||
para.wNumbering:=PFN_ARABIC;
|
para.wNumbering:=PFN_ARABIC;
|
||||||
para.dwMask:=para.dwMask or PFM_NUMBERINGSTART;
|
para.dwMask:=para.dwMask or PFM_NUMBERINGSTART;
|
||||||
para.wNumberingStart:=ANumber.NumberStart;
|
para.wNumberingStart:=ANumber.NumberStart;
|
||||||
para.wNumberingStyle:=PFNS_NEWNUMBER;
|
if ANumber.ForceNewNum then numbstyle:=numbstyle or PFNS_NEWNUMBER;
|
||||||
end;
|
end;
|
||||||
pnLowLetter: para.wNumbering:=PFN_LCLETTER;
|
pnLowLetter: para.wNumbering:=PFN_LCLETTER;
|
||||||
pnLowRoman: para.wNumbering:=PFN_LCROMAN;
|
pnLowRoman: para.wNumbering:=PFN_LCROMAN;
|
||||||
@ -664,6 +679,10 @@ begin
|
|||||||
para.dwMask:=para.dwMask or PFM_NUMBERINGSTART;
|
para.dwMask:=para.dwMask or PFM_NUMBERINGSTART;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
if numbstyle<> 0 then begin
|
||||||
|
para.dwMask:=para.dwMask or PFM_NUMBERINGSTYLE;
|
||||||
|
para.wNumberingStyle:=numbstyle;
|
||||||
|
end;
|
||||||
|
|
||||||
para.wNumberingTab:=round(ANumber.Indent*20);
|
para.wNumberingTab:=round(ANumber.Indent*20);
|
||||||
eventmask:=RichEditManager.SetEventMask(AWinControl.Handle, 0);
|
eventmask:=RichEditManager.SetEventMask(AWinControl.Handle, 0);
|
||||||
|
@ -191,6 +191,8 @@ const
|
|||||||
PFNS_PLAIN = $0300;
|
PFNS_PLAIN = $0300;
|
||||||
PFNS_NONUMBER = $0400;
|
PFNS_NONUMBER = $0400;
|
||||||
PFNS_NEWNUMBER = $8000;
|
PFNS_NEWNUMBER = $8000;
|
||||||
|
PFNS_SOMESEPCHAR = PFNS_PARENS or PFNS_PERIOD or PFNS_PLAIN;
|
||||||
|
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user