📄 synoptionsdlg.pas
字号:
unit SynOptionsDlg;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ImgList, ComCtrls, ExtCtrls, Grids,SynEditSource,
SynEdit, SynEditMiscClasses, SynEditTypes;
{$I SynEdit.inc}
type
TSynOptionsForm = class(TForm)
Button3: TButton;
Button2: TButton;
Button1: TButton;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
sTabWidth: TEdit;
Label1: TLabel;
sBlockWidth: TEdit;
cbSelectmode: TComboBox;
Label8: TLabel;
GroupBox4: TGroupBox;
soAltSetsColumnMode: TCheckBox;
soAutoIndent: TCheckBox;
soDragDropEditing: TCheckBox;
soDropFiles: TCheckBox;
soGroupUndo: TCheckBox;
soShowSpecialChars: TCheckBox;
soSmartTabs: TCheckBox;
soSmartTabDelete: TCheckBox;
soTabIndent: TCheckBox;
soTabsToSpace: TCheckBox;
cbInsertMode: TCheckBox;
cbCodeFolding: TCheckBox;
cbPastEol: TCheckBox;
CheckBox1: TCheckBox;
sMaxUndo: TEdit;
Label2: TLabel;
sMaxScroll: TEdit;
Label6: TLabel;
Label3: TLabel;
TabSheet3: TTabSheet;
TabSheet4: TTabSheet;
GroupBox6: TGroupBox;
sShowLineDivder: TCheckBox;
sShowActiveLine: TCheckBox;
sShowGutter: TCheckBox;
sShowRightEdge: TCheckBox;
sRightEdgeMouseMove: TCheckBox;
sShowLineNumber: TCheckBox;
LabelRightEdgePos: TLabel;
sRightEdgePos: TEdit;
sWordWrap: TCheckBox;
LabelWordwrapStyle: TLabel;
sWordwrapStyle: TComboBox;
sWordwrapPos: TEdit;
LabelWordwrapPos: TLabel;
GroupBox9: TGroupBox;
Label5: TLabel;
BackColorBox: TColorBox;
Label7: TLabel;
SelTextColorBox: TColorBox;
Label10: TLabel;
SelBackColorBox: TColorBox;
Label11: TLabel;
CurTextColorBox: TColorBox;
CurBackColorBox: TColorBox;
Label12: TLabel;
GroupBox1: TGroupBox;
LabelLineSpacingRule: TLabel;
sLineSpacingRule: TComboBox;
LabelLineSpacing: TLabel;
sLineSpacing: TEdit;
Label9: TLabel;
sFontNameCom: TComboBox;
Label13: TLabel;
sFontsizeCom: TComboBox;
FontPreview: TPanel;
Label4: TLabel;
CheckBox2: TCheckBox;
sBackground: TCheckBox;
procedure CurBackColorBoxChange(Sender: TObject);
procedure CurTextColorBoxChange(Sender: TObject);
procedure SelBackColorBoxChange(Sender: TObject);
procedure SelTextColorBoxChange(Sender: TObject);
procedure BackColorBoxChange(Sender: TObject);
procedure sFontsizeComChange(Sender: TObject);
procedure sFontNameComChange(Sender: TObject);
procedure cbInsertModeClick(Sender: TObject);
procedure cbSelectmodeChange(Sender: TObject);
procedure cbCodeFoldingClick(Sender: TObject);
procedure cbPastEolClick(Sender: TObject);
procedure CheckBox1Click(Sender: TObject);
procedure sLineNumberStartKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Button3Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure sBlockWidthChange(Sender: TObject);
procedure sLineSpacingChange(Sender: TObject);
procedure sLineSpacingRuleChange(Sender: TObject);
procedure sMaxScrollChange(Sender: TObject);
procedure sMaxUndoChange(Sender: TObject);
procedure soAltSetsColumnModeClick(Sender: TObject);
procedure soAutoIndentClick(Sender: TObject);
procedure soDragDropEditingClick(Sender: TObject);
procedure soDropFilesClick(Sender: TObject);
procedure soGroupUndoClick(Sender: TObject);
procedure soShowSpecialCharsClick(Sender: TObject);
procedure soSmartTabDeleteClick(Sender: TObject);
procedure soSmartTabsClick(Sender: TObject);
procedure soTabIndentClick(Sender: TObject);
procedure soTabsToSpaceClick(Sender: TObject);
procedure sRightEdgeMouseMoveClick(Sender: TObject);
procedure sRightEdgePosChange(Sender: TObject);
procedure sShowActiveLineClick(Sender: TObject);
procedure sShowGutterClick(Sender: TObject);
procedure sShowLineDivderClick(Sender: TObject);
procedure sShowLineNumberClick(Sender: TObject);
procedure sShowRightEdgeClick(Sender: TObject);
procedure sTabWidthChange(Sender: TObject);
procedure sWordWrapClick(Sender: TObject);
procedure sWordwrapPosChange(Sender: TObject);
procedure sWordwrapStyleChange(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure CheckBox2Click(Sender: TObject);
procedure sBackgroundClick(Sender: TObject);
private
FDefault, Source : TSynEditSource;
procedure SetOptions(checked : Boolean; Option : TSynEditorOption);
function GetOptions(Option : TSynEditorOption): Boolean;
public
{ Public declarations }
procedure SetValue(Source : TSynEditSource);
procedure GetValue(Source : TSynEditSource; SynEdit : TCustomSynEdit);
procedure Execute(default : TSynEditSource; SynEdit : TCustomSynEdit);
end;
var
SynOptionsForm: TSynOptionsForm;
implementation
{$R *.dfm}
procedure TSynOptionsForm.sLineSpacingChange(Sender: TObject);
begin
Source.LineSpacing := StrToInt(sLineSpacing.Text);
end;
procedure TSynOptionsForm.sLineSpacingRuleChange(Sender: TObject);
begin
Source.LineSpacingRule := TLineSpacingRule(sLineSpacingRule.ItemIndex)
end;
procedure TSynOptionsForm.sShowGutterClick(Sender: TObject);
begin
Source.Gutter.Visible := sShowGutter.Checked;
end;
procedure TSynOptionsForm.sShowLineNumberClick(Sender: TObject);
begin
Source.Gutter.ShowLineNumbers := sShowLineNumber.Checked;
end;
procedure TSynOptionsForm.sWordwrapStyleChange(Sender: TObject);
begin
if sWordwrapStyle.ItemIndex in [0..2] then
source.WordWrap.Style := TSynWordWrapStyle(sWordwrapStyle.ItemIndex)
end;
procedure TSynOptionsForm.sWordwrapPosChange(Sender: TObject);
begin
Source.WordWrap.Position := StrToInt(sWordwrapPos.Text);
end;
procedure TSynOptionsForm.sShowRightEdgeClick(Sender: TObject);
begin
Source.RightEdge.Visible := sShowRightEdge.Checked;
end;
procedure TSynOptionsForm.sRightEdgePosChange(Sender: TObject);
begin
source.RightEdge.Position := StrToInt(sRightEdgePos.Text);
end;
procedure TSynOptionsForm.sShowActiveLineClick(Sender: TObject);
begin
source.ActiveLine.Visible := sShowActiveLine.Checked;
source.ActiveLine.Indicator.Visible := sShowActiveLine.Checked;
end;
procedure TSynOptionsForm.sShowLineDivderClick(Sender: TObject);
begin
Source.LineDivider.Visible := sShowLineDivder.Checked
end;
procedure TSynOptionsForm.sBlockWidthChange(Sender: TObject);
begin
Source.BlockWidth := StrToInt(sBlockWidth.text)
end;
procedure TSynOptionsForm.sMaxUndoChange(Sender: TObject);
begin
Source.MaxUndo := StrToInt(sMaxUndo.text)
end;
procedure TSynOptionsForm.sTabWidthChange(Sender: TObject);
begin
Source.TabWidth := StrToInt(sTabWidth.text)
end;
procedure TSynOptionsForm.soAltSetsColumnModeClick(Sender: TObject);
begin
SetOptions(soAltSetsColumnMode.Checked, eoAltSetsColumnMode);
end;
procedure TSynOptionsForm.SelBackColorBoxChange(Sender: TObject);
begin
Source.SelectedColor.Background := selbackcolorbox.Selected;
end;
procedure TSynOptionsForm.SelTextColorBoxChange(Sender: TObject);
begin
Source.SelectedColor.Foreground := seltextcolorbox.Selected;
end;
procedure TSynOptionsForm.SetOptions(checked: Boolean;
Option: TSynEditorOption);
begin
if checked then
Source.Options := Source.Options + [Option]
else Source.Options := Source.Options - [Option]
end;
procedure TSynOptionsForm.soAutoIndentClick(Sender: TObject);
begin
SetOptions(soAutoIndent.Checked, eoAutoIndent);
end;
procedure TSynOptionsForm.soDragDropEditingClick(Sender: TObject);
begin
SetOptions(soDragDropEditing.Checked, eoDragDropEditing);
end;
procedure TSynOptionsForm.soDropFilesClick(Sender: TObject);
begin
SetOptions(soDropFiles.Checked, eoDropFiles);
end;
procedure TSynOptionsForm.soGroupUndoClick(Sender: TObject);
begin
SetOptions(soGroupUndo.Checked, eoGroupUndo);
end;
procedure TSynOptionsForm.soShowSpecialCharsClick(Sender: TObject);
begin
SetOptions(soShowSpecialChars.Checked, eoShowSpecialChars);
end;
procedure TSynOptionsForm.soSmartTabsClick(Sender: TObject);
begin
SetOptions(soSmartTabs.Checked, eoSmartTabs);
end;
procedure TSynOptionsForm.soSmartTabDeleteClick(Sender: TObject);
begin
SetOptions(soSmartTabDelete.Checked, eoSmartTabDelete);
end;
procedure TSynOptionsForm.soTabIndentClick(Sender: TObject);
begin
SetOptions(soTabIndent.Checked, eoTabIndent);
end;
procedure TSynOptionsForm.soTabsToSpaceClick(Sender: TObject);
begin
SetOptions(soTabsToSpace.Checked, eoTabsToSpaces);
end;
procedure TSynOptionsForm.Button5Click(Sender: TObject);
begin
with TFontDialog.Create(Self) do
begin
Font := Source.Font;
Options := Options + [fdFixedPitchOnly];
if Execute then
begin
FontPreview.Font := font;
Source.Font := Font;
sFontSizeCom.Text := IntTostr(Font.Size);
sFontNameCom.ItemIndex := sFontNameCom.Items.IndexOf(Font.Name);
end;
end;
end;
procedure TSynOptionsForm.cbCodeFoldingClick(Sender: TObject);
begin
{$IFDEF CODEFOLDING}
//### Code Folding ###
Source.CodeFolding.Enabled := cbCodeFolding.Checked;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -