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

📄 main.pas

📁 编写
💻 PAS
📖 第 1 页 / 共 5 页
字号:
  Reg_UnderLine_Color = '下划线颜色';
  Reg_UnderLine_Offset = '下划线距离';
  Reg_UnderLine_Thick = '下划线宽度';

  //注册最新文件设置
  Reg_Filename_Sort = '最新文件顺序';
  Reg_Filename = '最新文件';
  Reg_Filename_Count = 50;  //最多保存最新文件数
  Reg_Item_Change_Flag = '改变最新文件顺序';

  Reg_Openfile_Flag = '打开上次关闭时候的文件';
  Reg_Close_Filename = '上次关闭文件';
  Reg_Close_Filename_Index = '上次关闭文件索引';
  Reg_Close_Filename_ye = '上次关闭文件页码';

  //注册书签设置
  Reg_Label = '书签';
  Reg_Label_string = '书签说明';
  Reg_Label_Count = 20;  //最多保存书签数

  //注册定时提醒设置
  Reg_Alarm_Flag = '定时提醒';
  Reg_Alarm_Time = '定时提醒时间';
  Reg_Alarm_Msg = '显示内容';

  //文件读入缓存大小
  BufSize = 25000;

  //最新文件菜单索引序号分隔符
  Pop_New_Index = ') ';

var
  f_main : Tf_main;

  PNotify : PNotifyIconDataA;  //定义托盘图标结构

  OpenTextFile : TOpenTextDialog;  //定义打开文件对话框
  SaveTextFile : TOpenTextDialog;  //定义保存文件对话框
  SaveLibFile : TOpenTextDialog;  //定义保存书库文件对话框

  xtsub : Boolean;           //系统调用标志(用于暂时屏蔽某些消息)
  Mouse_Point : TPoint;      //当前鼠标位置
  KeyOpenFile : integer;     //使用键盘打开文件的索引(将键码转换为最新文件的序号)

  mp3Show : Boolean;         //MP3播放器是否打开(上次关闭程序时,mp3播放器打开着)

  SearchString : string;     //所查找的字符串

  zipPassDir : string;       //zip文件临时解压目录(传递给unzip的目录)
  zipPassDirChar : array[1..100] of Char;  //得到系统的临时目录(c:\windows\temp)

  AppCurrentDir : string;    //应用程序当前目录

  //窗口变量
  Book_Left_v : integer;         //窗口左位置
  Book_Top_v : integer;          //窗口上位置
  Book_Width_v : integer;        //窗口宽度
  Book_Height_v : integer;       //窗口高度

  Book_Left_vv : integer;        //最大化前的窗口左位置
  Book_Top_vv : integer;         //最大化前的窗口上位置
  Book_Width_vv : integer;       //最大化前的窗口宽度
  Book_Height_vv : integer;      //最大化前的窗口高度

  Book_Resize_Flag : Boolean;    //窗口改变大小标志(屏蔽Form.Resize)
  Width_av : Real;               //窗口宽度平均值
  Height_av : Real;              //窗口高度平均值

  //页面变量
  Page_1_Left_v : integer;       //左页面左位置
  Page_2_Left_v : integer;       //右页面左位置
  Page_Top_v : integer;          //页面上位置
  Page_Width_v : integer;        //页面宽度
  Page_Height_v : integer;       //页面高度

  Page_MouseButton : integer;    //页面上是否有鼠标按下

  Page_Number : Longint;         //页面可存放行数

  Page_Test_Width_v : integer;   //测试页面的宽度
  Page_Test_Height_v : integer;  //测试页面的高度

  Page_Edit : array [1..2] of TMemo;  //原稿编辑窗口

  //下划线变量
  UnderLine_Number : Longint;    //下划线的行数
  UnderLine_Color : Integer;     //下划线的颜色
  UnderLine_Offset : Integer;    //下划线的距离
  UnderLine_Thick : Integer;     //下划线的宽度

  Auto_Page_Move_Run : Boolean;  //自动翻页时,自动调整下划线的移动
  
  //文本框变量
  TextRead : array [1..MaxTextRead] of TMemo;         //最终用于显示的文本框
  TextRead_Ready : array [1..MaxTextRead] of string;  //处理后的文本框
  TextRead_Bak : array [1..MaxTextRead] of string;    //原始的文本框
  TextRead_do : string;                               //处理一部分文本框的字符串
  SelString : string;                                 //选择处理的内容

  EndChange : Boolean;           //处理结束标志
  ChangeIndex : longint;         //处理起始位置
  Countlines : Longint;          //总行数
  CountTextRead : integer;       //实际总文本框数
  CurrentTextRead : integer;     //当前文本框数

  Page_Line_Number : longint;    //页起始行数
  Count_Line_Number : longint;   //总文本框行数

  //书签变量
  Label_Left_v : integer;        //书签左位置
  Label_Top_v : integer;         //书签上位置
  Label_Width_v : integer;       //书签宽度
  Label_Height_v : integer;      //书签高度

  AddLabel : TMenuItem;                                     //书签添加菜单
  Label_Indexv : array [0..Reg_Label_Count-1] of integer;   //书签索引
  Label_Stringv : array [0..Reg_Label_Count-1] of  string;  //书签说明

  //翻页变量
  Page_Next_Left_v : integer;    //右翻页左位置
  Page_Move_Width_v : integer;   //翻页宽度
  Page_Move_Height_v : integer;  //翻页高度

  //自动翻页变量
  Page_RecordTime : integer;     //自动测试翻页时间
  Current_Auto_Page : Boolean;   //当前是否能自动翻页
  Auto_Scroll_Count : integer;   //自动卷行数

  //按钮变量
  Book_Button_Width_v : integer;  //系统按钮的宽度

  //页码变量
  ye_1_loc,ye_2_loc : string;     //页码位置参数
  ye_Loc_Left_v : integer;        //页码左位置
  ye_Loc_Top_v : integer;         //页码上位置

  ye_Current_v : longint;         //当前页码
  ye_Count_v : longint;           //总页码

  //文件变量
  fp : File;                      //一般文件指针
  Lfp : TextFile;                 //书库文件指针

  tempFileName : string;          //临时文件名
  pFileName : string;             //传递时的文件名
  filename : string;              //真正打开的文件名
  pZipFileName : string;          //菜单中的zip文件名
  Open_File_Count : longint;      //打开的文件总数

  Readnum : Longint;              //实际读取文件长度大小
  FileLength : Longint;           //文件总长
  LeftLength : Longint;           //取整后的剩余长度
  DataBuf : array [1..BufSize+5000] of Char;  //读文件的缓冲(加5000是因为转换的时候会多出一些字节)

  Close_Filename_Index : integer;  //上次关闭时候的文件名索引
  Close_Filename : string;         //上次关闭时候的文件名
  Close_Filename_ye : longint;     //上次关闭时候的文件页码

  AddNew : TMenuItem;              //添加最新文件的菜单
  OpenNew_Zip : Boolean;           //打开zip文件标志
  OpenNew_Flag : Boolean;          //打开最新文件标志
  OpenNew_parm : Boolean;          //打开参数文件标志
  OpenNew_Item : Boolean;          //仅加入菜单标志

  pOpenNew_Index : Integer;        //打开最新文件索引(临时)
  OpenNew_Index : Integer;         //打开最新文件索引
  Open_blf_File : Boolean;         //打开书库文件

  //第一次启动判断变量
  First_Boot : Boolean;  //第一次启动程序标志

  //打开参数文件正确标志
  Openfile_Flag : Boolean;  //是否正确打开文件

  //一般变量
  i,j,k,l : Longint;          //一般整型变量
  tf1,tf2,tf3,tf4 : Boolean;  //一般逻辑型变量
  s1,s2,s3 : string;          //一般字符串变量

implementation

uses helpa, setup, ye, gb2big5, mess, LabelIn, clearnew, alarm,
     mp3play, search, zipprev, zippass;

{$R *.DFM}

procedure Tf_main.FormCreate(Sender: TObject);
begin
  //建立“托盘”图标
  New(PNotify);
  with PNotify^ do
  begin
	   Wnd:=f_main.Handle;
	   uID:=0;
	   uFlags:=NIF_ICON+NIF_MESSAGE+NIF_TIP;
	   hIcon:=f_main.Icon.Handle;
	   uCallbackMessage:=MyIcoMes;
	   szTip:='电子小说阅读器';
  end;
  Shell_NotifyIcon(NIM_ADD,PNotify);

  //建立打开文件对话框
  OpenTextFile:=TOpenTextDialog.Create(self);
  with OpenTextFile do
  begin
	   Filter:='所有小说文件|*.txt;*.htm;*.html;*.rtf;*.ini;*.zip;*.gb;*.blf|'+
			   '文本文件(*.txt)|*.txt|'+
			   'HTML文件(*.htm,*.html)|*.htm;*.html|'+
			   'RTF文件(*.rtf)|*.rtf|'+
			   'INI文件(*.ini)|*.ini|'+
			   'ZIP文件(*.zip)|*.zip|'+
			   'GB文件(*.gb)|*.gb|'+
			   '书库文件(*.blf)|*.blf|'+
			   '所有文件(*.*)|*.*';
	   FilterIndex:=1;
	   Options:=[ofAllowMultiSelect,ofPathMustExist,ofFileMustExist];
	   Title:='打开小说文件';
  end;

  //建立保存文件对话框
  SaveTextFile:=TSaveTextDialog.Create(self);
  with SaveTextFile do
  begin
	   DefaultExt:='*.txt';
       Filter:='文本文件(*.txt)|*.txt';
	   FilterIndex:=1;
	   Options:=[ofOverwritePrompt];
	   Title:='保存小说文件';
  end;

  //建立保存书库对话框
  SaveLibFile:=TSaveTextDialog.Create(self);
  with SaveLibFile do
  begin
	   DefaultExt:='*.'+Lib_File;
	   Filter:='书库文件(*.'+Lib_File+')|*.'+Lib_File;
	   FilterIndex:=1;
	   Options:=[ofOverwritePrompt];
	   Title:='生成书库文件';
  end;

  //建立文本框
  for i:=1 to MaxTextRead do
  begin
       TextRead[i]:=TMemo.Create(self);
       TextRead[i].Left:=0;
       TextRead[i].Top:=-600;
	   TextRead[i].width:=300;
       TextRead[i].Height:=500;
       TextRead[i].Parent:=f_main;
       TextRead[i].BorderStyle:=bsSingle;  //防止超出Label框
       TextRead[i].ScrollBars:=ssNone;
       TextRead[i].TabStop:=False;
  end;

  //建立编辑框1
  Page_Edit[1]:=TMemo.Create(self);
  with Page_Edit[1] do
  begin
       visible:=False;
       Parent:=f_main;
       BorderStyle:=bsSingle;
       ScrollBars:=ssNone;
       OnKeyDown:=EditMemoKey;
  end;

  //建立编辑框2
  Page_Edit[2]:=TMemo.Create(self);
  with Page_Edit[2] do
  begin
       visible:=False;
	   Parent:=f_main;
       BorderStyle:=bsSingle;
       ScrollBars:=ssNone;
       OnKeyDown:=EditMemoKey;
  end;

  //建立最小化事件
  Application.OnMinimize:=Minimize;

  //初始化下划线
  UnderLine.Canvas.MoveTo(0,0);
  UnderLine.Canvas.LineTo(Page_Width_v,0);

  //初始化系统变量
  //能够接受拖放文件
  DragAcceptFiles(f_main.Handle,True);

  //得到zip临时目录
  GetTempPath(SizeOf(zipPassDirChar),@zipPassDirChar);  //得到系统临时目录
  zipPassDir:=zipPassDirChar;                           //转换char->string

  //除去临时目录中的多余字符
  for i:=1 to Length(zipPassDir) do
  begin
	   if zipPassDir[i]<#32 then
	   begin
			zipPassDir:=copy(zipPassDir,1,i-2);
			Break;
	   end;                               
  end;

  //得到最后zip解压的目录
  zipPassDir:=LowerCase(zipPassDir)+ZipPassTempDir;
  if zipPassDir='' then zipPassDir:='c:'+ZipPassTempDir;

  //建立zip解压的目录
  ForceDirectories(zipPassDir);

  //得到当前目录
  AppCurrentDir:=GetCurrentDir;

  //初始化一般变量
  SearchString:='';         //清空查找字符串
  Page_1.Caption:='';       //清空页面1内容
  Page_2.Caption:='';       //清空页面2内容

  Book_Resize_Flag:=False;  //写标志:允许改变窗口大小
  First_Boot:=True;         //写标志:第一次启动
  Openfile_Flag:=False;     //写标志:没有正确打开文件
  xtsub:=False;             //写标志:非系统调用
  OpenNew_Zip:=False;       //写标志:不是打开zip文件
  OpenNew_Flag:=False;      //写标志:不是打开最新文件
  OpenNew_parm:=False;      //写标志:不是打开参数文件
  OpenNew_Item:=False;      //写标志:不是仅加入菜单

  //初始化变量
  filename:='';             //打开文件名写''
  pFileName:='';            //菜单中的文件名写''
  pZipFileName:='';         //菜单中的zip文件名写''
  Open_File_Count:=0;       //文件计数写0
  Open_blf_File:=False;     //写标志:不是打开书库文件
  Auto_Scroll_Count:=0;     //自动卷行写0

  Page_MouseButton:=0;      //页面鼠标按下写0
  ye_Count_v:=0;            //总页码写0
  ye_Current_v:=0;          //当前页码写0

  CountTextRead:=0;         //总文本框数写0
  CurrentTextRead:=0;       //当前文本框数写0
  mp3Show:=False;           //写标志:MP3播放器没有打开

  //清除文本框内容
  for i:=1 to MaxTextRead do
  begin

⌨️ 快捷键说明

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