?? env_opt.pas
字號:
unit env_opt;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ComCtrls, ColorGrd, mwCustomEdit, mwHighlighter, wmMultiSyn,
wmPHPSyn, mwDmlSyn, nhAsmSyn, dmBatSyn, dmDfmSyn, mkGalaxySyn, odPySyn,
lbVBSSyn, hkAWKSyn, hkHTMLSyn, siTCLTKSyn, wmSQLSyn, cwCACSyn,
DcjJavaSyn, cbHPSyn, mwGeneralSyn, DcjPerlSyn, DcjCppSyn, mwPasSyn;
type
TfrmEnvOpts = class(TForm)
btnOk: TButton;
btnCancel: TButton;
PageControl1: TPageControl;
tsEditor: TTabSheet;
TabSheet1: TTabSheet;
lbLanguage: TListBox;
GroupBox1: TGroupBox;
lbElement: TListBox;
ColorGrid: TColorGrid;
cbBold: TCheckBox;
cbItalic: TCheckBox;
cbUnderline: TCheckBox;
Label1: TLabel;
Label2: TLabel;
cbStrikeOut: TCheckBox;
mwPasSyn1: TmwPasSyn;
DcjCppSyn1: TDcjCppSyn;
DcjPerlSyn1: TDcjPerlSyn;
mwGeneralSyn1: TmwGeneralSyn;
cbHPSyn1: TcbHPSyn;
DcjJavaSyn1: TDcjJavaSyn;
cwCACSyn1: TcwCACSyn;
wmSQLSyn1: TwmSQLSyn;
siTCLTKSyn1: TsiTCLTKSyn;
hkHTMLSyn1: ThkHTMLSyn;
hkAWKSyn1: ThkAWKSyn;
lbVbsSyn1: TlbVbsSyn;
odPySyn1: TodPySyn;
mkGalaxySyn1: TmkGalaxySyn;
dmDfmSyn1: TdmDfmSyn;
dmBatSyn1: TdmBatSyn;
nhAsmSyn1: TnhAsmSyn;
mwDmlSyn1: TmwDmlSyn;
wmPHPSyn1: TwmPHPSyn;
GroupBox2: TGroupBox;
cbAutoIndent: TCheckBox;
cbDragDropEditing: TCheckBox;
cbDropFiles: TCheckBox;
cbHalfPageScroll: TCheckBox;
cbScrollPastEol: TCheckBox;
cbTabsToSpaces: TCheckBox;
cbSmartTabs: TCheckBox;
GroupBox3: TGroupBox;
cbGutterVisible: TCheckBox;
cbxGutterSize: TComboBox;
Label3: TLabel;
cbShowLineNumbers: TCheckBox;
wmMultiSyn1: TwmMultiSyn;
procedure FormShow(Sender: TObject);
procedure lbLanguageClick(Sender: TObject);
procedure lbElementClick(Sender: TObject);
procedure ElementChange(Sender: TObject);
procedure btnOkClick(Sender: TObject);
private
public
procedure GetCurrentSettings;
procedure ApplyCurrentSettings;
procedure EnumerateHighlighters;
procedure AssignOptions( Edit : TmwCustomEdit );
end;
var
frmEnvOpts: TfrmEnvOpts;
implementation
uses main;
{$R *.DFM}
procedure TfrmEnvOpts.EnumerateHighlighters;
var
I : integer;
begin
lbLanguage.Items.Clear;
for i := 0 to ComponentCount-1 do
if Components[i] is TmwCustomHighLighter then
lbLanguage.Items.AddObject(
(Components[i] as TmwCustomHighLighter).LanguageName,
Components[i]);
lbLanguage.ItemIndex := 0;
lbLanguageClick(self);
end;
procedure TfrmEnvOpts.FormShow(Sender: TObject);
begin
EnumerateHighlighters;
GetCurrentSettings;
end;
procedure TfrmEnvOpts.lbLanguageClick(Sender: TObject);
var
i: integer;
h: TmwCustomHighLighter;
begin
if lbLanguage.ItemIndex >= 0 then begin
h := lbLanguage.Items.Objects[lbLanguage.ItemIndex] as TmwCustomHighLighter;
lbElement.Items.Clear;
for i := 0 to h.AttrCount - 1 do
lbElement.Items.Add(h.Attribute[i].Name);
lbElement.ItemIndex := 0;
end;
lbElementClick(Self);
end;
procedure TfrmEnvOpts.lbElementClick(Sender: TObject);
var
h: TmwCustomHighLighter;
Attr: TmwHighLightAttributes;
begin
if lbLanguage.ItemIndex >= 0 then begin
h := lbLanguage.Items.Objects[lbLanguage.ItemIndex] as TmwCustomHighLighter;
Attr := TmwHighLightAttributes.Create('');
try
Attr.Assign(h.Attribute[lbElement.ItemIndex]);
ColorGrid.ForegroundIndex := ColorGrid.ColorToIndex(Attr.Foreground);
ColorGrid.BackgroundIndex := ColorGrid.ColorToIndex(Attr.Background);
cbBold.Checked := (fsBold in Attr.Style);
cbItalic.Checked := (fsItalic in Attr.Style);
cbUnderLine.Checked := (fsUnderline in Attr.Style);
cbStrikeOut.Checked := (fsStrikeOut in Attr.Style);
finally
Attr.Free;
end;
end;
end;
procedure TfrmEnvOpts.ElementChange(Sender: TObject);
var
h: TmwCustomHighLighter;
Attr: TmwHighLightAttributes;
AttrStyle: TFontStyles;
begin
if lbLanguage.ItemIndex >= 0 then begin
h := lbLanguage.Items.Objects[lbLanguage.ItemIndex] as TmwCustomHighLighter;
Attr := TmwHighLightAttributes.Create(lbElement.Items[lbElement.ItemIndex]);
try
AttrStyle := [];
Attr.Foreground := ColorGrid.ForegroundColor;
Attr.Background := ColorGrid.BackgroundColor;
if cbBold.Checked then
Include(AttrStyle, fsBold);
if cbItalic.Checked then
Include(AttrStyle, fsItalic);
if cbUnderLine.Checked then
Include(AttrStyle, fsUnderline);
if cbStrikeOut.Checked then
Include(AttrStyle, fsStrikeOut);
Attr.Style := AttrStyle;
h.Attribute[lbElement.ItemIndex].Assign(Attr);
finally
Attr.Free;
end;
end;
end;
procedure TfrmEnvOpts.GetCurrentSettings;
procedure AssignAttrs( FromHL, ToHL : TmwCustomHighLighter );
var
I : integer;
begin
for I := 0 to FromHL.AttrCount-1 do
ToHL.Attribute[I].Assign( FromHL.Attribute[I] );
end;
var
I : integer;
Idx : integer;
Edit : TMyMwCustomEdit;
begin
for i := 0 to MainForm.ComponentCount-1 do
if MainForm.Components[i] is TmwCustomHighLighter then begin
Idx := lbLanguage.Items.IndexOf(
(MainForm.Components[i] as TmwCustomHighLighter).LanguageName );
if Idx >= 0 then
AssignAttrs( MainForm.Components[i] as TmwCustomHighLighter,
lbLanguage.Items.Objects[Idx] as TmwCustomHighLighter );
end;
Edit := MainForm.CurrentEdit;
cbAutoIndent.Checked := mweoAutoIndent in Edit.Options;
cbDragDropEditing.Checked := mweoDragDropEditing in Edit.Options;
cbDropFiles.Checked := mweoDropFiles in Edit.Options;
cbHalfPageScroll.Checked := mweoHalfPageScroll in Edit.Options;
cbScrollPastEol.Checked := mweoScrollPastEol in Edit.Options;
cbTabsToSpaces.Checked := mweoTabsToSpaces in Edit.Options;
cbSmartTabs.Checked := mweoSmartTabs in Edit.Options;
cbGutterVisible.Checked := Edit.Gutter.Width > 0;
cbShowLineNumbers.Checked := Edit.Gutter.ShowLineNumbers;
cbxGutterSize.Text := IntToStr(Edit.Gutter.Width);
end;
procedure TfrmEnvOpts.AssignOptions( Edit : TmwCustomEdit );
begin
if cbAutoIndent.Checked then
Edit.Options := Edit.Options + [mweoAutoIndent]
else
Edit.Options := Edit.Options - [mweoAutoIndent];
if cbDragDropEditing.Checked then
Edit.Options := Edit.Options + [mweoDragDropEditing]
else
Edit.Options := Edit.Options - [mweoDragDropEditing];
if cbDropFiles.Checked then
Edit.Options := Edit.Options + [mweoDropFiles]
else
Edit.Options := Edit.Options - [mweoDropFiles];
if cbHalfPageScroll.Checked then
Edit.Options := Edit.Options + [mweoHalfPageScroll]
else
Edit.Options := Edit.Options - [mweoHalfPageScroll];
if cbScrollPastEol.Checked then
Edit.Options := Edit.Options + [mweoScrollPastEol]
else
Edit.Options := Edit.Options - [mweoScrollPastEol];
if cbTabsToSpaces.Checked then
Edit.Options := Edit.Options + [mweoTabsToSpaces]
else
Edit.Options := Edit.Options - [mweoTabsToSpaces];
if cbSmartTabs.Checked then
Edit.Options := Edit.Options + [mweoSmartTabs]
else
Edit.Options := Edit.Options - [mweoSmartTabs];
if not cbGutterVisible.Checked then
Edit.Gutter.Width := 0
else begin
Edit.Gutter.ShowLineNumbers := cbShowLineNumbers.Checked;
Edit.Gutter.Width := StrToInt(cbxGutterSize.Text);
end;
end;
procedure TfrmEnvOpts.ApplyCurrentSettings;
procedure AssignAttrs( FromHL, ToHL : TmwCustomHighLighter );
var
I : integer;
begin
for I := 0 to FromHL.AttrCount-1 do
ToHL.Attribute[I].Assign( FromHL.Attribute[I] );
end;
var
I : integer;
Idx : integer;
begin
for i := 0 to MainForm.ComponentCount-1 do
if MainForm.Components[i] is TmwCustomHighLighter then begin
Idx := lbLanguage.Items.IndexOf(
(MainForm.Components[i] as TmwCustomHighLighter).LanguageName );
if Idx >= 0 then
AssignAttrs( lbLanguage.Items.Objects[Idx] as TmwCustomHighLighter,
MainForm.Components[i] as TmwCustomHighLighter );
end;
for I := 0 to MainForm.EditorCount-1 do
AssignOptions(MainForm.Editor[I]);
end;
procedure TfrmEnvOpts.btnOkClick(Sender: TObject);
begin
ApplyCurrentSettings;
end;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -