?? main.pas
字號:
unit main;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdActns, ActnList, ImgList, Menus, ToolWin, ComCtrls, ExtCtrls,
wmPHPSyn, wmMultiSyn, mwDmlSyn, nhAsmSyn, dmBatSyn, dmDfmSyn,
mwHtmlExport, mwExport, mwRtfExport, mkGalaxySyn, odPythonBehaviour,
odPySyn, lbVBSSyn, hkAWKSyn, hkHTMLSyn, siTCLTKSyn, wmSQLSyn, cwCACSyn,
DcjJavaSyn, cbHPSyn, mwGeneralSyn, DcjPerlSyn, DcjCppSyn, mwHighlighter,
mwPasSyn, mwCustomEdit, StdCtrls;
type
TMyMwCustomEdit = class(TmwCustomEdit)
public
Filename : string;
end;
TMainForm = class(TForm)
MainMenu: TMainMenu;
ControlBar1: TControlBar;
tbMenu: TToolBar;
File1: TMenuItem;
Exit1: TMenuItem;
N1: TMenuItem;
PrintSetup1: TMenuItem;
Print1: TMenuItem;
N2: TMenuItem;
SaveAs1: TMenuItem;
Save1: TMenuItem;
N3: TMenuItem;
Close1: TMenuItem;
Open1: TMenuItem;
New1: TMenuItem;
Edit1: TMenuItem;
GoTo1: TMenuItem;
Replace1: TMenuItem;
Find1: TMenuItem;
Paste1: TMenuItem;
Copy1: TMenuItem;
Cut1: TMenuItem;
N6: TMenuItem;
Repeatcommand1: TMenuItem;
Undo1: TMenuItem;
ActionList: TActionList;
ImageList: TImageList;
EditCopy1: TEditCopy;
EditCut1: TEditCut;
EditPaste1: TEditPaste;
ToolButton1: TToolButton;
ToolButton2: TToolButton;
tbMain: TToolBar;
ToolButton3: TToolButton;
ToolButton4: TToolButton;
ToolButton5: TToolButton;
ToolButton6: TToolButton;
ToolButton7: TToolButton;
ToolButton8: TToolButton;
ToolButton9: TToolButton;
ToolButton10: TToolButton;
FileNew: TAction;
FileOpen: TAction;
FileSave: TAction;
FileSaveAs: TAction;
PageControl: TPageControl;
StatusBar: TStatusBar;
View1: TMenuItem;
Toolbar1: TMenuItem;
Statusbar2: TMenuItem;
ToolButton11: TToolButton;
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;
odPythonBehaviour1: TodPythonBehaviour;
mkGalaxySyn1: TmkGalaxySyn;
mwRtfExport1: TmwRtfExport;
mwHtmlExport1: TmwHtmlExport;
dmDfmSyn1: TdmDfmSyn;
dmBatSyn1: TdmBatSyn;
nhAsmSyn1: TnhAsmSyn;
mwDmlSyn1: TmwDmlSyn;
wmPHPSyn1: TwmPHPSyn;
OpenDialog: TOpenDialog;
SaveDialog: TSaveDialog;
Toolbars1: TMenuItem;
EnvironmentOptions1: TMenuItem;
FileClose: TAction;
EditorPopup: TPopupMenu;
Cut2: TMenuItem;
Copy2: TMenuItem;
Paste2: TMenuItem;
Close2: TMenuItem;
N7: TMenuItem;
EditSelectAll: TAction;
SelectAll1: TMenuItem;
N8: TMenuItem;
tbHighlighter: TToolBar;
cbxHighlighter: TComboBox;
ToolButton12: TToolButton;
ToolButton13: TToolButton;
ToolButton14: TToolButton;
ToolButton15: TToolButton;
EditUndo: TAction;
EditRedo: TAction;
EditFind: TAction;
SelectAll2: TMenuItem;
EditSearchAgain: TAction;
SearchAgain1: TMenuItem;
wmMultiSyn1: TwmMultiSyn;
procedure FormShow(Sender: TObject);
procedure FileNewExecute(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FileOpenExecute(Sender: TObject);
procedure mwCustomEdit1StatusChange(Sender: TObject;
Changes: TmwStatusChanges);
procedure FileSaveExecute(Sender: TObject);
procedure FileSaveAsExecute(Sender: TObject);
procedure EditCopy1Execute(Sender: TObject);
procedure EditCopy1Update(Sender: TObject);
procedure EditCut1Execute(Sender: TObject);
procedure EditCut1Update(Sender: TObject);
procedure EditPaste1Execute(Sender: TObject);
procedure EditPaste1Update(Sender: TObject);
procedure EnvironmentOptions1Click(Sender: TObject);
procedure FileCloseExecute(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure PageControlChange(Sender: TObject);
procedure cbxHighlighterChange(Sender: TObject);
procedure mwCustomEdit1DropFiles(Sender: TObject; X, Y: Integer;
Files: TStrings);
procedure EditSelectAllExecute(Sender: TObject);
procedure EditUndoUpdate(Sender: TObject);
procedure EditRedoUpdate(Sender: TObject);
procedure EditUndoExecute(Sender: TObject);
procedure EditRedoExecute(Sender: TObject);
procedure EditFindExecute(Sender: TObject);
procedure EditFindUpdate(Sender: TObject);
procedure EditSearchAgainUpdate(Sender: TObject);
procedure EditSearchAgainExecute(Sender: TObject);
procedure Exit1Click(Sender: TObject);
procedure PrintSetup1Click(Sender: TObject);
private
SearchOptions: TmwSearchOptions;
function GetEditor(Index: integer): TMyMwCustomEdit;
function GetEditorCount : integer;
{ Private declarations }
public
procedure OpenFile( aFileName : string );
procedure EnumerateHighlighters;
function CurrentEdit : TMyMwCustomEdit;
procedure StoreSettings;
procedure LoadSettings;
property Editor[Index:integer] : TMyMwCustomEdit read GetEditor;
property EditorCount : integer read GetEditorCount;
end;
var
MainForm: TMainForm;
implementation
uses env_opt, inifiles, find;
{$R *.DFM}
procedure TMainForm.FormShow(Sender: TObject);
begin
LoadSettings;
FileNew.Execute;
end;
procedure TMainForm.OpenFile(aFileName: string);
var
Page : TTabSheet;
Edit : TMyMwCustomEdit;
procedure LoadFile(const FileName: string);
(* This bit is stolen from EditU2.pas *)
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);
if idx >= 0 then cbxHighlighterSelect.ItemIndex := idx;
cbxHighlighterSelectChange(Self);
*)
Edit.Highlighter := light;
Result := true;
end;
end; //while
end
end; { MatchesExtension }
var
i : integer;
ext: string;
bWasText: boolean; //mh 1999-10-04
backCursor: TCursor;
begin
backCursor := Cursor;
try
Cursor := crHourGlass;
Windows.SetCursor(Screen.Cursors[crHourGlass]);
ext := UpperCase(ExtractFileExt(aFileName));
for i := 0 to ComponentCount-1 do
if Components[i] is TmwCustomHighLighter then begin
if MatchesExtension(ext,Components[i] as TmwCustomHighlighter) then break;
end;
if Edit.HighLighter = dmDfmSyn1 then
LoadDFMFile2Strings(aFileName, Edit.Lines, bWasText) //mh 1999-10-04
else
Edit.Lines.LoadFromFile(aFileName);
finally
Cursor := backCursor;
end;
end;
begin
Page := TTabSheet.Create(self);
try
Page.PageControl := PageControl;
Edit := TMyMwCustomEdit.Create(Page);
Edit.Parent := Page;
Edit.Align := alClient;
if (aFileName<>'') then begin
Page.Caption := ExtractFileName(aFileName);
Edit.FileName := aFileName;
LoadFile( aFileName );
end
else
Page.Caption := 'Untitled';
PageControl.ActivePage := Page;
Edit.Modified := false;
Edit.ClearUndo;
Edit.Options := Edit.Options - [mweoShowScrollHint];
frmEnvOpts.AssignOptions(Edit);
Edit.OnStatusChange := mwCustomEdit1StatusChange;
Edit.OnDropFiles := mwCustomEdit1DropFiles;
Edit.PopupMenu := EditorPopup;
mwCustomEdit1StatusChange( Edit, [] );
Edit.SetFocus;
PageControlChange(self);
except
on exception do
Page.Free;
end;
end;
procedure TMainForm.FileNewExecute(Sender: TObject);
begin
OpenFile('');
end;
procedure TMainForm.EnumerateHighlighters;
var
i: integer;
f, s: string;
begin
OpenDialog.Filter := '';
s := '';
cbxHighlighter.Items.Clear;
cbxHighlighter.Items.Add( 'None' );
for i := 0 to ComponentCount-1 do
if Components[i] is TmwCustomHighLighter then begin
if (Components[i] as TmwCustomHighLighter).DefaultFilter <> '' then begin
cbxHighlighter.Items.AddObject((Components[i] as TmwCustomHighLighter).LanguageName,
Components[i]);
if OpenDialog.Filter <> '' then
OpenDialog.Filter := OpenDialog.Filter + '|';
OpenDialog.Filter := OpenDialog.Filter + (Components[i] as TmwCustomHighLighter).DefaultFilter;
f := (Components[i] as TmwCustomHighLighter).DefaultFilter;
s := s + copy(f, pos('|',f)+1, length(f)) + ';';
end;
end;
if OpenDialog.Filter <> '' then
OpenDialog.Filter := OpenDialog.Filter + '|';
OpenDialog.Filter := 'All known files|'+s+'|'+OpenDialog.Filter + 'All files (*.*)|*.*';
SaveDialog.Filter := OpenDialog.Filter;
end;
procedure TMainForm.FormCreate(Sender: TObject);
begin
EnumerateHighlighters;
end;
procedure TMainForm.FileOpenExecute(Sender: TObject);
var
I : integer;
begin
if OpenDialog.Execute then
for I := 0 to OpenDialog.Files.Count-1 do
OpenFile(OpenDialog.Files[I]);
end;
procedure TMainForm.mwCustomEdit1StatusChange(Sender: TObject;
Changes: TmwStatusChanges);
begin
with Sender as TmwCustomEdit do begin
StatusBar.Panels[0].Text := Format('%d:%d', [CaretY, CaretX]);
if Modified then
StatusBar.Panels[1].Text := 'Modified'
else
StatusBar.Panels[1].Text := '';
if InsertMode then
StatusBar.Panels[2].Text := 'Insert'
else
StatusBar.Panels[2].Text := 'Overwrite';
end;
end;
procedure TMainForm.FileSaveExecute(Sender: TObject);
var
Edit : TMyMwCustomEdit;
begin
Edit := CurrentEdit;
if assigned(Edit) then begin
if Edit.Filename = '' then
FileSaveAs.Execute
else begin
Edit.Lines.SaveToFile( Edit.FileName );
Edit.Modified := false;
end;
end;
end;
function TMainForm.CurrentEdit: TMyMwCustomEdit;
begin
Result := Editor[PageControl.ActivePage.PageIndex];
end;
procedure TMainForm.FileSaveAsExecute(Sender: TObject);
var
Edit : TMyMwCustomEdit;
begin
Edit := CurrentEdit;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -