⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unotepad.pas

📁 类似于写字板,但此功能强大,可以扩展到许多地方
💻 PAS
📖 第 1 页 / 共 4 页
字号:
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 + -