📄 synpagesetupdlg.pas
字号:
procedure TSynPageSetupDlg.FontCmdExecute(Sender: TObject);
begin
SelectLine(CharPos.y);
FontDialog.Font.Assign(CurrText);
if FontDialog.Execute then
CurrText.Assign(FontDialog.Font);
SelectNone;
end;
procedure TSynPageSetupDlg.BoldCmdExecute(Sender: TObject);
begin
SelectLine(CharPos.y);
if fsBold in CurrText.Style then
CurrText.Style := CurrText.Style - [fsBold]
else
CurrText.Style := CurrText.Style + [fsBold];
SelectNone;
end;
procedure TSynPageSetupDlg.ItalicCmdExecute(Sender: TObject);
begin
SelectLine(CharPos.y);
if fsItalic in CurrText.Style then
CurrText.Style := CurrText.Style - [fsItalic]
else
CurrText.Style := CurrText.Style + [fsItalic];
SelectNone;
end;
procedure TSynPageSetupDlg.UnderlineCmdExecute(Sender: TObject);
begin
SelectLine(CharPos.y);
if fsUnderLine in CurrText.Style then
CurrText.Style := CurrText.Style - [fsUnderLine]
else
CurrText.Style := CurrText.Style + [fsUnderLine];
SelectNone;
end;
procedure TSynPageSetupDlg.PageControlChange(Sender: TObject);
begin
if PageControl.ActivePage = HeaderFooter then
SetOptions;
end;
procedure TSynPageSetupDlg.PBHeaderLinePaint(Sender: TObject);
begin
with (Sender as TPaintBox).Canvas do begin
Brush.Color := (Sender as TPaintBox).Color;
FillRect((Sender as TPaintBox).ClientRect);
Pen.Style := psDot;
Brush.Style := bsClear;
Rectangle(0, 0, (Sender as TPaintBox).Width, (Sender as TPaintBox).Height);
end;
end;
procedure TSynPageSetupDlg.HeaderLineColorBtnClick(Sender: TObject);
begin
ColorDialog.Color := PBHeaderLine.Color;
if ColorDialog.Execute then
PBHeaderLine.Color := ColorDialog.Color;
end;
procedure TSynPageSetupDlg.HeaderShadowColorBtnClick(Sender: TObject);
begin
ColorDialog.Color := PBHeaderShadow.Color;
if ColorDialog.Execute then
PBHeaderShadow.Color := ColorDialog.Color;
end;
procedure TSynPageSetupDlg.FooterLineColorBtnClick(Sender: TObject);
begin
ColorDialog.Color := PBFooterLine.Color;
if ColorDialog.Execute then
PBFooterLine.Color := ColorDialog.Color;
end;
procedure TSynPageSetupDlg.FooterShadowColorBtnClick(Sender: TObject);
begin
ColorDialog.Color := PBFooterShadow.Color;
if ColorDialog.Execute then
PBFooterShadow.Color := ColorDialog.Color;
end;
procedure TSynPageSetupDlg.GetMargins(SynEditMargins: TSynEditPrintMargins);
var
CurEdit: TEdit;
function StringToFloat(Edit: TEdit): Double;
begin
CurEdit := Edit;
Result := StrToFloat(Edit.Text);
end;
begin
with SynEditMargins do begin
if not FInternalCall then
UnitSystem := TUnitSystem(CBUnits.ItemIndex);
try
Left := StringToFloat(EditLeft);
Right := StringToFloat(EditRight);
Top := StringToFloat(EditTop);
Bottom := StringToFloat(EditBottom);
Gutter := StringToFloat(EditGutter);
Header := StringToFloat(EditHeader);
Footer := StringToFloat(EditFooter);
LeftHFTextIndent := StringToFloat(EditLeftHFTextIndent);
RightHFTextIndent := StringToFloat(EditRightHFTextIndent);
HFInternalMargin := StringToFloat(EditHFInternalMargin);
except
MessageDlg('Invalid number!', mtError, [mbOk], 0);
CurEdit.SetFocus;
end;
MirrorMargins := CBMirrorMargins.Checked;
end;
end;
procedure TSynPageSetupDlg.SetMargins(SynEditMargins: TSynEditPrintMargins);
begin
with SynEditMargins do begin
CBUnits.ItemIndex := Ord(UnitSystem);
EditLeft.Text := FloatToStr(Left);
EditRight.Text := FloatToStr(Right);
EditTop.Text := FloatToStr(Top);
EditBottom.Text := FloatToStr(Bottom);
EditGutter.Text := FloatToStr(Gutter);
EditHeader.Text := FloatToStr(Header);
EditFooter.Text := FloatToStr(Footer);
EditLeftHFTextIndent.Text := FloatToStr(LeftHFTextIndent);
EditRightHFTextIndent.Text := FloatToStr(RightHFTextIndent);
EditHFInternalMargin.Text := FloatToStr(HFInternalMargin);
CBMirrorMargins.Checked := MirrorMargins;
end;
end;
procedure TSynPageSetupDlg.CBUnitsChange(Sender: TObject);
begin
FInternalCall := True;
GetMargins(FMargins);
FInternalCall := False;
FMargins.UnitSystem := TUnitSystem(CBUnits.ItemIndex);
SetMargins(FMargins);
end;
procedure TSynPageSetupDlg.AddLines(HeadFoot: THeaderFooter; AEdit: TRichEdit;
Al: TALignment);
var
i: Integer;
AFont: TFont;
begin
Editor := AEdit;
AFont := TFont.Create;
for i := 0 to Editor.Lines.Count - 1 do
begin
SelectLine(i);
AFont.Assign(CurrText);
HeadFoot.Add(Editor.Lines[i], AFont, Al, i + 1);
end;
AFont.Free;
end;
procedure TSynPageSetupDlg.GetValues(SynEditPrint: TSynEditPrint);
begin
GetMargins(SynEditPrint.Margins);
SynEditPrint.LineNumbers := CBLineNumbers.Checked;
SynEditPrint.LineNumbersInMargin := CBLineNumbersInMargin.Checked;
SynEditPrint.Highlight := CBHighlight.Checked;
SynEditPrint.Colors := CBColors.Checked;
SynEditPrint.Wrap := CBWrap.Checked;
SynEditPrint.Header.FrameTypes := [];
if CBHeaderLine.Checked then
SynEditPrint.Header.FrameTypes := SynEditPrint.Header.FrameTypes + [ftLine];
if CBHeaderBox.Checked then
SynEditPrint.Header.FrameTypes := SynEditPrint.Header.FrameTypes + [ftBox];
if CBHeaderShadow.Checked then
SynEditPrint.Header.FrameTypes := SynEditPrint.Header.FrameTypes + [ftShaded];
SynEditPrint.Header.LineColor := PBHeaderLine.Color;
SynEditPrint.Header.ShadedColor := PBHeaderShadow.Color;
SynEditPrint.Header.MirrorPosition := CBHeaderMirror.Checked;
SynEditPrint.Footer.FrameTypes := [];
if CBFooterLine.Checked then
SynEditPrint.Footer.FrameTypes := SynEditPrint.Footer.FrameTypes + [ftLine];
if CBFooterBox.Checked then
SynEditPrint.Footer.FrameTypes := SynEditPrint.Footer.FrameTypes + [ftBox];
if CBFooterShadow.Checked then
SynEditPrint.Footer.FrameTypes := SynEditPrint.Footer.FrameTypes + [ftShaded];
SynEditPrint.Footer.LineColor := PBFooterLine.Color;
SynEditPrint.Footer.ShadedColor := PBFooterShadow.Color;
SynEditPrint.Footer.MirrorPosition := CBFooterMirror.Checked;
SynEditPrint.Header.Clear;
AddLines(SynEditPrint.Header, REHeaderLeft, taLeftJustify);
AddLines(SynEditPrint.Header, REHeaderCenter, taCenter);
AddLines(SynEditPrint.Header, REHeaderRight, taRightJustify);
SynEditPrint.Footer.Clear;
AddLines(SynEditPrint.Footer, REFooterLeft, taLeftJustify);
AddLines(SynEditPrint.Footer, REFooterCenter, taCenter);
AddLines(SynEditPrint.Footer, REFooterRight, taRightJustify);
end;
procedure TSynPageSetupDlg.SetValues(SynEditPrint: TSynEditPrint);
var
i: Integer;
AItem: THeaderFooterItem;
LNum: Integer;
begin
REHeaderLeft.Lines.Clear;
REHeaderCenter.Lines.Clear;
REHeaderRight.Lines.Clear;
REFooterLeft.Lines.Clear;
REFooterCenter.Lines.Clear;
REFooterRight.Lines.Clear;
SetMargins(SynEditPrint.Margins);
CBLineNumbers.Checked := SynEditPrint.LineNumbers;
CBLineNumbersInMargin.Checked := SynEditPrint.LineNumbersInMargin;
CBHighlight.Checked := SynEditPrint.Highlight;
CBColors.Checked := SynEditPrint.Colors;
CBWrap.Checked := SynEditPrint.Wrap;
REHeaderLeft.Font := SynEditPrint.Header.DefaultFont;
REHeaderCenter.Font := SynEditPrint.Header.DefaultFont;
REHeaderRight.Font := SynEditPrint.Header.DefaultFont;
REFooterLeft.Font := SynEditPrint.Footer.DefaultFont;
REFooterCenter.Font := SynEditPrint.Footer.DefaultFont;
REFooterRight.Font := SynEditPrint.Footer.DefaultFont;
CBHeaderLine.Checked := ftLine in SynEditPrint.Header.FrameTypes;
CBHeaderBox.Checked := ftBox in SynEditPrint.Header.FrameTypes;
CBHeaderShadow.Checked := ftShaded in SynEditPrint.Header.FrameTypes;
PBHeaderLine.Color := SynEditPrint.Header.LineColor;
PBHeaderShadow.Color := SynEditPrint.Header.ShadedColor;
CBHeaderMirror.Checked := SynEditPrint.Header.MirrorPosition;
CBFooterLine.Checked := ftLine in SynEditPrint.Footer.FrameTypes;
CBFooterBox.Checked := ftBox in SynEditPrint.Footer.FrameTypes;
CBFooterShadow.Checked := ftShaded in SynEditPrint.Footer.FrameTypes;
PBFooterLine.Color := SynEditPrint.Footer.LineColor;
PBFooterShadow.Color := SynEditPrint.Footer.ShadedColor;
CBFooterMirror.Checked := SynEditPrint.Footer.MirrorPosition;
SynEditPrint.Header.FixLines;
for i := 0 to SynEditPrint.Header.Count - 1 do begin
AItem := SynEditPrint.Header.Get(i);
case AItem.Alignment of
taLeftJustify: Editor := REHeaderLeft;
taCenter: Editor := REHeaderCenter;
taRightJustify: Editor := REHeaderRight;
end;
LNum := Editor.Lines.Add(AItem.Text);
SelectLine(LNum);
CurrText.Assign(AItem.Font);
SelectNone;
end;
SynEditPrint.Footer.FixLines;
for i := 0 to SynEditPrint.Footer.Count - 1 do begin
AItem := SynEditPrint.Footer.Get(i);
case AItem.Alignment of
taLeftJustify: Editor := REFooterLeft;
taCenter: Editor := REFooterCenter;
taRightJustify: Editor := REFooterRight;
end;
LNum := Editor.Lines.Add(AItem.Text);
SelectLine(LNum);
CurrText.Assign(AItem.Font);
SelectNone;
end;
end;
procedure TSynPageSetupDlg.Execute(Print: TSynEditPrint);
begin
SetValues(Print);
IF ShowModal = mrok then
GetValues(Print);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -