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

📄 main.pas

📁 源代码竟供大家参考
💻 PAS
📖 第 1 页 / 共 5 页
字号:

  //页面变量
  Page_Width_v : integer;        //页面宽度
  Page_Height_v : integer;       //页面高度
  Page_Top_v : integer;          //页面上位置
  Page_1_Left_v : integer;       //左页面左位置
  Page_2_Left_v : integer;       //右页面左位置
  Page_Number : Longint;         //页面可存放行数

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

  //下划线变量
  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_Move_Width_v : integer;   //翻页宽度
  Page_Move_Height_v : integer;  //翻页高度
  Page_Next_Left_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;              //所打开的文件名
  Open_File_Count : longint;      //打开的文件计数

  Readnum : Longint;              //实际读文件长度大小
  FileLength : Longint;           //文件长
  LeftLength : Longint;           //剩余长度
  DataBuf : array [1..BufSize] of Char;  //读文件缓冲

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

  AddNew : TMenuItem;         //最新文件添加菜单
  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;

{$R *.DFM}

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

  //设置菜单图片
  for i:=0 to pop_image_count-1 do
  begin
       pop_Bitmap[i]:=TBitmap.Create;
       pop_image.GetBitmap(i,pop_Bitmap[i]);
  end;

  //注册mp3控件
  RegMp3;
  try
     mp3play:=TMp3Play.Create(self);
     mp3play.Parent:=f_main;
     mp3play.Top:=-300;
     mp3play.Left:=-300;
     mp3play.OnThreadEnded:=Mp3PlayThreadEnded;
     //mp3play.OnActFrame:=Mp3PlayActFrame;
     existmp3:=True;   //存在MP3控件
  except
     existmp3:=False;  //不存在MP3控件
  end;

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

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

  //初始化系统变量
  DragAcceptFiles(f_main.Handle,True);  //能够接受拖放文件
  Page_1.Caption:='';       //清空页面1
  Page_2.Caption:='';       //清空页面2

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

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

  ye_Count_v:=0;            //总页码写0
  ye_Current_v:=0;          //当前页码写0

  CountTextRead:=0;         //总文本框数写0
  CurrentTextRead:=0;       //当前文本框数写0

  //清除文本框内容
  for i:=1 to MaxTextRead do
  begin
       TextRead[i].Text:='';
       TextRead_Ready[i]:='';
       TextRead_Bak[i]:='';
  end;
end;

procedure Tf_main.FormShow(Sender: TObject);
begin
  if First_Boot then
  begin  //第一次启动
       First_Boot:=False;  //写标志:非第一次启动
       Init;               //初始化设置

       //初始化MP3设置
       pop_MP3.Enabled:=existmp3;
       f_setup.Check_Sound.Enabled:=existmp3;

       //取消设置标志
       f_ye.ye_check.Checked:=False;
       f_setup.setup_check.Checked:=False;
       f_LabelIn.Label_Check.Checked:=False;
  end;
  pop_Show.Caption:='隐藏书本';
end;

procedure Tf_main.FormHide(Sender: TObject);
begin
  pop_Show.Caption:='显示书本';
end;

procedure Tf_main.Init();
var ParmFileIndex : longint;  //参数文件索引
begin
  Init_Var;      //初始化系统变量

  xtsub:=True;   //若为系统调用,则退出
  Init_Max;      //调整最大化显示
  xtsub:=False;  //若为系统调用,则退出

  Init_Window;  //初始化窗口

  Openfile_Flag:=False;  //写标志:不是正确打开文件

  if ParamStr(1)='' then
  begin  //无参数文件
       //判断是否打开说明文件
       if (f_setup.Check_OpenFile.Checked) and (Close_Filename_Index>=0) and (Close_Filename_ye>0) then
       begin  //打开上次关闭时候的文件
            if (Close_filename_index<pop_new.Count-2) then
            begin  //在最新文件列表中,则打开索引中的文件
                 OpenNew_Flag:=True;                                //写标志:打开最新文件
                 pOpenNew_Index:=Close_filename_index;              //最新文件索引
                 pFilename:=pop_new.Items[pOpenNew_Index].Caption;  //菜单文件名
                 OpenFile;                                          //打开文件
            end
            else
            begin  //不在最新文件列表中,则打开参数文件
                 OpenNew_parm:=True;         //写标志:打开参数文件
                 pFileName:=Close_Filename;  //菜单文件名
                 OpenFile;                   //打开文件
            end;
       end;

       if not Openfile_Flag then
       begin  //没有正确打开文件,则打开说明文件
            Filename:='';      //初始化打开文件名
            Init_Page;         //初始化页面
            Init_Page_String;  //初始化页面内容
            Init_ye;           //初始化页码
       end
       else  //正确打开文件,则翻到上次关闭时候的页码
          Changeye(Close_Filename_ye);

       //退出循环
       exit;
  end
  else
  begin  //打开参数文件
       //逐个打开参数文件
       Open_File_Count:=0;                       //文件计数写0
       Open_blf_File:=False;                     //写标志:不是打开书库文件

       for ParmFileIndex:=ParamCount downto 1 do
       begin
            pFileName:=ParamStr(ParmFileIndex);  //菜单文件名
            Open_Param_File(pFileName);          //打开参数文件
       end;

       //判断是否打开了书库文件,并且删除原最新菜单
       if (Open_blf_File) and (f_setup.Check_ClearNew.Checked) then
          for ParmFileIndex:=Open_File_Count to pop_new.Count-1-2 do
              Delete_NewItem(Open_File_Count);
  end;

  if not Openfile_Flag then
  begin  //打开参数文件失败,则打开说明文件
       Filename:='';      //初始化打开文件名
       Init_Page;         //初始化页面
       Init_Page_String;  //初始化页面内容
       Init_ye;           //初始化页码
  end
  else
  begin  //打开参数文件中的第一个文件
       f_main.Enabled:=False;
       OpenNew_Flag:=True;                   //写标志:打开最新文件
       pOpenNew_Index:=0;                    //参数文件索引写0
       pFilename:=pop_new.Items[0].Caption;  //菜单文件名
       OpenFile;                             //打开文件
       f_main.Enabled:=True;
  end;
end;

procedure Tf_main.Init_Var();
var Reg_Flag : string;     //注册标志
    RegBookPath : string;  //注册表路径
begin
  //注册快捷菜单
  //打开注册表
  Reg_ini := TRegIniFile.Create('');
  Reg_ini.RootKey:=HKEY_CLASSES_ROOT;
  RegBookPath:='Book Files';           //定义注册表中路径

  //注册软件
  Reg_ini.WriteString(RegBookPath,'','电子小说阅读器');
  Reg_ini.WriteString(RegBookPath+'\DefaultIcon','',ParamStr(0)+',0');
  Reg_ini.WriteString(RegBookPath+'\Shell\使用电子小说阅读器阅读(&R)\command','',ParamStr(0)+' %1');

  //注册右键快捷菜单
  Reg_ini.WriteString('\.'+Lib_File,'',RegBookPath);
  Reg_ini.WriteString('\htmlfile\shell\使用电子小说阅读器阅读(&R)\command','',ParamStr(0)+' %1');
  Reg_ini.WriteString('\txtfile\shell\使用电子小说阅读器阅读(&R)\command','',ParamStr(0)+' %1');

  //注册参数
  Reg_ini.RootKey:=HKEY_LOCAL_MACHINE;

  //注册版本号
  Reg_ini.WriteString(Reg_Path,Reg_reg_ver,ver);

  //更新旧版本的注册
  if Reg_ini.ReadString(Reg_Path,Reg_Filename+'0','')<>'' then  //存在旧版本最新文件
     for i:=0 to Reg_Filename_Count-1 do
     begin  //将旧版本中的最新文件转移到新版本的路径下,并删除旧版本的最新文件
          tempfilename:=Reg_ini.ReadString(Reg_Path,Reg_Filename+IntToStr(i),'');
          Reg_ini.WriteString(Reg_File_Path,Reg_Filename+IntToStr(i),tempfilename);
          Reg_ini.DeleteKey(Reg_Path,Reg_Filename+IntToStr(i));
     end;

  //更新最新文件索引
  if Reg_ini.ReadInteger(Reg_File_Path,Reg_Filename_Sort+'0',-1)=-1 then
     for i:=0 to Reg_Filename_Count-1 do
     begin  //建立默认索引
          Reg_ini.WriteInteger(Reg_File_Path,Reg_Filename_Sort+IntToStr(i),i);
     end;

  //判断是否注册

⌨️ 快捷键说明

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