editu2.pas
来自「本人买的<<VC++项目开发实例>>源代码配套光盘.」· PAS 代码 · 共 1,411 行 · 第 1/4 页
PAS
1,411 行
{+-----------------------------------------------------------------------------+
| Created: not known
| Last change: 1999-11-11
| Author: Primoz Gabrijelcic
| Description: mwEdit demo - main unit
| Version: 0.46 (see version.rtf for version history)
| Copyright (c) 1998 Primoz Gabrijelcic
| No rights reserved.
|
| Thanks to: Carlos Wijders, Brad Stowers, Heedong Lim
|
| Known issues:
| - OnChange is not generated on Load
| - ScrollBar scroll is not generating any event (except OnPaint)
|
+----------------------------------------------------------------------------+}
{$J+}
unit EditU2;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls, ComCtrls, Menus, mwPasSyn, mwCustomEdit, mwHighlighter,
DcjCppSyn, Spin, DcjPerlSyn, mwGeneralSyn, mwKeyCmds, cbHPSyn,
mwKeyCmdsEditor, {$IFNDEF MWE_COMPILER_4_UP}ImgList,{$ENDIF} Buttons,
DcjJavaSyn, cwCACSyn, siTCLTKSyn, wmSQLSyn, hkAWKSyn, hkHTMLSyn, odPySyn,
odPythonBehaviour, lbVBSSyn, {dxDBDateEdit, Mask, dxDateEdit, }mkGalaxySyn, //eb 1999-08-25
mwRtfExport, mwExport, mwHtmlExport, dmBatSyn, dmDfmSyn, nhAsmSyn,
mwDmlSyn, izIniSyn, dmMLSyn, mwCompletionProposal;
type
TForm1 = class(TForm)
OpenDialog1: TOpenDialog;
PageControl1: TPageControl;
tabBookmarks: TTabSheet;
cbEnableKeys: TCheckBox;
cbGlyphsVisible: TCheckBox;
Label4: TLabel;
inpLeftMargin: TSpinEdit;
tabGutter: TTabSheet;
Label5: TLabel;
tabHighlighter: TTabSheet;
Label3: TLabel;
cbxHighlighterSelect: TComboBox;
cbxSettingsSelect: TComboBox;
Label1: TLabel;
tabCaret: TTabSheet;
cbxInsertCaret: TComboBox;
Label7: TLabel;
Label8: TLabel;
cbxOverwriteCaret: TComboBox;
cbInsertMode: TCheckBox;
tabUndo: TTabSheet;
btnUndo: TButton;
tabFile: TTabSheet;
btnLoad: TButton;
tabInfo: TTabSheet;
Label9: TLabel;
Label10: TLabel;
inpLineText: TEdit;
Label11: TLabel;
inpMaxUndo: TSpinEdit;
cbReadonly: TCheckBox;
tabDisplay: TTabSheet;
outFilename: TLabel;
tabAbout: TTabSheet;
Label17: TLabel;
Label18: TLabel;
Label20: TLabel;
Label21: TLabel;
outLineCount: TEdit;
tabEvents: TTabSheet;
FontDialog1: TFontDialog;
cbxGutterColor: TComboBox;
inpLeftChar: TSpinEdit;
inpTopLine: TSpinEdit;
inpCaretX: TSpinEdit;
inpCaretY: TSpinEdit;
cbEnableEventLog: TCheckBox;
lbEventLog: TListBox;
Label2: TLabel;
Label19: TLabel;
Memo1: TMemo;
cbxAttrSelect: TComboBox;
cbxAttrBackground: TComboBox;
cbxAttrForeground: TComboBox;
Label23: TLabel;
Label24: TLabel;
grbAttrStyle: TGroupBox;
btnKeywords: TButton;
grbAttrComments: TGroupBox;
cbStyleStrikeOut: TCheckBox;
cbStyleUnderline: TCheckBox;
cbStyleItalic: TCheckBox;
cbStyleBold: TCheckBox;
DcjCppSyn1: TDcjCppSyn;
DcjPerlSyn1: TDcjPerlSyn;
mwGeneralSyn1: TmwGeneralSyn;
cbHPSyn1: TcbHPSyn;
btnSaveToReg: TButton;
btnLoadFromReg: TButton;
StatusBar: TStatusBar;
mwEdit: TmwCustomEdit;
TabSheet1: TTabSheet;
KeyCmdList: TListView;
btnEdit: TButton;
ImageList1: TImageList;
cbInternalImages: TCheckBox;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
SpeedButton3: TSpeedButton;
SpeedButton4: TSpeedButton;
SpeedButton5: TSpeedButton;
Label25: TLabel;
inpXOffset: TSpinEdit;
DcjJavaSyn1: TDcjJavaSyn;
btnRedo: TButton;
cwCACSyn1: TcwCACSyn;
cbCommentsBas: TCheckBox;
cbCommentsAsm: TCheckBox;
cbCommentsPas: TCheckBox;
cbCommentsAnsi: TCheckBox;
cbCommentsC: TCheckBox;
Label22: TLabel;
wmSQLSyn1: TwmSQLSyn;
siTCLTKSyn1: TsiTCLTKSyn;
btnPrint: TButton;
mwPasSyn1: TmwPasSyn;
cbLineNumbers: TCheckBox;
cbLeadingZeros: TCheckBox;
cbZeroStart: TCheckBox;
hkAWKSyn1: ThkAWKSyn;
odPySyn1: TodPySyn;
cbMouse: TCheckBox;
cbDrag: TCheckBox;
cbKeyboard: TCheckBox;
cbOther: TCheckBox;
btnClear: TButton;
hkHTMLSyn1: ThkHTMLSyn;
odPythonBehaviour1: TodPythonBehaviour;
tabExporter: TTabSheet;
cbxExporterSelect: TComboBox;
Label27: TLabel;
btnExportToClip: TButton;
lbVbsSyn1: TlbVbsSyn;
tabEdit: TTabSheet;
cbAutoIndent: TCheckBox;
cbWantTabs: TCheckBox;
Label6: TLabel;
inpGutterWidth: TSpinEdit;
Label29: TLabel;
inpTabWidth: TSpinEdit;
mkGalaxySyn1: TmkGalaxySyn;
Label30: TLabel;
inpDigitCount: TSpinEdit;
Label31: TLabel;
inpLeftOffset: TSpinEdit;
inpRightOffset: TSpinEdit;
Label32: TLabel;
mwHtmlExport1: TmwHtmlExport;
mwRtfExport1: TmwRtfExport;
btnExportAllToClip: TButton;
FindDialog1: TFindDialog;
ReplaceDialog1: TReplaceDialog;
tabSearch: TTabSheet;
btnSearch: TButton;
btnSearchNext: TButton;
btnSearchPrev: TButton;
lblSearchResult: TLabel;
btnReplace: TButton;
dmBatSyn1: TdmBatSyn;
dmDfmSyn1: TdmDfmSyn;
nhAsmSyn1: TnhAsmSyn;
Label12: TLabel;
Label13: TLabel;
Label14: TLabel;
Label15: TLabel;
Label16: TLabel;
Label26: TLabel;
Label28: TLabel;
cbHideSelection: TCheckBox;
inpRightEdge: TSpinEdit;
cbScrollPastEOL: TCheckBox;
cbxScrollBars: TComboBox;
cbxColor: TComboBox;
cbxForeground: TComboBox;
cbxBackground: TComboBox;
btnFont: TButton;
inpExtraLineSpacing: TSpinEdit;
cbxREColor: TComboBox;
cbHalfPageScroll: TCheckBox;
Label33: TLabel;
mwDmlSyn1: TmwDmlSyn;
izIniSyn1: TizIniSyn;
dmMLSyn1: TdmMLSyn;
MwCompletionProposal1: TMwCompletionProposal;
mwAutoComplete1: TmwAutoComplete;
Memo2: TMemo;
procedure btnLoadClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure cbxSettingsSelectChange(Sender: TObject);
procedure btnUndoClick(Sender: TObject);
procedure mwEditEnter(Sender: TObject);
procedure mwEditKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure mwEditChange(Sender: TObject);
procedure cbxHighlighterSelectChange(Sender: TObject);
procedure cbReadonlyClick(Sender: TObject);
procedure cbHideSelectionClick(Sender: TObject);
procedure cbScrollPastEOLClick(Sender: TObject);
procedure inpRightEdgeChange(Sender: TObject);
procedure cbxScrollBarsChange(Sender: TObject);
procedure cbxColorChange(Sender: TObject);
procedure cbxForegroundChange(Sender: TObject);
procedure cbxBackgroundChange(Sender: TObject);
procedure btnFontClick(Sender: TObject);
procedure cbxInsertCaretChange(Sender: TObject);
procedure cbxOverwriteCaretChange(Sender: TObject);
procedure cbInsertModeClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure FormResize(Sender: TObject);
procedure cbxGutterColorChange(Sender: TObject);
procedure inpGutterWidthChange(Sender: TObject);
procedure cbEnableKeysClick(Sender: TObject);
procedure cbGlyphsVisibleClick(Sender: TObject);
procedure inpLeftMarginChange(Sender: TObject);
procedure inpMaxUndoChange(Sender: TObject);
procedure inpLineTextKeyPress(Sender: TObject; var Key: Char);
procedure mwEditClick(Sender: TObject);
procedure inpLeftCharChange(Sender: TObject);
procedure inpTopLineChange(Sender: TObject);
procedure inpCaretXChange(Sender: TObject);
procedure inpCaretYChange(Sender: TObject);
procedure cbEnableEventLogClick(Sender: TObject);
procedure mwEditDblClick(Sender: TObject);
procedure mwEditDragDrop(Sender, Source: TObject; X, Y: Integer);
procedure mwEditDragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
procedure mwEditEndDrag(Sender, Target: TObject; X, Y: Integer);
procedure mwEditExit(Sender: TObject);
procedure mwEditKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure mwEditKeyPress(Sender: TObject; var Key: Char);
procedure mwEditPaint(Sender: TObject; ACanvas: TCanvas);
procedure mwEditStartDrag(Sender: TObject;
var DragObject: TDragObject);
procedure cbxAttrSelectChange(Sender: TObject);
procedure cbxAttrBackgroundChange(Sender: TObject);
procedure cbCommentsCClick(Sender: TObject);
procedure btnKeywordsClick(Sender: TObject);
procedure mwEditProcessCommand(Sender: TObject; //nmi 1999-10-17
var Command: TmwEditorCommand; var AChar: Char; Data: Pointer);
procedure mwEditProcessUserCommand(Sender: TObject;
var Command: TmwEditorCommand; var AChar: Char; Data: Pointer);
procedure btnSaveToRegClick(Sender: TObject);
procedure btnLoadFromRegClick(Sender: TObject);
procedure btnEditClick(Sender: TObject);
procedure cbInternalImagesClick(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure mwEditPlaceMark(Sender: TObject; var mark: TMark); //nmi 1999-10-17
procedure inpXOffsetChange(Sender: TObject);
procedure inpExtraLineSpacingChange(Sender: TObject);
procedure btnRedoClick(Sender: TObject);
procedure btnPrintClick(Sender: TObject);
procedure mwEditCommandDone(Sender: TObject);
procedure mwEditPrintStatus(Sender: TObject; Status: TmwPrintStatus; //nmi 1999-10-17
PageNumber: Integer; var Abort: Boolean);
procedure cbLineNumbersClick(Sender: TObject);
procedure cbLeadingZerosClick(Sender: TObject);
procedure cbZeroStartClick(Sender: TObject);
procedure mwEditMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure mwEditMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure mwEditMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure btnClearClick(Sender: TObject);
procedure cbAutoIndentClick(Sender: TObject);
procedure cbxREColorChange(Sender: TObject);
procedure cbHalfPageScrollClick(Sender: TObject);
procedure inpTabWidthChange(Sender: TObject);
procedure cbWantTabsClick(Sender: TObject);
procedure mwEditSelectionChange(Sender: TObject);
procedure inpDigitCountChange(Sender: TObject);
procedure inpLeftOffsetChange(Sender: TObject);
procedure inpRightOffsetChange(Sender: TObject);
procedure cbxExporterSelectChange(Sender: TObject);
procedure btnExportToClipClick(Sender: TObject);
procedure btnSearchClick(Sender: TObject);
procedure btnSearchNextClick(Sender: TObject);
procedure DoFindText(Sender: TObject);
procedure btnReplaceClick(Sender: TObject);
procedure DoReplaceText(Sender: TObject);
procedure mwEditSpecialLineColors(Sender: TObject; Line: Integer;
var Special: Boolean; var FG, BG: TColor);
procedure mwEditDropFiles(Sender: TObject; X, Y: Integer;
Files: TStrings);
private
fName: string;
markButtons: array [0..4] of TSpeedButton;
disableMarkButtons: boolean;
procedure LoadSettings;
function ColorToIndex(col: TColor): integer;
function IndexToColor(index: integer): TColor;
procedure LoadInfo;
procedure EnumerateHighlighters;
procedure UpdateKeystrokesList;
procedure ReloadAttributes;
procedure ResetMarkButtons;
procedure RebuildMarks;
procedure RecalcLeftMargin;
procedure EnumerateExporters;
procedure LoadFile(const FileName: string); //mh 1999-11-02
end;
var
Form1: TForm1;
implementation
uses Unit2;
{$R *.DFM}
{begin} //mh 1999-11-02
procedure TForm1.LoadFile(const FileName: string);
// procedure TForm1.btnLoadClick(Sender: TObject);
function MatchesExtension(ext: string; light: TmwCustomHighlighter): boolean;
var
fext : string;
idx : integer;
ucext : string;
filter: string;
p : integer;
begin
Result := false;
ucext := UpperCase(ext);
p := Pos('.',ucext);
if p > 0 then ucext := Copy(ucext,p+1,Length(ucext)-p);
p := Pos('|',light.DefaultFilter);
if p > 0 then begin
filter := Copy(light.DefaultFilter,p+1,Length(light.DefaultFilter)-p);
while filter <> '' do begin
p := Pos(';',filter);
if p = 0 then p := Length(filter)+1;
fext := Copy(filter,1,p-1);
filter := Copy(filter,p+1,Length(filter)-p);
p := Pos('.',fext);
if p > 0 then fext := Copy(fext,p+1,Length(fext)-p);
if UpperCase(fext) = ucext then begin
idx := cbxHighlighterSelect.Items.IndexOf(light.LanguageName);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?