diff --git a/components/richmemo/richmemo.pas b/components/richmemo/richmemo.pas index 6a2ac67a7..de0f4ee37 100644 --- a/components/richmemo/richmemo.pas +++ b/components/richmemo/richmemo.pas @@ -59,11 +59,20 @@ type , pnLowRoman, pnUpLetter, pnUpRoman, pnCustomChar); TParaNumbering = record - Numbering : TParaNumStyle; - NumCustom : WideChar; - NumIndent : Double; + Style : TParaNumStyle; + Indent : Double; + CustomChar : WideChar; + NumberStart : Integer; // must be negative one to continue numbering, used for pnNumber only + SepChar : WideChar; end; +const + SepNone : WideChar = #0; + SepPar : WideChar = ')'; + SepDot : WideChar = '.'; + + +type TTextModifyMask = set of (tmm_Color, tmm_Name, tmm_Size, tmm_Styles, tmm_BackColor); TParaModifyMask = set of (pmm_FirstLine, pmm_HeadIndent, pmm_TailIndent, pmm_SpaceBefore, pmm_SpaceAfter, pmm_LineSpacing); diff --git a/components/richmemo/win32/win32richmemo.pas b/components/richmemo/win32/win32richmemo.pas index 4c8be3354..0bcf617f0 100644 --- a/components/richmemo/win32/win32richmemo.pas +++ b/components/richmemo/win32/win32richmemo.pas @@ -615,20 +615,20 @@ begin RichEditManager.SetEventMask(AWinControl.Handle, eventmask); case para.wNumbering of - PFN_BULLET: ANumber.Numbering:=pnBullet; - PFN_ARABIC: ANumber.Numbering:=pnNumber; - PFN_LCLETTER: ANumber.Numbering:=pnLowLetter; - PFN_LCROMAN: ANumber.Numbering:=pnLowRoman; - PFN_UCLETTER: ANumber.Numbering:=pnUpLetter; - PFN_UCROMAN: ANumber.Numbering:=pnUpRoman; + PFN_BULLET: ANumber.Style:=pnBullet; + PFN_ARABIC: ANumber.Style:=pnNumber; + PFN_LCLETTER: ANumber.Style:=pnLowLetter; + PFN_LCROMAN: ANumber.Style:=pnLowRoman; + PFN_UCLETTER: ANumber.Style:=pnUpLetter; + PFN_UCROMAN: ANumber.Style:=pnUpRoman; PFN_CUSTOM: begin - ANumber.Numbering:=pnCustomChar; - ANumber.NumCustom:=WideChar(para.wNumberingStart); + ANumber.Style:=pnCustomChar; + ANumber.CustomChar:=WideChar(para.wNumberingStart); end; else - ANumber.Numbering:=pnNone; + ANumber.Style:=pnNone; end; - ANumber.NumIndent:=para.wNumberingTab/20; + ANumber.Indent:=para.wNumberingTab/20; Result:=true end; @@ -645,22 +645,27 @@ begin para.cbSize:=sizeof(para); para.dwMask:= PFM_NUMBERING or PFM_NUMBERINGTAB; - case ANumber.Numbering of + case ANumber.Style of pnNone: para.wNumbering:=0; pnBullet: para.wNumbering:=PFN_BULLET; - pnNumber: para.wNumbering:=PFN_ARABIC; + pnNumber: begin + para.wNumbering:=PFN_ARABIC; + para.dwMask:=para.dwMask or PFM_NUMBERINGSTART; + para.wNumberingStart:=ANumber.NumberStart; + para.wNumberingStyle:=PFNS_NEWNUMBER; + end; pnLowLetter: para.wNumbering:=PFN_LCLETTER; pnLowRoman: para.wNumbering:=PFN_LCROMAN; pnUpLetter: para.wNumbering:=PFN_UCLETTER; pnUpRoman: para.wNumbering:=PFN_UCROMAN; pnCustomChar: begin para.wNumbering:=PFN_CUSTOM; - para.wNumberingStart:=Word(ANumber.NumCustom); + para.wNumberingStart:=Word(ANumber.CustomChar); para.dwMask:=para.dwMask or PFM_NUMBERINGSTART; end; end; - para.wNumberingTab:=round(ANumber.NumIndent*20); + para.wNumberingTab:=round(ANumber.Indent*20); eventmask:=RichEditManager.SetEventMask(AWinControl.Handle, 0); RichEditManager.SetPara2(AWinControl.Handle, TextStart, TextLen, para); RichEditManager.SetEventMask(AWinControl.Handle, eventmask) diff --git a/components/richmemo/win32/win32richmemoproc.pas b/components/richmemo/win32/win32richmemoproc.pas index ad16f6105..7780066bd 100644 --- a/components/richmemo/win32/win32richmemoproc.pas +++ b/components/richmemo/win32/win32richmemoproc.pas @@ -184,6 +184,14 @@ const CFM_BACKCOLOR = $04000000; CFE_AUTOBACKCOLOR = CFM_BACKCOLOR; +const + PFNS_PAREN = $0000; + PFNS_PARENS = $0100; + PFNS_PERIOD = $0200; + PFNS_PLAIN = $0300; + PFNS_NONUMBER = $0400; + PFNS_NEWNUMBER = $8000; + implementation const