📄 unit_main.pas
字号:
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 + -