📄 main.pas
字号:
unit Main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, ImgList, ActnList, StdActns, ExtActns, ExtCtrls, ToolWin,
ComCtrls, Child, MRU, IniFiles, AppEvnts, StdCtrls;
type
TfrmMain = class(TForm)
ActionList1: TActionList;
ToolbarImages: TImageList;
MainMenu: TMainMenu;
FileMenu: TMenuItem;
FileNewItem: TMenuItem;
FileOpenItem: TMenuItem;
FileSaveItem: TMenuItem;
FileSaveAsItem: TMenuItem;
N1: TMenuItem;
FilePrintItem: TMenuItem;
N4: TMenuItem;
FileExitItem: TMenuItem;
EditMenu: TMenuItem;
EditUndoItem: TMenuItem;
N2: TMenuItem;
EditCutItem: TMenuItem;
EditCopyItem: TMenuItem;
EditPasteItem: TMenuItem;
N5: TMenuItem;
miEditFont: TMenuItem;
HelpMenu: TMenuItem;
HelpAboutItem: TMenuItem;
WindowMenu: TMenuItem;
EditCut1: TEditCut;
EditCopy1: TEditCopy;
EditPaste1: TEditPaste;
EditSelectAll1: TEditSelectAll;
EditUndo1: TEditUndo;
FileOpen1: TFileOpen;
FileSaveAs1: TFileSaveAs;
FilePrintSetup1: TFilePrintSetup;
FileExit1: TFileExit;
FilePrint1: TAction;
FileNew1: TAction;
EditFont1: TAction;
HelpAbout1: TAction;
RichEditBold1: TRichEditBold;
RichEditItalic1: TRichEditItalic;
RichEditUnderline1: TRichEditUnderline;
RichEditStrikeOut1: TRichEditStrikeOut;
RichEditBullets1: TRichEditBullets;
RichEditAlignLeft1: TRichEditAlignLeft;
RichEditAlignRight1: TRichEditAlignRight;
RichEditAlignCenter1: TRichEditAlignCenter;
HelpContents1: THelpContents;
HelpTopicSearch1: THelpTopicSearch;
HelpOnHelp1: THelpOnHelp;
WindowClose1: TWindowClose;
WindowCascade1: TWindowCascade;
WindowTileHorizontal1: TWindowTileHorizontal;
WindowTileVertical1: TWindowTileVertical;
WindowMinimizeAll1: TWindowMinimizeAll;
WindowArrange1: TWindowArrange;
SearchFind1: TSearchFind;
SearchFindNext1: TSearchFindNext;
SearchReplace1: TSearchReplace;
SearchFindFirst1: TSearchFindFirst;
Arrange1: TMenuItem;
Cascade1: TMenuItem;
Close1: TMenuItem;
MinimizeAll1: TMenuItem;
ileHorizontally1: TMenuItem;
ileVertically1: TMenuItem;
FormatMenu: TMenuItem;
AlignLeft1: TMenuItem;
Center1: TMenuItem;
AlignRight1: TMenuItem;
Bold1: TMenuItem;
Italic1: TMenuItem;
Underline1: TMenuItem;
Strikeout1: TMenuItem;
Bullets1: TMenuItem;
N3: TMenuItem;
N6: TMenuItem;
SearchMenu: TMenuItem;
Find1: TMenuItem;
FindFirst1: TMenuItem;
FindNext1: TMenuItem;
Replace1: TMenuItem;
Contents1: TMenuItem;
HelpContextAction11: TMenuItem;
HelponHelp2: TMenuItem;
opicSearch1: TMenuItem;
N7: TMenuItem;
ControlBar1: TControlBar;
ToolBar1: TToolBar;
ToolButton1: TToolButton;
ToolButton2: TToolButton;
ToolButton3: TToolButton;
ToolButton4: TToolButton;
ToolButton6: TToolButton;
FileSave1: TAction;
ToolButton7: TToolButton;
ToolButton5: TToolButton;
ToolBar2: TToolBar;
ToolButton8: TToolButton;
ToolButton9: TToolButton;
ToolButton10: TToolButton;
ToolButton12: TToolButton;
ToolBar3: TToolBar;
ToolButton13: TToolButton;
ToolButton14: TToolButton;
ToolButton15: TToolButton;
ToolButton16: TToolButton;
ToolButton17: TToolButton;
ToolButton18: TToolButton;
ToolButton11: TToolButton;
ToolButton19: TToolButton;
ToolButton20: TToolButton;
ToolButton21: TToolButton;
ToolButton22: TToolButton;
ToolBar4: TToolBar;
ToolButton23: TToolButton;
ToolButton24: TToolButton;
ToolButton25: TToolButton;
StatusBar1: TStatusBar;
N8: TMenuItem;
MenuReopen: TMenuItem;
ApplicationEvents1: TApplicationEvents;
HelpWhatsThis1: TAction;
tbtWhatThis: TToolButton;
WhatsThisPopupmenu: TPopupMenu;
PopupWhatsThis: TMenuItem;
procedure FileNew1Execute(Sender: TObject);
procedure HelpAbout1Execute(Sender: TObject);
procedure FileOpen1Accept(Sender: TObject);
procedure FileSaveAs1Accept(Sender: TObject);
procedure FileSave1Execute(Sender: TObject);
procedure FileSave1Update(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure ApplicationEvents1Hint(Sender: TObject);
procedure HelpWhatsThis1Execute(Sender: TObject);
procedure ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean);
procedure PopupWhatsThisClick(Sender: TObject);
private
MRU:TMRUList;
INI:TIniFile;
OldCursor:TCursor;
procedure OpenFile(AFileName:String);
procedure UpdateMRUMenu;
function QueryChildByFile(AFileName:String):Integer;
procedure LoadIni;
procedure SaveIni;
function HandleMouseMsg(CtlHandle: THandle; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer): boolean;
public
procedure MRUClick(Sender: TObject);
procedure UpdateStatusBar;
end;
var
frmMain: TfrmMain;
implementation
uses About;
{$R *.dfm}
procedure TfrmMain.FileNew1Execute(Sender: TObject);
begin
TfrmChild.Create(Self);
end;
procedure TfrmMain.HelpAbout1Execute(Sender: TObject);
begin
frmAbout := TfrmAbout.Create(Self);
frmAbout.ShowModal;
frmAbout.Free;
end;
procedure TfrmMain.FileOpen1Accept(Sender: TObject);
begin
OpenFile(FileOpen1.Dialog.FileName);
end;
procedure TfrmMain.FileSaveAs1Accept(Sender: TObject);
begin
if ActiveMDIChild = nil then
Exit;
with ActiveMDIChild as TfrmChild do
begin
SaveToFile(FileSaveAs1.Dialog.FileName);
MRU.AddFile(FileSaveAs1.Dialog.FileName);
UpdateMRUMenu;
end;
end;
procedure TfrmMain.FileSave1Execute(Sender: TObject);
begin
with ActiveMDIChild as TfrmChild do
begin
if not IsNamed then
FileSaveAs1.Execute
else if IsModified then
SaveToFile(FileName);
end;
end;
procedure TfrmMain.FileSave1Update(Sender: TObject);
begin
if (ActiveMDIChild <> nil) then
with ActiveMDIChild as TfrmChild do
begin
if IsModified then
FileSave1.Enabled := True
else
FileSave1.Enabled := False;
end
else
FileSave1.Enabled := False;
end;
function TfrmMain.QueryChildByFile(AFileName: String): Integer;
var
i:Integer;
begin
for i := 0 to MDIChildCount-1 do
with MDIChildren[i] as TfrmChild do
begin
if not IsNamed then
Continue;
if FileName = AFileName then
begin
Result := i;
Exit;
end;
end;
Result := -1;
end;
procedure TfrmMain.FormCreate(Sender: TObject);
begin
MRU := TMRUList.Create(4);
INI := TIniFile.Create('RichEditor.ini');
LoadINI;
Application.HelpFile :=
ExtractFilePath(Application.ExeName) + 'RichEditor.hlp';
end;
procedure TfrmMain.FormDestroy(Sender: TObject);
begin
SaveINI;
MRU.Free;
INI.Free;
end;
procedure TfrmMain.UpdateMRUMenu;
var
MRUs: TStringList;
i,n: Integer;
aItem: TMenuItem;
begin
n := MenuReopen.Count;
for i:=n-1 downto 0 do
MenuReopen[i].Free;
MRUs := MRU.GetList;
n := MRUs.Count;
for i:= n-1 downto 0 do
begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -