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

📄 unit_main.pas

📁 电子阅读器,适合处学者使用和学习.有意见联系我 .
💻 PAS
📖 第 1 页 / 共 3 页
字号:
    MainText.SelAttributes.Size:=StrToInt(Com_Size.Text);
  Except
    MainText.SelAttributes.Size:=10;
  End;
End;
Procedure TF_Main.MainText3MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
Begin
  If MainText.SelLength>0 Then
  Begin
    Com_Front.Text:=MainText.SelAttributes.Name;
    Com_Size.Text:=IntToStr(MainText.SelAttributes.Size);

  End;
End;

Procedure TF_Main.I1Click(Sender: TObject);
Begin
  // F_Made.
End;

Procedure TF_Main.N9Click(Sender: TObject); //打开源代码
Var
  zipCount, iFile: Integer;
  OpenFileName, Str1: String;
  BkInfor: InFor;
Begin

  If BChange=True Then
    If MessageBox(Handle, pchar('图书文件已经改变,是否保存?'), pchar('电子阅览者'),
      MB_ICONQUESTION Or MB_YESNO)=IDyes Then
      N5.Click;
  //询问是否要保存
  TreeView.Items.Clear;

  If OpenDialog.Execute Then
  Begin
    OpenFileName:=OpenDialog.FileName;
    iFile:=FileOpen(OpenFileName, fmOpenRead);
    If iFile=0 Then
    Begin
      MessageBox(Handle, pchar(Error_FileNotExist), pchar('信息'),
        MB_ICONINFORMATION Or MB_OK);
      Addlog('Error_FileNotExist For iFile=0');
      Exit;
    End;
    SFileName:=OpenFileName; //设置当前文件名
    Str1:=ExtractFileExt(OpenFileName); //获取扩展名.txt
    STitle:=ExtractFileName(OpenFileName); //获取文件名test01.txt
    setLength(STitle, Length(STitle)-Length(Str1)); //将扩展名部分抛弃

    If DirectoryExists(Smulu+'Temp') Then //删除临时目录
      DeletePath(Smulu+'Temp');
    MkDir(Smulu+'Temp');
    MkDir(Smulu+'Temp\File');

    FileSeek(iFile, -SizeOf(BkInfor), soFromEnd); //读取信息
    FileRead(iFile, BkInfor, SizeOf(BkInfor));
    FileClose(iFile);

    If BkInfor.SFlag<>CFlag Then
    Begin
      MessageBox(Handle, pchar('无法打开该文件!可能是程序版本不对或者该文件已经损坏,请尝试升级本软件以解决问题'), pchar('信息'),
        MB_OK);
      Exit;
    End;
    If BkInfor.BReadOnly<>False Then
    Begin
      If MessageBox(Handle, pchar('无法打开该文件!是否尝试修复它?'), pchar('信息'),
        MB_ICONWARNING Or MB_YESNO)=IDyes Then
        ChangeFileExt(OpenFileName, '.ebf');
      Beep;
      Exit;
    End;
    //!!End;
    Try
      With VCLUnZip1 Do
      Begin//读取图书文件
        ZipName:=OpenFileName;
        DestDir:=Smulu+'Temp\File';
        OverwriteMode:=Always;
        ReadZip;
        FilesList.Add('*.*');
      End;
      If VCLUnZip1.UnZip>0 Then
      Begin
        Try

          TreeView.LoadFromFile(Smulu+'Temp\File\treeview.rtp')//得到目录文件
        Except
          MessageBox(Handle, pchar(Error_Ver), pchar('信息'),
            MB_ICONINFORMATION Or MB_OK);
          Addlog('Error_Ver,Treeview.rtp Cannot Find'); //版本错误
        End;
      End
      Else
      Begin
        MessageBox(Handle, pchar(Error_Ver), pchar('信息'),
          MB_ICONINFORMATION Or MB_OK);
        Addlog('Error_Ver,Unzip is Nil'); //版本错误
      End;
    Except
    End;
    TreeView.Selected:=TreeView.Items.Item[0];
    F_Main.Caption:='电子阅览者 [Elcreader]-'+STitle+' : '+TreeView.Selected.Text;
    BChange:=False;
  End;
End;

Procedure TF_Main.A1Click(Sender: TObject);
Begin
  F_About.ShowModal;
End;

Procedure TF_Main.K1Click(Sender: TObject);
Var
  i: Integer;
Begin
  If MessageBox(Handle, pchar('是否要删除空行?'), pchar('询问'),
    MB_ICONQUESTION Or MB_YESNO Or MB_DEFBUTTON1)=IDyes Then
  Begin
    For i:=MainText.Lines.Count-1 Downto 0 Do
      If Trim(MainText.Lines.Strings[i])='' Then
        MainText.Lines.Delete(i);
  End;
End;

Procedure TF_Main.M1Click(Sender: TObject);
Var
  i: Integer;
Begin
  MainText.WordWrap:=False;
  For i:=MainText.Lines.Count-1 Downto 0 Do
  Begin
    TrimLeft(MainText.Lines.Strings[i]);
    MainText.Lines.Strings[i]:='    '+MainText.Lines.Strings[i];
    // If Trim(MainText.Lines.Strings[i])='' Then
      // MainText.Lines.Delete(i);
  End;
  MainText.WordWrap:=True;

End;

Procedure TF_Main.T_PasteClick(Sender: TObject);
Begin
  If MainText.Enabled=True Then
    MainText.PasteFromClipboard;
End;

Procedure TF_Main.N5Click(Sender: TObject);
Var
  iTargetFile: Integer;
  ToFileName: String;
  BkInfor: InFor;
Begin
  If SFileName='' Then
  Begin
    N10.Click; //另存为
    Exit;
  End;
  If TreeView.Items.Count=0 Then
  Begin
    MessageBox(Handle, pchar('图书文件为空!'), pchar('信息'),
      MB_ICONINFORMATION Or MB_OK);
    Exit;
  End;

  ToFileName:=SFileName;

  If TreeView.Selected<>Nil Then
    MainText.Lines.SaveToFile(Smulu+'Temp\File\'+TreeView.Selected.Text+'.bop'); //保存文本

  VCLZip1.IncludeHiddenFiles:=True;
  VCLZip1.IncludeSysFiles:=False;
  VCLZip1.IncludeReadOnlyFiles:=True;
  VCLZip1.IncludeArchiveFiles:=True;

  VCLZip1.StorePaths:=False;

  VCLZip1.RootDir:=Smulu+'Temp\File';
  VCLZip1.ZipName:=ToFileName;
  VCLZip1.FilesList.Add('*.*');

  VCLZip1.Recurse:=True;

  BkInfor.SWriter:='';
  BkInfor.SMaker:='';
  BkInfor.SInfor:='';
  BkInfor.SRemark:='';
  BkInfor.SLabel:='';
  BkInfor.SPass:='';
  BkInfor.BReadOnly:=False;
  BkInfor.SFlag:=CFlag;

  If VCLZip1.Zip>0 Then
  Begin
    If FileExists(ToFileName)=False Then
    Begin
      MessageBox(Handle, pchar(Error_Compress), pchar('信息'),
        MB_ICONINFORMATION Or MB_OK);
      Addlog('Error_Compress');
      Exit;
    End;

    iTargetFile:=FileOpen(ToFileName, fmOpenReadWrite);
    Try
      Try
        FileSeek(iTargetFile, 0, soFromEnd);
        FileWrite(iTargetFile, BkInfor, SizeOf(BkInfor));
      Except
        MessageBox(Handle, pchar(Error_Stream), pchar('信息'),
          MB_ICONINFORMATION Or MB_OK);
        Addlog('Error_Stream');
      End
    Finally
      FileClose(iTargetFile)
    End;
    MessageBox(Handle, pchar('保存成功!'), pchar('成功'),
      MB_ICONINFORMATION Or MB_OK);
    BChange:=False;
  End
  Else
  Begin
    MessageBox(Handle, pchar('保存失败!'), pchar('失败'),
      MB_ICONINFORMATION Or MB_OK);
    Addlog('Cannot make E-Book');
  End;
End;

Procedure TF_Main.N3Click(Sender: TObject);
Begin
  T_Undo.Enabled:=MainText.Perform(EM_CANUNDO, 0, 0)<>0;
  If MainText.SelLength<=0 Then
  Begin
    T_Cut.Enabled:=False;
    T_Copy.Enabled:=False;
    T_Del.Enabled:=False;
  End
  Else
  Begin
    T_Cut.Enabled:=True;
    T_Copy.Enabled:=True;
    T_Del.Enabled:=True;
  End;
End;

Procedure TF_Main.T_DelClick(Sender: TObject);
Begin
  If MainText.SelLength>0 Then
    MainText.SelText:='';
End;

Procedure TF_Main.D1Click(Sender: TObject);
Begin
  MainText.SelText:=DateTimeToStr(Now);
End;

Procedure TF_Main.N2Click(Sender: TObject);
Var
  TempNn: TTreeNode;
Begin
  //询问用户是否保存
  If BChange=True Then
    If MessageBox(Handle, pchar('图书文件已经改变,是否保存?'), pchar('电子阅览者'),
      MB_ICONQUESTION Or MB_YESNO)=IDyes Then
      N5.Click;

  TreeView.Items.Clear;
  TempNn:=TreeView.Items.Add(Nil, '新标题1');
  TempNn.EditText;
  MainText.Enabled:=True;
  BChange:=False;
End;

Procedure TF_Main.N6Click(Sender: TObject);
Begin
  D1.Enabled:=MainText.Enabled;
  K1.Enabled:=MainText.Enabled;
  M1.Enabled:=MainText.Enabled;
End;

Procedure TF_Main.T_UndoClick(Sender: TObject);
Begin
  If MainText.Enabled=True Then
    MainText.Perform(EM_UNDO, 0, 0);
End;

Procedure TF_Main.T_sTimer(Sender: TObject);
Begin
  StatusBar1.Panels[1].Text:='行:'+IntToStr(1+SendMessage(MainText.Handle, em_LineFromChar, MainText.SelStart, 0))
    +'列:'+IntToStr(1+MainText.SelStart-MainText.Perform(EM_LINEINDEX, MainText.Perform(em_LineFromChar, MainText.SelStart, 0), 0));
  StatusBar1.Panels[2].Text:=TimeToStr(Now);

  If TreeView.Selected<>Nil Then
  Begin
    StatusBar1.Panels[0].Text:='正在编辑:'+TreeView.Selected.Text;
    If MainText.Enabled=False Then
      MainText.Enabled:=True;
  End
  Else
  Begin
    StatusBar1.Panels[0].Text:='选择一篇文章以编辑';
    StatusBar1.Panels[1].Text:='空闲';
  End;
End;

Procedure TF_Main.T_CopyClick(Sender: TObject);
Begin
  If (MainText.Enabled=True)And(MainText.SelLength>0) Then
    MainText.CopyToClipboard;
End;

Procedure TF_Main.T_CutClick(Sender: TObject);
Begin
  If (MainText.Enabled=True)And(MainText.SelLength>0) Then
    MainText.CutToClipboard;
End;

Procedure TF_Main.MainTextMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
Begin
  { If MainText.SelLength>0 Then
   Begin
     Com_Front.Text:=MainText.SelAttributes.Name;
     Com_Size.Text:=IntToStr(MainText.SelAttributes.Size);

   End;   }
End;

Procedure TF_Main.N17Click(Sender: TObject);
Begin
  If MainText.Enabled=False Then Exit;
  MainText.SetFocus;
  MainText.InsertObjectDialog;
End;

Procedure TF_Main.P1Click(Sender: TObject);
Var
  Picture: TPicture;
  OpenPictureDialog: TOpenPictureDialog;
Begin
  If MainText.Enabled=False Then Exit;
  MainText.SetFocus;
  OpenPictureDialog:=TOpenPictureDialog.Create(Nil);
  Try
    OpenPictureDialog.Filter:=Format('%s|%s|%s', [GraphicFilter(TBitmap),
      GraphicFilter(TMetafile), GraphicFilter(TJPEGImage)]);
    If OpenPictureDialog.Execute Then
    Begin
      Picture:=TPicture.Create;
      Try
        Try
          Picture.LoadFromFile(OpenPictureDialog.FileName);
          Clipboard.Assign(Picture);
          MainText.PasteFromClipboard;
        Except
          MessageBox(Handle, pchar(Error_Pic), pchar('信息'),
            MB_ICONINFORMATION Or MB_OK);
          Addlog('Error_Pic');
        End;
      Finally
        Picture.Free;
      End;
    End;
  Finally
    OpenPictureDialog.Free;
  End;
End;

Procedure TF_Main.B_ColorsClick(Sender: TObject);
Begin
  BFontC:=True;
  PopupColors.Popup(B_Colors, taLeftJustify);
End;

Procedure TF_Main.ColorBoxEx1Change(Sender: TObject);
Begin
  If BFontC=True Then
    MainText.TOM.Selection.Font.ForeColor:=ColorToRGB(ColorBoxEx1.ActiveColor)
  Else
    MainText.TOM.Selection.Font.BackColor:=ColorToRGB(ColorBoxEx1.ActiveColor)
End;

Procedure TF_Main.ColorBoxEx1Click(Sender: TObject);
Begin
  PopupColors.Close;
  MainText.SetFocus;
End;

Procedure TF_Main.MainTextSelectionChange(Sender: TObject);
Begin
  B_Colors.Enabled:=MainText.Enabled; //And(MainText.SelLength>0);
  B_Bcolors.Enabled:=MainText.Enabled; //And(MainText.SelLength>0);

⌨️ 快捷键说明

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