📄 unotepad.pas
字号:
unit UNotePad;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, MMsystem,
Dialogs, Menus, ComCtrls, StdCtrls, ToolWin, Clipbrd, Jpeg, ImgList, ExtCtrls , IniFiles ,ShellAPI,
XPMenu, WinSkinForm, WinSkinData, ExtDlgs;
type
TNotePadForm = class(TForm)
RichEdit: TRichEdit;
StatusBar: TStatusBar;
MainMenu: TMainMenu;
MenuFile: TMenuItem;
MenuEdit: TMenuItem;
MenuEditUndo: TMenuItem;
MenuFileNew: TMenuItem;
ToolBar1: TToolBar;
ToolBar2: TToolBar;
MenuSearch: TMenuItem;
MenuInsert: TMenuItem;
MenuFont: TMenuItem;
MenuColor: TMenuItem;
MenuFuntion: TMenuItem;
MenuOption: TMenuItem;
MenuWindow: TMenuItem;
MenuHelp: TMenuItem;
MenuWindowShowToolBar: TMenuItem;
MenuWindowShowStatusBar: TMenuItem;
MenuWindowLine: TMenuItem;
MenuWindowStayOnTop: TMenuItem;
MenuWindowOpenAgain: TMenuItem;
MenuFileOpen: TMenuItem;
MenuFileSave: TMenuItem;
MenuFileSaveAs: TMenuItem;
MenuFileClose: TMenuItem;
MenuFilePrintSet: TMenuItem;
MenuFilePrint: TMenuItem;
MenuFileExit: TMenuItem;
MenuFileLine1: TMenuItem;
MenuFileLine3: TMenuItem;
MenuFileLine2: TMenuItem;
MenuFileLine4: TMenuItem;
MenuFileLine5: TMenuItem;
SystemTimer: TTimer;
ImageList: TImageList;
ToolButtonNew: TToolButton;
ToolButtonOpen: TToolButton;
ToolButtonSave: TToolButton;
ToolButton4: TToolButton;
ToolButton6: TToolButton;
ToolButtonPrint: TToolButton;
ToolButtonCut: TToolButton;
ToolButtonCopy: TToolButton;
ToolButtonPaste: TToolButton;
ToolButton11: TToolButton;
ToolButtonDelete: TToolButton;
ToolButton13: TToolButton;
ToolButtonUndo: TToolButton;
ToolButton15: TToolButton;
ToolButtonFind: TToolButton;
ToolButton17: TToolButton;
ToolButtonBold: TToolButton;
ToolButtonItalize: TToolButton;
ToolButtonUnderLine: TToolButton;
ToolButtonWordWrap: TToolButton;
ToolButtonNumber: TToolButton;
ToolButtonChar: TToolButton;
ToolButton24: TToolButton;
ToolButtonMail: TToolButton;
ToolButton26: TToolButton;
ToolButtonKeyBroad: TToolButton;
ToolButtonWave: TToolButton;
ToolButtonAutoRead: TToolButton;
ToolButtonSet: TToolButton;
ToolButton31: TToolButton;
ToolButton33: TToolButton;
ToolButtonHelp: TToolButton;
ToolButton37: TToolButton;
OpenDialog: TOpenDialog;
SaveDialog: TSaveDialog;
FontDialog: TFontDialog;
ColorDialog: TColorDialog;
PrintDialog: TPrintDialog;
PrinterSetupDialog: TPrinterSetupDialog;
FindDialog: TFindDialog;
ReplaceDialog: TReplaceDialog;
MenuEditCut: TMenuItem;
MenuEditCopy: TMenuItem;
MenuEditPaste: TMenuItem;
MenuEditDelete: TMenuItem;
MenuEditSelectAll: TMenuItem;
MenuEditSelectLine: TMenuItem;
MenuEditDeleteLine: TMenuItem;
MenuEditToCapital: TMenuItem;
MenuEditToLittle: TMenuItem;
MenuEditWrap: TMenuItem;
MenuEditLine1: TMenuItem;
MenuEditLine2: TMenuItem;
MenuEditLine3: TMenuItem;
MenuEditLine4: TMenuItem;
MenuSearchFind: TMenuItem;
MenuSearchPrior: TMenuItem;
MenuSearchNext: TMenuItem;
MenuSearchReplace: TMenuItem;
MenuSearchGoToLine: TMenuItem;
MenuSearchLine1: TMenuItem;
MenuSearchLine2: TMenuItem;
MenuSearchLine3: TMenuItem;
MenuInsertDate: TMenuItem;
MenuInsertTime: TMenuItem;
MenuInsertDay: TMenuItem;
MenuInsertChar: TMenuItem;
MenuInsertFile: TMenuItem;
MenuFontBigger: TMenuItem;
MenuFontSmaller: TMenuItem;
MenuFontDefault: TMenuItem;
MenuFontSet: TMenuItem;
MenuColorFore: TMenuItem;
MenuColorBack: TMenuItem;
MenuColorDefaultFore: TMenuItem;
MenuColorDefaultBack: TMenuItem;
MenuColorLine1: TMenuItem;
MenuFontLine1: TMenuItem;
MenuInsertLine1: TMenuItem;
MenuFuntionCovert: TMenuItem;
MenuFuntionCovertFull: TMenuItem;
MenuFuntionCovertHalf: TMenuItem;
MenuFuntionAddLineNumber: TMenuItem;
MenuFuntionDiary: TMenuItem;
MenuFuntionPasteRecord: TMenuItem;
MenuFunctionPlaysound: TMenuItem;
MenuFuntionRun: TMenuItem;
MenuHelpContent: TMenuItem;
MenuHelpIndex: TMenuItem;
MenuHelpHowToUse: TMenuItem;
MenuHelpRegister: TMenuItem;
MenuHelpAbout: TMenuItem;
MenuEditBack: TMenuItem;
ToolButton38: TToolButton;
ToolButtonLeft: TToolButton;
ToolButtonCenter: TToolButton;
ToolButtonRight: TToolButton;
MenuFileListFile1: TMenuItem;
MenuFileListFile2: TMenuItem;
MenuFileListFile3: TMenuItem;
MenuFileListFile4: TMenuItem;
MenuFileListFile5: TMenuItem;
MenuOptionKeyBorad: TMenuItem;
MenuOptionSet: TMenuItem;
MenuFileShowAddMenu: TMenuItem;
XPMenu: TXPMenu;
MenuFileOpenCDROM: TMenuItem;
MenuFileClosedCDROM: TMenuItem;
ComputerLabel: TLabel;
EditComputer: TEdit;
MenuFileAttribute: TMenuItem;
PopupMenu: TPopupMenu;
PopupMenuUndo: TMenuItem;
PopupMenuLine1: TMenuItem;
PopupMenuCut: TMenuItem;
PopupMenuCopy: TMenuItem;
PopupMenuPaste: TMenuItem;
PopupMenuSelectAll: TMenuItem;
PopupMenuLine2: TMenuItem;
PopupMenuDelete: TMenuItem;
PopupMenuLine3: TMenuItem;
PopupMenuSelectLine: TMenuItem;
PopupMenuDeleteline: TMenuItem;
PopupMenuLine5: TMenuItem;
PopupMenuToLittle: TMenuItem;
PopupMenuToCapital: TMenuItem;
PopupMenuLine4: TMenuItem;
PopupMenuInsertDate: TMenuItem;
PopupMenuDateTime: TMenuItem;
MenuFunctionAutoRead: TMenuItem;
TimerRead: TTimer;
Label2: TLabel;
FontComboBox: TComboBox;
FontEdit: TEdit;
FontUpDown: TUpDown;
Label3: TLabel;
SkinData: TSkinData;
WinSkinForm: TWinSkinForm;
MenuOptionSetSreen: TMenuItem;
MenuInsertPicture: TMenuItem;
OpenPictureDialog: TOpenPictureDialog;
MenuFuntionSkin: TMenuItem;
CoolBar: TCoolBar;
//------------------------------------------------------------------------------
procedure SystemTimerTimer(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure FormCreate(Sender: TObject);
procedure RichEditKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure MenuFileExitClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure MenuWindowShowToolBarClick(Sender: TObject);
procedure MenuWindowStayOnTopClick(Sender: TObject);
procedure MenuWindowShowStatusBarClick(Sender: TObject);
procedure MenuHelpAboutClick(Sender: TObject);
procedure MenuFileSaveClick(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure MenuFileNewClick(Sender: TObject);
procedure MenuFileOpenClick(Sender: TObject);
procedure MenuFileCloseClick(Sender: TObject);
procedure MenuFilePrintSetClick(Sender: TObject);
procedure MenuFilePrintClick(Sender: TObject);
procedure MenuEditUndoClick(Sender: TObject);
procedure MenuEditCopyClick(Sender: TObject);
procedure MenuEditPasteClick(Sender: TObject);
procedure MenuEditDeleteClick(Sender: TObject);
procedure MenuEditBackClick(Sender: TObject);
procedure MenuEditCutClick(Sender: TObject);
procedure MenuEditSelectAllClick(Sender: TObject);
procedure MenuEditSelectLineClick(Sender: TObject);
procedure MenuEditDeleteLineClick(Sender: TObject);
procedure MenuFontSetClick(Sender: TObject);
procedure MenuFontDefaultClick(Sender: TObject);
procedure MenuEditWrapClick(Sender: TObject);
procedure MenuFileSaveAsClick(Sender: TObject);
procedure MenuInsertDayClick(Sender: TObject);
procedure MenuInsertDateClick(Sender: TObject);
procedure MenuInsertTimeClick(Sender: TObject);
procedure MenuInsertCharClick(Sender: TObject);
procedure MenuInsertFileClick(Sender: TObject);
procedure MenuSearchFindClick(Sender: TObject);
procedure MenuSearchPriorClick(Sender: TObject);
procedure MenuSearchNextClick(Sender: TObject);
procedure MenuSearchReplaceClick(Sender: TObject);
procedure MenuSearchGoToLineClick(Sender: TObject);
procedure MenuFontBiggerClick(Sender: TObject);
procedure MenuFontSmallerClick(Sender: TObject);
procedure MenuColorForeClick(Sender: TObject);
procedure MenuColorBackClick(Sender: TObject);
procedure MenuColorDefaultForeClick(Sender: TObject);
procedure MenuColorDefaultBackClick(Sender: TObject);
procedure MenuFuntionRunClick(Sender: TObject);
procedure MenuFuntionDiaryClick(Sender: TObject);
//------------------------------------------------------------------------------
procedure OpenFile(Sender: TObject; FName: String); //打开文件
procedure SaveFile(Sender: TObject; Style: Integer);//保存文件
procedure FindDialogFind(Sender: TObject); //查找下一个对话框
procedure ChangeFontSize(Sender: TObject; const Style: Integer);//改变字体的大小
procedure ReadIni(Sender: TObject); //从Ini文件中读取数据
procedure WriteIni(Sender: TObject);//向INI文件中写入数据
procedure MenuFileShowAddMenuClick(Sender: TObject);//显示添加的文件菜半单项
procedure PerformRead(Sender: TObject);//自动阅读文件内容
//------------------------------------------------------------------------------
function CheckFileSave(Sender: TObject):Integer; //检查文件保存状态
function IntToChi(N:word):String;//日期、时间转换
function PerformFind(Sender: TObject; FindString: String; SearchType: TSearchTypes):Boolean;
function CurrText: TTextAttributes;
procedure MenuWindowOpenAgainClick(Sender: TObject);
procedure FormResize(Sender: TObject);
procedure MenuOptionClick(Sender: TObject);
procedure MenuOptionSetClick(Sender: TObject);
procedure MenuFuntionAddLineNumberClick(Sender: TObject);
procedure ToolButtonBoldClick(Sender: TObject);
procedure ToolButtonItalizeClick(Sender: TObject);
procedure ToolButtonUnderLineClick(Sender: TObject);
procedure ToolButtonLeftClick(Sender: TObject);
procedure ToolButtonCenterClick(Sender: TObject);
procedure ToolButtonRightClick(Sender: TObject);
procedure EditComputerEnter(Sender: TObject);
procedure EditComputerKeyPress(Sender: TObject; var Key: Char);
procedure MenuOptionKeyBoradClick(Sender: TObject);
procedure MenuHelpHowToUseClick(Sender: TObject);
procedure MenuFunctionPlaysoundClick(Sender: TObject);
procedure RichEditSelectionChange(Sender: TObject);
procedure RichEditMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure RichEditKeyPress(Sender: TObject; var Key: Char);
procedure MenuFileOpenCDROMClick(Sender: TObject);
procedure MenuFileClosedCDROMClick(Sender: TObject);
procedure MenuHelpContentClick(Sender: TObject);
procedure TimerReadTimer(Sender: TObject);
procedure MenuFunctionAutoReadClick(Sender: TObject);
procedure MenuEditToCapitalClick(Sender: TObject);
procedure MenuEditToLittleClick(Sender: TObject);
procedure FontComboBoxChange(Sender: TObject);
procedure ToolButtonMailClick(Sender: TObject);
procedure MenuOptionSetSreenClick(Sender: TObject);
procedure MenuFileAttributeClick(Sender: TObject);
procedure MenuInsertPictureClick(Sender: TObject);
procedure MenuFuntionSkinClick(Sender: TObject);
//------------------------------------------------------------------------------
private
{ Private declarations }
public
procedure UpdateKeyStatus; //更新键盘事件
procedure UpdatePos; //鼠标点位置
procedure UpdateCaption(Sender: TObject); //更新显示文字
procedure UpdateFileMenu(Style: Integer); //更新文件菜单
end;
const
NewLine=#13#10;
DefaultFilter='文本文件(*.txt)|*.txt|超文本文件(*.htm,*.html)|*.htm;*.html|RTF文件(*.rtf)|*.rtf|Gb码文件(*.gb)|*.gb|批处理文件(*.bat)|*.bat|配置文件(*.ini)|*.ini|C源程序(*.h,*.c,*.cpp)|*.h;*.c;*.cpp|其它源程序(*.asm,*.bas……)|*.asm;;*.bas;*.prg;*.jav|所有文件(*.*)|*.*';
MediaFilter ='所有支持文件(*.wav,*.mid,*.mp3)|*.wav;*.mid;*.mp3|声音文件(*.wav)|*.wav|音乐文件(*.mid)|*.mid|MP3歌曲文件(*.mp3)|*.mp3';
ExecFilter ='可执行程序(*.exe,*.com)|*.exe;*.com|批处理程序(*.bat)|*.bat|所有文件(*.*)|*.*';
SkinFilter ='皮肤文件(*.skn)|*.skn';
Number:array[0..10] of string=('零','一','二','三','四','五','六','七','八','九','十');
//------------------------------------------------------------------------------
var
NotePadForm: TNotePadForm;
FileName: String; //当前编辑文件名
WinDir: String; //Windows所在目录
Line: Integer; //卷屏行号
InsertMode:Boolean=True; //插入还是覆盖模式
InsertString:TStringlist; //插入特殊字符
//------------------------------------------------------------------------------
SaveSize,SavePos,AutoMaxSize:Boolean; //[Window]+Left+Top+Width+Height
FileList:Array[1..5] of String; //[File]
ShowFullPath,ShowTool1,ShowTool2,ShowStatus,ShowAddMenu,ShowIcon:Boolean; //[View]
AutoWrap,AutoAlign,InsertLine,FreshSelection:Boolean; //[RichEdit]
TabWidth,ReadSpeed:Integer;
RichEditFont:TFont; //[Font]
DefForeColor,DefBackColor,ForeColor,BackColor:Integer; //[Color]
DateFormat,TimeFormat,DayFormat:Integer; //[DateTime]
MacroNumber:Integer; //[Macro]
MacroString:array[1..10] of string;
MacroShortCut:array[1..10] of TShortCut;
RegisterCode,UserName,UserCompany,UserAddress:string; //[User]
CreatBak,AddToFold,LikeMe:Boolean; //[Other]
//------------------------------------------------------------------------------
implementation
uses UnitAbout, UnitInsertChar, UnitOption, UAttribute;
{$R *.dfm}
procedure TNotePadForm.ReadIni(Sender: TObject);
const
IniFileName='NotePad.ini'; //Ini文件名=WinPath+'NotePad.ini'
var
IniFile:TIniFile;
i :integer;
begin
IniFile:=TIniFile.Create(ExtractFilePath(Application.ExeName)+IniFileName);
//IniFile:=TIniFile.Create(IniFileName);//从系统Windows文件夹下读NotePad.ini
with IniFile do
begin
//[Window]
SaveSize:=ReadBool('Window','SaveSize',True);
if SaveSize then
begin
Width :=ReadInteger('Window','Width', Width);
Height:=ReadInteger('Window','Height', Height);
end;
SavePos:=ReadBool('Window','SavePos',True);
if SavePos then
begin
Top :=ReadInteger('Window','Top', (Screen.Height-Height) div 2);
Left:=ReadInteger('Window','Left',(Screen.Width-Width) div 2);
end;
AutoMaxSize:=ReadBool('Window','AutoMaxSize',False);
if AutoMaxSize then
WindowState:=wsMaximized;
//[File]
for i:=1 to 6 do
FileList[i]:=ReadString('File','File'+IntToStr(i),'');
UpdateFileMenu(0);
//[View]
ShowFullPath:= ReadBool('View', 'ShowFullPath', False);
Toolbar1.Visible:=ReadBool('View', 'ShowTool1', True);
Toolbar2.Visible:=ReadBool('View', 'ShowTool2', True);
Statusbar.Visible:=ReadBool('View', 'ShowStatus', True);
MenuWindowShowToolbar.Checked:= Toolbar1.Visible;
MenuWindowShowStatusbar.Checked:= Statusbar.Visible;
ShowAddMenu:=ReadBool('View', 'ShowAddMenu', True);
if ShowAddMenu=False then
MenuFileShowAddMenuClick(Sender);
ShowIcon :=ReadBool('View', 'ShowIcon', True);
if ShowIcon=False then
MainMenu.Images:=NIL;
//[RichEdit]
AutoWrap :=ReadBool('RichEdit', 'AutoWrap', True);
AutoAlign :=ReadBool('RichEdit', 'AutoAlign', False);
InsertLine:=ReadBool('RichEdit', 'InsertLine', False);
FreshSelection:=ReadBool('RichEdit', 'FreshSelection', False);
//Editor.
TabWidth :=ReadInteger('RichEdit','TabWidth', 8);
ReadSpeed :=ReadInteger('RichEdit','ReadSpeed', 2000);
//[Font]
with RichEditFont do
begin
RichEditFont:=TFont.Create;
Name :=ReadString ('Font','Name', 'System');
CharSet :=ReadInteger('Font','Country',GB2312_CHARSET);
Size :=ReadInteger('Font','Size', 12);
Height :=ReadInteger('Font','Height', -16);
end;
//[Color]
RichEdit.Font.Color:=ReadInteger('Color','ForeColor',clWindowText);
RichEdit.Color:=ReadInteger('Color','BackColor',clWindow);
DefForeColor:=ReadInteger('Color','DefForeColor',clWindowText);
DefBackColor:=ReadInteger('Color','DefBackColor',clWindow);
//[DateTime]
DateFormat:=ReadInteger('DateTime','DateMode',0);
TimeFormat:=ReadInteger('DateTime','TimeMode',0);
DayFormat :=ReadInteger('DateTime','DayMode', 0);
//[User]
UserName :=ReadString('User','UserName', '');
UserCompany:=ReadString('User','UserCompany','');
UserAddress:=ReadString('User','UserAddress','');
//[Macro]
MacroNumber:=ReadInteger('Macro','Number',0);
for i:=1 to MacroNumber do
begin
MacroString[i]:=ReadString('Macro','Macro'+IntToStr(i),'');
MacroShortCut[i]:=TextToShortCut(ReadString('Macro','ShortKey'+IntToStr(i),''));
end;
//[Other]
CreatBak :=ReadBool('Other','CreatBak', False);
AddToFold:=ReadBool('Other','AddToFold',True);
LikeMe :=ReadBool('Other','LinkMe', False);
end;
end;
procedure TNotePadForm.WriteIni(Sender: TObject);
const
IniFileName='NotePad.ini';
var
IniFile :TIniFile;
I :Integer;
begin
IniFile:=TIniFile.Create(ExtractFilePath(Application.ExeName)+IniFileName);
//IniFile:=TIniFile.Create(IniFileName);//向系统Windows文件夹下写NotePad.ini
with IniFile do
begin
//[Window]
WriteBool('Window','SaveSize',SaveSize);
if (SaveSize) and (WindowState=wsNormal) then
begin
WriteInteger('Window','Width', Width);
WriteInteger('Window','Height',Height);
end;
WriteBool('Window','SavePos',SavePos);
if SavePos then
begin
WriteInteger('Window','Left', Left);
WriteInteger('Window','Top', Top);
end;
WriteBool('Window','AutoMaxSize',AutoMaxSize);
//WriteInteger('Window','State', ord(WindowState));
//[File]
for i:=1 to 6 do
WriteString('File','File'+IntToStr(i),FileList[i]);
//[View]
WriteBool('View','ShowFullPath',ShowFullPath);
WriteBool('View','ShowTool1', Toolbar1.Visible);
WriteBool('View','ShowTool2', Toolbar2.Visible);
WriteBool('View','ShowStatus', Statusbar.Visible);
WriteBool('View','ShowAddMenu', ShowAddMenu);
WriteBool('View','ShowIcon', ShowIcon);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -