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