?? main.pas.svn-base
字號:
unit main;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Menus, StdActns, ActnList, ImgList, ComCtrls, ToolWin, ExtCtrls,
EasyEditor, StdCtrls;
type
TMainForm = class(TForm)
ActionList1: TActionList;
FileNewAction: TAction;
FileOpenAction: TAction;
FileCloseAction: TWindowClose;
FileSaveAction: TAction;
FileSaveAsAction: TAction;
FileSaveAllAction: TAction;
FilePrintAction: TAction;
FileCloseAllFiles: TAction;
FileExplorer: TAction;
WindowCascadeAction: TWindowCascade;
WindowTileHorizontalAction: TWindowTileHorizontal;
FileExitAction: TAction;
WindowTileVerticalAction: TWindowTileVertical;
WindowMinimizeAllAction: TWindowMinimizeAll;
WindowArrangeAllAction: TWindowArrange;
HelpAboutAction: TAction;
FindAction: TAction;
ReplaceAction: TAction;
GotoLineAction: TAction;
ToolEnvOptions: TAction;
EditUndo: TAction;
EditRedo: TAction;
EditCut: TAction;
EditCopy: TAction;
EditPaste: TAction;
EditDelete: TAction;
EditSelectAll: TAction;
FindAgainAction: TAction;
Separator: TAction;
MainMenu1: TMainMenu;
File1: TMenuItem;
FileNewItem: TMenuItem;
FileOpenItem: TMenuItem;
FileCloseItem: TMenuItem;
FileSaveItem: TMenuItem;
FileSaveAsItem: TMenuItem;
SaveAllItem: TMenuItem;
Print1: TMenuItem;
CloseAllFiles1: TMenuItem;
N1: TMenuItem;
FileExitItem: TMenuItem;
Edit1: TMenuItem;
Undo1: TMenuItem;
Redo1: TMenuItem;
N5: TMenuItem;
Cut1: TMenuItem;
Copy1: TMenuItem;
Paste1: TMenuItem;
Delete1: TMenuItem;
SelectAll1: TMenuItem;
Search1: TMenuItem;
Find1: TMenuItem;
Replace1: TMenuItem;
SearchAgain1: TMenuItem;
GotoLine1: TMenuItem;
Window1: TMenuItem;
WindowCascadeItem: TMenuItem;
WindowTileItem: TMenuItem;
WindowTileItem2: TMenuItem;
WindowMinimizeItem: TMenuItem;
WindowArrangeItem: TMenuItem;
miTools: TMenuItem;
EviromentOptions1: TMenuItem;
Help1: TMenuItem;
HelpAboutItem: TMenuItem;
Images: TImageList;
TabPanel: TPanel;
TabControl: TTabControl;
ToolBar1: TToolBar;
btnBackward: TToolButton;
btnForward: TToolButton;
OpenDialog: TOpenDialog;
SaveDialog: TSaveDialog;
LeftPanel: TPanel;
LeftSplitter: TSplitter;
CodeExplorer1: TMenuItem;
ToolBar: TToolBar;
ToolButton9: TToolButton;
ToolButton1: TToolButton;
ToolButton2: TToolButton;
ToolButton12: TToolButton;
ToolButton3: TToolButton;
ToolButton28: TToolButton;
ToolButton32: TToolButton;
ToolButton22: TToolButton;
ToolButton25: TToolButton;
ToolButton26: TToolButton;
ToolButton27: TToolButton;
ToolButton7: TToolButton;
ToolButton8: TToolButton;
ToolButton10: TToolButton;
ToolButton11: TToolButton;
ToolButton24: TToolButton;
ToolButton23: TToolButton;
ToolButton30: TToolButton;
ToolButton31: TToolButton;
ToolButton4: TToolButton;
ToolButton35: TToolButton;
ToolButton5: TToolButton;
ToolButton29: TToolButton;
StatusBar1: TStatusBar;
procedure EditUndoExecute(Sender: TObject);
procedure EditUndoUpdate(Sender: TObject);
procedure EditRedoExecute(Sender: TObject);
procedure EditRedoUpdate(Sender: TObject);
procedure EditCutExecute(Sender: TObject);
procedure EditCutUpdate(Sender: TObject);
procedure EditCopyExecute(Sender: TObject);
procedure EditPasteExecute(Sender: TObject);
procedure EditPasteUpdate(Sender: TObject);
procedure EditDeleteExecute(Sender: TObject);
procedure EditSelectAllExecute(Sender: TObject);
procedure EditSelectAllUpdate(Sender: TObject);
procedure FileNewActionExecute(Sender: TObject);
procedure FileOpenActionExecute(Sender: TObject);
procedure FileCloseActionExecute(Sender: TObject);
procedure FileSaveActionExecute(Sender: TObject);
procedure FileSaveActionUpdate(Sender: TObject);
procedure FileSaveAsActionExecute(Sender: TObject);
procedure FileSaveAllActionExecute(Sender: TObject);
procedure FileCloseAllFilesExecute(Sender: TObject);
procedure FileExplorerExecute(Sender: TObject);
procedure LeftPanelDockDrop(Sender: TObject; Source: TDragDockObject;
X, Y: Integer);
procedure LeftPanelDockOver(Sender: TObject; Source: TDragDockObject;
X, Y: Integer; State: TDragState; var Accept: Boolean);
procedure LeftPanelUnDock(Sender: TObject; Client: TControl;
NewTarget: TWinControl; var Allow: Boolean);
procedure FormCreate(Sender: TObject);
procedure FileExitActionExecute(Sender: TObject);
procedure FindActionExecute(Sender: TObject);
procedure ReplaceActionExecute(Sender: TObject);
procedure GotoLineActionExecute(Sender: TObject);
procedure FindAgainActionExecute(Sender: TObject);
procedure HelpAboutActionExecute(Sender: TObject);
procedure ToolEnvOptionsExecute(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure TabControlChange(Sender: TObject);
private
FInDestroying : boolean;
procedure SaveToFile(Editor : TCustomEasyEdit; const FileName : string);
procedure AddTab(Form : TCustomForm; const FileName : string);
{ Private declarations }
public
function CreateEditor(const FileName : string) : TCustomForm;
function OpenEditor(const FileName : string) : TCustomForm;
function SaveEditor(Form : TForm; SaveEmpty : boolean) : boolean;
procedure ActivateTab(Form : TCustomForm);
function GetEditForm(const FileName : string) : TCustomForm;
function CloseQuery : boolean; override;
procedure RemoveTab(Form : TCustomForm);
property InDestroying : boolean read FInDestroying;
{ Public declarations }
end;
var
MainForm: TMainForm;
implementation
uses
editunit, expl,
EasyKeyMap, EasySearchDlg, EasyReplDlg, EasyGotoDlg, EasyCustomDlg;
const
sNoname = 'Noname';
sErrorMessage = 'Cat''t create form. System resources are low';
{$R *.DFM}
function TMainForm.CloseQuery : boolean;
begin
FInDestroying := true;
result := inherited CloseQuery;
end;
function TMainForm.CreateEditor(const FileName : string) : TCustomForm;
begin
try
if MDIChildCount >= 200 then
raise Exception.Create(sErrorMessage);
ExplorerFrm.UpdateExplorer(FileName);
result := TEditForm.Create(Application);
result.Caption := FileName;
with TEditForm(result) do
begin
if FileExists(FileName) then
EasyEdit.Lines.LoadFromFile(FileName);
AfterCreate;
end;
AddTab(result, FileName);
except
ShowMessage(sErrorMessage);
result := nil;
end;
end;
procedure TMainForm.ActivateTab(Form : TCustomForm);
begin
with TabControl do
TabIndex := Tabs.IndexOfObject(ActiveMdiChild);
end;
procedure TMainForm.AddTab(Form : TCustomForm; const FileName : string);
begin
with TabControl do
begin
Tabs.AddObject(ExtractFileName(FileName), Form);
TabIndex := Tabs.Count - 1;
TabPanel.Visible := Tabs.Count > 0;
end;
end;
procedure TMainForm.RemoveTab(Form : TCustomForm);
var
i : integer;
begin
with TabControl do
begin
i := Tabs.IndexOfObject(Form);
if i >= 0 then
Tabs.Delete(i);
TabPanel.Visible := Tabs.Count > 0;
end;
end;
function TMainForm.GetEditForm(const FileName : string) : TCustomForm;
var
i : integer;
begin
result := nil;
for i := 0 to MDIChildCount - 1 do
if CompareText(MDIChildren[i].Caption, FileName) = 0then
begin
result := MDIChildren[i];
Exit;
end;
end;
function TMainForm.OpenEditor(const FileName : string) : TCustomForm;
begin
result := GetEditForm(FileName);
if result <> nil then
begin
SendMessage(ClientHandle, WM_MDIACTIVATE, TForm(result).Handle, 0);
Exit;
end;
if FileExists(FileName) then
result := CreateEditor(FileName);
end;
procedure TMainForm.SaveToFile(Editor : TCustomEasyEdit; const FileName : string);
begin
if FileExists(FileName) then
Editor.Lines.SaveToFile(FileName);
end;
function TMainForm.SaveEditor(Form : TForm; SaveEmpty : boolean) : boolean;
var
i : integer;
begin
result := true;
if not (Form is TEditForm) then
Exit;
with TEditForm(Form) do
begin
if CompareText(Copy(Caption, 1, Length(sNoname)), sNoname) = 0 then
begin
if not SaveEmpty then
Exit;
if not SaveDialog.Execute then
begin
result := false;
Exit;
end;
Caption := SaveDialog.FileName;
end;
SaveToFile(EasyEdit, Caption);
with TabControl do
begin
i := Tabs.IndexOfObject(Form);
if i >= 0 then
Tabs[i] := ExtractFileName(Caption);
end;
with EasyEdit.EditSource do
begin
UndoList.Clear;
RedoList.Clear;
Modified := false;
end;
end;
end;
procedure TMainForm.EditUndoExecute(Sender: TObject);
begin
if ActiveMdiChild is TEditForm then
TEditForm (ActiveMdiChild).EasyEdit.Undo;
end;
procedure TMainForm.EditUndoUpdate(Sender: TObject);
begin
EditUndo.Enabled := (ActiveMdiChild is TEditForm) and TEditForm(ActiveMdiChild).EasyEdit.EditSource.UndoAvailable;
end;
procedure TMainForm.EditRedoExecute(Sender: TObject);
begin
if ActiveMdiChild is TEditForm then
TEditForm (ActiveMdiChild).EasyEdit.Redo;
end;
procedure TMainForm.EditRedoUpdate(Sender: TObject);
begin
EditRedo.Enabled := (ActiveMdiChild is TEditForm) and TEditForm(ActiveMdiChild).EasyEdit.EditSource.RedoAvailable;
end;
procedure TMainForm.EditCutExecute(Sender: TObject);
begin
if ActiveMdiChild is TEditForm then
TEditForm (ActiveMdiChild).EasyEdit.CutBlock;
end;
procedure TMainForm.EditCutUpdate(Sender: TObject);
begin
(Sender as TAction).Enabled := (ActiveMdiChild is TEditForm) and TEditForm(ActiveMdiChild).EasyEdit.CanCopy;
end;
procedure TMainForm.EditCopyExecute(Sender: TObject);
begin
if ActiveMdiChild is TEditForm then
TEditForm (ActiveMdiChild).EasyEdit.CopyBlock;
end;
procedure TMainForm.EditPasteExecute(Sender: TObject);
begin
if ActiveMdiChild is TEditForm then
TEditForm (ActiveMdiChild).EasyEdit.PasteBlock;
end;
procedure TMainForm.EditPasteUpdate(Sender: TObject);
begin
(Sender as TAction).Enabled := (ActiveMdiChild is TEditForm) and TEditForm(ActiveMdiChild).EasyEdit.CanPaste;
end;
procedure TMainForm.EditDeleteExecute(Sender: TObject);
begin
if ActiveMdiChild is TEditForm then
TEditForm (ActiveMdiChild).EasyEdit.DeleteBlock;
end;
procedure TMainForm.EditSelectAllExecute(Sender: TObject);
begin
if ActiveMdiChild is TEditForm then
TEditForm(ActiveMdiChild).EasyEdit.SelectAll;
end;
procedure TMainForm.EditSelectAllUpdate(Sender: TObject);
begin
(Sender as TAction).Enabled := (ActiveMdiChild is TEditForm);
end;
procedure TMainForm.FileNewActionExecute(Sender: TObject);
begin
CreateEditor(sNoname + IntToStr(MDIChildCount + 1));
end;
procedure TMainForm.FileOpenActionExecute(Sender: TObject);
begin
with OpenDialog do
if Execute then
OpenEditor(FileName);
end;
procedure TMainForm.FileCloseActionExecute(Sender: TObject);
begin
if ActiveMdiChild is TEditForm then
TEditForm(ActiveMdiChild).Close;
end;
procedure TMainForm.FileSaveActionExecute(Sender: TObject);
begin
if (ActiveMDIChild is TEditForm) then
SaveEditor(ActiveMDIChild, true);
end;
procedure TMainForm.FileSaveActionUpdate(Sender: TObject);
begin
(Sender as TAction).Enabled := (ActiveMdiChild is TEditForm) and TEditForm(ActiveMdiChild).EasyEdit.Modified;
end;
procedure TMainForm.FileSaveAsActionExecute(Sender: TObject);
var
OldName : string;
begin
if ActiveMdiChild is TEditForm then
with SaveDialog do
begin
FileName := ActiveMDIChild.Caption;
if Execute then
begin
OldName := ActiveMDIChild.Caption;
ActiveMDIChild.Caption := FileName;
SaveEditor(ActiveMDIChild, true);
if CompareText(OldName, FileName) <> 0 then
ExplorerFrm.FileNameChanged(OldName, FileName);
end;
end;
end;
procedure TMainForm.FileSaveAllActionExecute(Sender: TObject);
var
i : integer;
begin
for i := 0 to MDIChildCount - 1 do
if (MDIChildren[i] is TEditForm) and TEditForm(MDIChildren[i]).EasyEdit.Modified then
SaveEditor(MDIChildren[i], true);
end;
procedure TMainForm.FileCloseAllFilesExecute(Sender: TObject);
var
i : integer;
begin
for i := MDIChildCount - 1 downto 0 do
MDIChildren[i].Close;
end;
procedure TMainForm.FileExplorerExecute(Sender: TObject);
begin
with ExplorerFrm do
begin
if not Visible then
ManualDock(LeftPanel);
Show;
end;
end;
procedure TMainForm.LeftPanelDockDrop(Sender: TObject;
Source: TDragDockObject; X, Y: Integer);
begin
LeftPanel.Width := Source.Control.LRDockWidth;
LeftSplitter.Show;
end;
procedure TMainForm.LeftPanelDockOver(Sender: TObject;
Source: TDragDockObject; X, Y: Integer; State: TDragState;
var Accept: Boolean);
begin
Accept := (Source <> nil) and (Source.Control is TExplorerFrm);
end;
procedure TMainForm.LeftPanelUnDock(Sender: TObject; Client: TControl;
NewTarget: TWinControl; var Allow: Boolean);
begin
LeftPanel.Width := 1;
LeftSplitter.Hide;
end;
procedure TMainForm.FormCreate(Sender: TObject);
begin
LeftPanel.Width := 1;
end;
procedure TMainForm.FileExitActionExecute(Sender: TObject);
begin
Close;
end;
procedure TMainForm.FindActionExecute(Sender: TObject);
begin
if (ActiveMDIChild is TEditForm) then
TEditForm(ActiveMDIChild).EasyEdit.ExecuteDialog(cFind);
end;
procedure TMainForm.ReplaceActionExecute(Sender: TObject);
begin
if (ActiveMDIChild is TEditForm) then
TEditForm(ActiveMDIChild).EasyEdit.ExecuteDialog(cReplace);
end;
procedure TMainForm.GotoLineActionExecute(Sender: TObject);
begin
if (ActiveMDIChild is TEditForm) then
TEditForm(ActiveMDIChild).EasyEdit.ExecuteDialog(cGotoLine);
end;
procedure TMainForm.FindAgainActionExecute(Sender: TObject);
begin
if (ActiveMDIChild is TEditForm) then
TEditForm(ActiveMDIChild).EasyEdit.FindNext(cFind);
end;
procedure TMainForm.HelpAboutActionExecute(Sender: TObject);
begin
ShowMessage('Code Completion Demo'#13#10'Copyright Dream Compay'#13#10'www.dream-com.com');
end;
procedure TMainForm.ToolEnvOptionsExecute(Sender: TObject);
begin
ShowEditorSettings;
end;
procedure TMainForm.FormShow(Sender: TObject);
begin
FileExplorerExecute(Self);
end;
procedure TMainForm.TabControlChange(Sender: TObject);
begin
with TabControl do
if TabIndex >= 0 then
SendMessage(ClientHandle, WM_MDIACTIVATE, (Tabs.Objects[TabIndex] as TCustomForm).Handle, 0);
end;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -