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

📄 unit_main.pas

📁 电子阅读器,适合处学者使用和学习.有意见联系我 .
💻 PAS
📖 第 1 页 / 共 3 页
字号:
Unit Unit_Main;

Interface

Uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, CommCtrl, ImgList, ExtCtrls, ToolWin,
  Buttons, Menus, VCLUnZip, VCLZip, clipbrd, extdlgs, jpeg, strutils, IniFiles, RichEdit2Ctrl,
  Colors, TreeCtrls, StdActns, ActnList, shellapi;

Type
  TF_Main=Class(TForm)
    ImageList1: TImageList;
    CoolBar1: TCoolBar;
    Panel1: TPanel;
    Panel3: TPanel;
    Splitter1: TSplitter;
    B_Add: TBitBtn;
    B_AddChild: TBitBtn;
    B_Rename: TBitBtn;
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    StatusBar1: TStatusBar;
    Panel2: TPanel;
    T_Auto: TTimer;
    N3: TMenuItem;
    N6: TMenuItem;
    H1: TMenuItem;
    B_Delete: TBitBtn;
    T_MainTextEn: TTimer;
    ToolBar1: TToolBar;
    VCLZip1: TVCLZip;
    VCLUnZip1: TVCLUnZip;
    N8: TMenuItem;
    N5: TMenuItem;
    N9: TMenuItem;
    N10: TMenuItem;
    N11: TMenuItem;
    N12: TMenuItem;
    N13: TMenuItem;
    N14: TMenuItem;
    H2: TMenuItem;
    N15: TMenuItem;
    A1: TMenuItem;
    T_Undo: TMenuItem;
    N16: TMenuItem;
    T_Cut: TMenuItem;
    T_Copy: TMenuItem;
    T_Paste: TMenuItem;
    T_Del: TMenuItem;
    D1: TMenuItem;
    K1: TMenuItem;
    M1: TMenuItem;
    OpenDialog: TOpenDialog;
    SaveDialog: TSaveDialog;
    Page: TPageControl;
    TabSheet1: TTabSheet;
    TreeView: TTreeView;
    Image_Menu: TImageList;
    ImageList4: TImageList;
    N7: TMenuItem;
    N18: TMenuItem;
    T_s: TTimer;
    MainText: TRichEdit2;
    N4: TMenuItem;
    N17: TMenuItem;
    P1: TMenuItem;
    N19: TMenuItem;
    F1: TMenuItem;
    P2: TMenuItem;
    HorRuler1: THorRuler;
    PopupColors: TPopupPanel;
    ColorBoxEx1: TColorBoxEx;
    Image_Toolbar: TImageList;
    Com_Front: TComboBox;
    Com_Size: TComboBox;
    B_Bcolors: TBitBtn;
    B_Colors: TBitBtn;
    ToolButton1: TToolButton;
    ToolButton2: TToolButton;
    TB: TToolButton;
    TI: TToolButton;
    TU: TToolButton;
    ToolButton6: TToolButton;
    ToolButton7: TToolButton;
    ToolButton8: TToolButton;
    ToolButton9: TToolButton;
    ToolButton10: TToolButton;
    TabSheet2: TTabSheet;
    N20: TMenuItem;
    N21: TMenuItem;
    N22: TMenuItem;
    N23: TMenuItem;
    N24: TMenuItem;
    N25: TMenuItem;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    N26: TMenuItem;

    Procedure FormCreate(Sender: TObject);
    Procedure TreeViewClick(Sender: TObject);
    Procedure B_AddClick(Sender: TObject);
    Procedure B_AddChildClick(Sender: TObject);
    Procedure B_RenameClick(Sender: TObject);
    Procedure T_AutoTimer(Sender: TObject);
    Procedure B_DeleteClick(Sender: TObject);
    Procedure TreeViewEdited(Sender: TObject; Node: TTreeNode;
      Var S: String);
    Procedure TreeViewChanging(Sender: TObject; Node: TTreeNode;
      Var AllowChange: Boolean);
    Procedure TreeViewChange(Sender: TObject; Node: TTreeNode);
    Procedure FormClose(Sender: TObject; Var Action: TCloseAction);
    Procedure Com_FrontChange(Sender: TObject);
    Procedure T_MainTextEnTimer(Sender: TObject);
    Procedure Com_SizeChange(Sender: TObject);
    Procedure MainText3MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    Procedure I1Click(Sender: TObject);
    Procedure N9Click(Sender: TObject);
    Procedure A1Click(Sender: TObject);
    Procedure K1Click(Sender: TObject);
    Procedure M1Click(Sender: TObject);
    Procedure T_PasteClick(Sender: TObject);
    Procedure N5Click(Sender: TObject);
    Procedure N3Click(Sender: TObject);
    Procedure T_DelClick(Sender: TObject);
    Procedure D1Click(Sender: TObject);
    Procedure N2Click(Sender: TObject);
    Procedure N6Click(Sender: TObject);
    Procedure T_UndoClick(Sender: TObject);
    Procedure T_sTimer(Sender: TObject);
    Procedure T_CopyClick(Sender: TObject);
    Procedure T_CutClick(Sender: TObject);
    Procedure MainTextMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    Procedure N17Click(Sender: TObject);
    Procedure P1Click(Sender: TObject);
    Procedure B_ColorsClick(Sender: TObject);
    Procedure ColorBoxEx1Change(Sender: TObject);
    Procedure ColorBoxEx1Click(Sender: TObject);
    Procedure MainTextSelectionChange(Sender: TObject);
    Procedure B_BcolorsClick(Sender: TObject);
    Procedure TBClick(Sender: TObject);
    Procedure TIClick(Sender: TObject);
    Procedure TUClick(Sender: TObject);
    Procedure BitBtn1Click(Sender: TObject);
    Procedure BitBtn2Click(Sender: TObject);
    Procedure TreeViewMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    Procedure TreeViewDragOver(Sender, Source: TObject; X, Y: Integer;
      State: TDragState; Var Accept: Boolean);
    Procedure TreeViewDragDrop(Sender, Source: TObject; X, Y: Integer);
    Procedure actUnderlineTealExecute(Sender: TObject);
    Procedure N19Click(Sender: TObject);
    Procedure N26Click(Sender: TObject);
    Procedure N10Click(Sender: TObject);
    Procedure N12Click(Sender: TObject);
    Procedure N13Click(Sender: TObject);
    Procedure FormCloseQuery(Sender: TObject; Var CanClose: Boolean);
    Procedure TreeViewDeletion(Sender: TObject; Node: TTreeNode);
    Procedure TreeViewAddition(Sender: TObject; Node: TTreeNode);
    Procedure N20Click(Sender: TObject);
    Procedure N21Click(Sender: TObject);
    Procedure N22Click(Sender: TObject);

  Private
    { Private declarations }
  Public
    { Public declarations }
  End;
Const
  Ver='1.15';
  VMain='1.0';
  CFlag='**1.0WhereAreYou..MyRight?**';
  Error_FileNotExist='打开文件错误,文件可能不存在';
  Error_FileIsUsing='文件正在使用中,无法进行操作';
  Error_Stream='写入流错误,无法建立标志';
  Error_Compress='写入文件标识失败!压缩错误';
  Error_Pic='不能读取图片,可能是该图片已经损坏';
  Error_Ver='文件标志错误,可能是本软件不能兼容该图书文件,尝试升级软件';
  Error_Other='未知错误';
Type
  InFor=Record
    SFlag: String[Length(CFlag)]; //标志

    SWriter: String[20]; //书籍作者

    SMaker: String[20]; //电子书作者

    SInfor: String[255]; //简介

    SRemark: String[100]; //备注

    SLabel: String[20]; //分类

    SPass: String[20]; //密码

    BReadOnly: Boolean; //只读(即是否是源代码)
  End;
Var
  F_Main: TF_Main;
  BUpDown, BChange, BFontC, FMoveAsChild, BitB, BitI, BitU: Boolean; //BFontC:当前是否将改变字体颜色
  STitle, Smulu, SFileName: String;
Implementation

{$R *.dfm}
Uses Unit_Code, Unit_Made, Unit_About;
Procedure TF_Main.FormCreate(Sender: TObject);
Begin
  BitB:=False;
  BitI:=False;
  BitU:=False;

  TB.Down:=BitB;
  TI.Down:=BitI;
  TU.Down:=BitU;
  //三个按钮的Down值
  FMoveAsChild:=False;
  BChange:=False;

  Smulu:=ExtractFilePath(Application.ExeName);

  Com_Front.Items:=screen.Fonts;
  Com_Front.Text:='宋体';

  { If FileExists(Smulu+'Temp.ebm') Then
     DeleteFile(Smulu+'Temp.ebm'); }
  If DirectoryExists(Smulu+'Temp') Then
    DeletePath(Smulu+'Temp');
  MkDir(Smulu+'Temp');
  MkDir(Smulu+'Temp\File');
  //新建
  N2.Click;

  SFileName:=''; //当前文件名
  STitle:='无标题文档';
  TreeView.Selected:=TreeView.Items.Item[0];
  F_Main.Caption:='电子阅览者 [Elcreader]-'+STitle+' : '+TreeView.Selected.Text;

End;

Procedure TF_Main.TreeViewClick(Sender: TObject);
Begin
  If TreeView.Selected<>Nil Then
  Begin
    F_Main.Caption:='电子阅览者 [Elcreader]-'+STitle+' : '+TreeView.Selected.Text;
  End;
End;

Procedure TF_Main.B_AddClick(Sender: TObject);
Var
  aNode: TTreeNode;
  STitle: String;
Begin
  Page.ActivePageIndex:=0;
  STitle:=GetNTitle();
  aNode:=TreeView.Items.AddObjectFirst(TreeView.Selected, STitle,
    pointer(-1));
  aNode.ImageIndex:=2;
  TreeView.Selected:=aNode;
  MainText.Enabled:=True;
  MainText.SetFocus;
  aNode.EditText;
End;

Procedure TF_Main.B_AddChildClick(Sender: TObject);
Var
  aNode: TTreeNode;
  STitle: String;
Begin
  Page.ActivePageIndex:=0;
  If TreeView.Selected=Nil Then Exit;
  STitle:=GetNTitle();
  aNode:=TreeView.Items.AddChildObjectFirst(TreeView.Selected, STitle,
    pointer(-1));
  aNode.ImageIndex:=2;
  aNode.Parent.ImageIndex:=1;
  TreeView.Selected:=aNode;
  aNode.EditText;
End;

Procedure TF_Main.B_RenameClick(Sender: TObject);
Begin
  Page.ActivePageIndex:=0;
  If TreeView.Selected<>Nil Then
    TreeView.Selected.EditText;
End;

Procedure TF_Main.T_AutoTimer(Sender: TObject);
Var
  ScrollMessage: TWMVScroll;
Begin
  ScrollMessage.Msg:=WM_VScroll;
  If BUpDown=False Then
    ScrollMessage.ScrollCode:=sb_Linedown
  Else
    ScrollMessage.ScrollCode:=sb_Lineup;
  ScrollMessage.Pos:=0;
  MainText.Dispatch(ScrollMessage);
End;

Procedure TF_Main.B_DeleteClick(Sender: TObject);
Var
  STtemp: String;
Begin
  STtemp:='是否删除文章:"'+TreeView.Selected.Text+'"?';
  Page.ActivePageIndex:=0;
  If TreeView.Selected<>Nil Then
    If Application.MessageBox(pchar(STtemp), '询问', MB_YESNO Or MB_ICONQUESTION)=IDyes Then
      If TreeView.Selected.HasChildren=True Then
      Begin
        If Application.MessageBox('该文章中包含子文章,删除该文章会连同子文章一起删除,是否继续?',
          '询问', MB_YESNO Or MB_ICONQUESTION)=IDyes Then
          TreeView.Selected.Delete;
      End
      Else
        TreeView.Selected.Delete;
End;

Procedure TF_Main.TreeViewEdited(Sender: TObject; Node: TTreeNode;
  Var S: String);
Var
  i: Integer;
Begin
  For i:=0 To TreeView.Items.Count-1 Do
    If TreeView.Items[i].Text=S Then
    Begin
      MessageBox(Handle, pchar('对不起,你修改的标题已经存在,请更换其它标题'), pchar('标题重复'),
        MB_ICONINFORMATION Or MB_OK);
      S:=Node.Text;
      Exit;
    End;
  //BChange:=True;
  RenameFile(Smulu+'Temp\'+Node.Text+'.bop', Smulu+'Temp\'+S+'.bop');
End;

Procedure TF_Main.TreeViewChanging(Sender: TObject; Node: TTreeNode;
  Var AllowChange: Boolean);
Begin
  If TreeView.Selected<>Nil Then
  Begin
    MainText.Enabled:=True;
    BChange:=True;
    MainText.Lines.SaveToFile(Smulu+'Temp\File\'+TreeView.Selected.Text+'.bop'); //保存文本
  End;
  // If Node.Text=TreeView.Selected.Text Then Exit;
  If FileExists(Smulu+'Temp\File\'+Node.Text+'.bop') Then
    MainText.Lines.LoadFromFile(Smulu+'Temp\File\'+Node.Text+'.bop')
  Else
    MainText.Clear;
End;

Procedure TF_Main.TreeViewChange(Sender: TObject; Node: TTreeNode);
Begin
  Try
    TreeView.SaveToFile(Smulu+'Temp\File\Treeview.rtp'); //保存目录树
  Except
    {MessageBox(Handle, pchar(Error_FileIsUsing), pchar('信息'),
      MB_ICONINFORMATION Or MB_OK);}
    Addlog('Error_FileIsUsing');
  End;
End;

Procedure TF_Main.FormClose(Sender: TObject; Var Action: TCloseAction);
Begin
  If DirectoryExists(Smulu+'Temp') Then
    DeletePath(Smulu+'Temp')
End;

Procedure TF_Main.Com_FrontChange(Sender: TObject);
Begin
  If MainText.SelLength>0 Then
    MainText.SelAttributes.Name:=Com_Front.Text;
End;

Procedure TF_Main.T_MainTextEnTimer(Sender: TObject);
Var
  Tttb: Boolean;
Begin
  Tttb:=TreeView.Selected<>Nil;
  B_Rename.Enabled:=Tttb;
  B_Delete.Enabled:=Tttb;
  B_AddChild.Enabled:=Tttb;
  TB.Enabled:=MainText.Enabled;
  TI.Enabled:=MainText.Enabled;
  TU.Enabled:=MainText.Enabled;
  HorRuler1.Enabled:=MainText.Enabled;
End;

Procedure TF_Main.Com_SizeChange(Sender: TObject);
Begin
  If MainText.SelLength>0 Then
  Try

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -