📄 urxriched.pas
字号:
{$ENDIF}
SendMessage(RichEdit.Handle, EM_SETPARAFORMAT, 0, LPARAM(@Paragraph));
end;
end;
function TRxParaAttributes.GetAlignment: TParaAlignment;
var
Paragraph: TParaFormat2;
begin
GetAttributes(Paragraph);
Result := TParaAlignment(Paragraph.wAlignment - 1);
end;
procedure TRxParaAttributes.SetAlignment(Value: TParaAlignment);
var
Paragraph: TParaFormat2;
begin
InitPara(Paragraph);
with Paragraph do
begin
dwMask := PFM_ALIGNMENT;
wAlignment := Ord(Value) + 1;
end;
SetAttributes(Paragraph);
end;
function TRxParaAttributes.GetNumbering: TRxNumbering;
var
Paragraph: TParaFormat2;
begin
GetAttributes(Paragraph);
Result := TRxNumbering(Paragraph.wNumbering);
if RichEditVersion = 1 then
if Result <> nsNone then Result := nsBullet;
end;
procedure TRxParaAttributes.SetNumbering(Value: TRxNumbering);
var
Paragraph: TParaFormat2;
begin
if RichEditVersion = 1 then
if Value <> nsNone then Value := TRxNumbering(PFN_BULLET);
case Value of
nsNone: LeftIndent := 0;
else if LeftIndent < 10 then LeftIndent := 10;
end;
InitPara(Paragraph);
with Paragraph do begin
dwMask := PFM_NUMBERING;
wNumbering := Ord(Value);
end;
SetAttributes(Paragraph);
end;
function TRxParaAttributes.GetNumberingStyle: TRxNumberingStyle;
var
Paragraph: TParaFormat2;
begin
if RichEditVersion < 2 then
Result := nsSimple
else begin
GetAttributes(Paragraph);
Result := TRxNumberingStyle(Paragraph.wNumberingStyle);
end;
end;
procedure TRxParaAttributes.SetNumberingStyle(Value: TRxNumberingStyle);
var
Paragraph: TParaFormat2;
begin
if RichEditVersion < 2 then Exit;
InitPara(Paragraph);
with Paragraph do begin
dwMask := PFM_NUMBERINGSTYLE;
wNumberingStyle := Ord(Value);
end;
SetAttributes(Paragraph);
end;
function TRxParaAttributes.GetNumberingTab: Word;
var
Paragraph: TParaFormat2;
begin
GetAttributes(Paragraph);
Result := Paragraph.wNumberingTab div 20;
end;
procedure TRxParaAttributes.SetNumberingTab(Value: Word);
var
Paragraph: TParaFormat2;
begin
if RichEditVersion < 2 then Exit;
InitPara(Paragraph);
with Paragraph do begin
dwMask := PFM_NUMBERINGTAB;
wNumberingTab := Value * 20;
end;
SetAttributes(Paragraph);
end;
function TRxParaAttributes.GetFirstIndent: Longint;
var
Paragraph: TParaFormat2;
begin
GetAttributes(Paragraph);
Result := Paragraph.dxStartIndent div 20;
end;
procedure TRxParaAttributes.SetFirstIndent(Value: Longint);
var
Paragraph: TParaFormat2;
begin
InitPara(Paragraph);
with Paragraph do
begin
dwMask := PFM_STARTINDENT;
dxStartIndent := Value * 20;
end;
SetAttributes(Paragraph);
end;
function TRxParaAttributes.GetHeadingStyle: THeadingStyle;
var
Paragraph: TParaFormat2;
begin
if RichEditVersion < 3 then Result := 0
else begin
GetAttributes(Paragraph);
Result := Paragraph.sStyle;
end;
end;
procedure TRxParaAttributes.SetHeadingStyle(Value: THeadingStyle);
var
Paragraph: TParaFormat2;
begin
if RichEditVersion < 3 then Exit;
InitPara(Paragraph);
with Paragraph do begin
dwMask := PFM_STYLE;
sStyle := Value;
end;
SetAttributes(Paragraph);
end;
function TRxParaAttributes.GetLeftIndent: Longint;
var
Paragraph: TParaFormat2;
begin
GetAttributes(Paragraph);
Result := Paragraph.dxOffset div 20;
end;
procedure TRxParaAttributes.SetLeftIndent(Value: Longint);
var
Paragraph: TParaFormat2;
begin
InitPara(Paragraph);
with Paragraph do
begin
dwMask := PFM_OFFSET;
dxOffset := Value * 20;
end;
SetAttributes(Paragraph);
end;
function TRxParaAttributes.GetRightIndent: Longint;
var
Paragraph: TParaFormat2;
begin
GetAttributes(Paragraph);
Result := Paragraph.dxRightIndent div 20;
end;
procedure TRxParaAttributes.SetRightIndent(Value: Longint);
var
Paragraph: TParaFormat2;
begin
InitPara(Paragraph);
with Paragraph do
begin
dwMask := PFM_RIGHTINDENT;
dxRightIndent := Value * 20;
end;
SetAttributes(Paragraph);
end;
function TRxParaAttributes.GetSpaceAfter: Longint;
var
Paragraph: TParaFormat2;
begin
GetAttributes(Paragraph);
Result := Paragraph.dySpaceAfter div 20;
end;
procedure TRxParaAttributes.SetSpaceAfter(Value: Longint);
var
Paragraph: TParaFormat2;
begin
if RichEditVersion < 2 then Exit;
InitPara(Paragraph);
with Paragraph do begin
dwMask := PFM_SPACEAFTER;
dySpaceAfter := Value * 20;
end;
SetAttributes(Paragraph);
end;
function TRxParaAttributes.GetSpaceBefore: Longint;
var
Paragraph: TParaFormat2;
begin
GetAttributes(Paragraph);
Result := Paragraph.dySpaceBefore div 20;
end;
procedure TRxParaAttributes.SetSpaceBefore(Value: Longint);
var
Paragraph: TParaFormat2;
begin
if RichEditVersion < 2 then Exit;
InitPara(Paragraph);
with Paragraph do begin
dwMask := PFM_SPACEBEFORE;
dySpaceBefore := Value * 20;
end;
SetAttributes(Paragraph);
end;
function TRxParaAttributes.GetLineSpacing: Longint;
var
Paragraph: TParaFormat2;
begin
GetAttributes(Paragraph);
Result := Paragraph.dyLineSpacing div 20;
end;
procedure TRxParaAttributes.SetLineSpacing(Value: Longint);
var
Paragraph: TParaFormat2;
begin
if RichEditVersion < 2 then Exit;
GetAttributes(Paragraph);
with Paragraph do begin
dwMask := PFM_LINESPACING;
dyLineSpacing := Value * 20;
end;
SetAttributes(Paragraph);
end;
function TRxParaAttributes.GetLineSpacingRule: TLineSpacingRule;
var
Paragraph: TParaFormat2;
begin
GetAttributes(Paragraph);
Result := TLineSpacingRule(Paragraph.bLineSpacingRule);
end;
procedure TRxParaAttributes.SetLineSpacingRule(Value: TLineSpacingRule);
var
Paragraph: TParaFormat2;
begin
if RichEditVersion < 2 then Exit;
GetAttributes(Paragraph);
with Paragraph do begin
dwMask := PFM_LINESPACING;
bLineSpacingRule := Ord(Value);
end;
SetAttributes(Paragraph);
end;
function TRxParaAttributes.GetTab(Index: Byte): Longint;
var
Paragraph: TParaFormat2;
begin
GetAttributes(Paragraph);
Result := Paragraph.rgxTabs[Index] div 20;
end;
procedure TRxParaAttributes.SetTab(Index: Byte; Value: Longint);
var
Paragraph: TParaFormat2;
begin
GetAttributes(Paragraph);
with Paragraph do
begin
rgxTabs[Index] := Value * 20;
dwMask := PFM_TABSTOPS;
if cTabCount < Index then cTabCount := Index;
SetAttributes(Paragraph);
end;
end;
function TRxParaAttributes.GetTabCount: Integer;
var
Paragraph: TParaFormat2;
begin
GetAttributes(Paragraph);
Result := Paragraph.cTabCount;
end;
procedure TRxParaAttributes.SetTabCount(Value: Integer);
var
Paragraph: TParaFormat2;
begin
GetAttributes(Paragraph);
with Paragraph do
begin
dwMask := PFM_TABSTOPS;
cTabCount := Value;
SetAttributes(Paragraph);
end;
end;
function TRxParaAttributes.GetTableStyle: TParaTableStyle;
var
Paragraph: TParaFormat2;
begin
Result := tsNone;
if RichEditVersion < 2 then Exit;
GetAttributes(Paragraph);
with Paragraph do begin
if (wReserved and PFE_TABLEROW) <> 0 then
Result := tsTableRow
else if (wReserved and PFE_TABLECELLEND) <> 0 then
Result := tsTableCellEnd
else if (wReserved and PFE_TABLECELL) <> 0 then
Result := tsTableCell;
end;
end;
procedure TRxParaAttributes.SetTableStyle(Value: TParaTableStyle);
var
Paragraph: TParaFormat2;
begin
if RichEditVersion < 2 then Exit;
InitPara(Paragraph);
with Paragraph do begin
dwMask := PFM_TABLE;
case Value of
tsTableRow: wReserved := PFE_TABLEROW;
tsTableCellEnd: wReserved := PFE_TABLECELLEND;
tsTableCell: wReserved := PFE_TABLECELL;
end;
end;
SetAttributes(Paragraph);
end;
procedure TRxParaAttributes.AssignTo(Dest: TPersistent);
var
I: Integer;
begin
if Dest is TParaAttributes then begin
with TParaAttributes(Dest) do begin
if Self.Alignment = paJustify then Alignment := taLeftJustify
else Alignment := TAlignment(Self.Alignment);
FirstIndent := Self.FirstIndent;
LeftIndent := Self.LeftIndent;
RightIndent := Self.RightIndent;
if Self.Numbering <> nsNone then
Numbering := TNumberingStyle(nsBullet)
else Numbering := TNumberingStyle(nsNone);
for I := 0 to MAX_TAB_STOPS - 1 do
Tab[I] := Self.Tab[I];
end;
end
else inherited AssignTo(Dest);
end;
procedure TRxParaAttributes.Assign(Source: TPersistent);
var
I: Integer;
Paragraph: TParaFormat2;
begin
if Source is TParaAttributes then begin
Alignment := TParaAlignment(TParaAttributes(Source).Alignment);
FirstIndent := TParaAttributes(Source).FirstIndent;
LeftIndent := TParaAttributes(Source).LeftIndent;
RightIndent := TParaAttributes(Source).RightIndent;
Numbering := TRxNumbering(TParaAttributes(Source).Numbering);
for I := 0 to MAX_TAB_STOPS - 1 do
Tab[I] := TParaAttributes(Source).Tab[I];
end
else if Source is TRxParaAttributes then begin
TRxParaAttributes(Source).GetAttributes(Paragraph);
SetAttributes(Paragraph);
end
else inherited Assign(Source);
end;
{ OLE utility routines }
function WStrLen(Str: PWideChar): Integer;
begin
Result := 0;
while Str[Result] <> #0 do Inc(Result);
end;
procedure ReleaseObject(v
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -