📄 main.pas
字号:
Height:=1;
f_main.Update;
Canvas.Pen.Color:=UnderLine_Color;
Canvas.Pen.Width:=UnderLine_Thick;
Canvas.MoveTo(0,0);
Canvas.LineTo(Page_Width_v,0);
Visible:=Pop_UnderLine.Checked;
end;
Init_UnderLine;
//调整自动下划线状态
Auto_UnderLine.Enabled:=Auto_Page_Move.Enabled and Pop_UnderLine.Checked;
if Auto_Page_Move.Interval=0 then
Auto_UnderLine.Interval:=0
else
Auto_UnderLine.Interval:=trunc(Auto_Page_Move.Interval/(Page_Number+2)/2);
//调整自动卷行
Auto_Scroll_Count:=0;
//关闭显示信息
f_mess.Close;
end;
procedure Tf_main.Init_Page_String();
var TextRead_Page_Count_1 : string; //写入页面1的内容
TextRead_Page_Count_2 : string; //写入页面2的内容
begin
//清除写入页面内容
TextRead_Page_Count_1:='';
TextRead_Page_Count_2:='';
//计算页面起始行数
Page_Line_Number:=(ye_Current_v-1)*Page_Number;
Page_Line_Number:=Page_Line_Number+Auto_Scroll_Count; //调整自动卷行后的行数
//读文本框,写入页面变量
//写入页面1变量
for i:=1 to Page_Number do
begin
while (Page_Line_Number+i>Count_Line_Number) and (CurrentTextRead<CountTextRead) do
begin //所读的行数超过目前文本框总行数,则调整文本框状态
inc(CurrentTextRead); //当前文本框数+1
Count_Line_Number:=Count_Line_Number+TextRead[CurrentTextRead].Lines.Count; //调整目前文本框总行数
end;
while (Page_Line_Number+i<=Count_Line_Number-TextRead[CurrentTextRead].Lines.Count) and (CurrentTextRead>1) do
begin //所读的行数少于目前文本框总行数,则调整文本框状态
Count_Line_Number:=Count_Line_Number-TextRead[CurrentTextRead].Lines.Count; //调整目前文本框总行数
dec(CurrentTextRead); //当前文本框数-1
end;
//换算文本框行数
j:=Page_Line_Number+i-1-(Count_Line_Number-TextRead[CurrentTextRead].Lines.Count);
TextRead_Page_Count_1:=TextRead_Page_Count_1+TextRead[CurrentTextRead].Lines[j]+#13+#10;
if (Pop_HangD.Checked) and (f_main.PopupMenu<>nil) then
TextRead_Page_Count_1:=TextRead_Page_Count_1+#13+#10;
end;
//写入页面2变量
for i:=Page_Number+1 to 2*Page_Number do
begin
while (Page_Line_Number+i>Count_Line_Number) and (CurrentTextRead<CountTextRead) do
begin //所读的行数超过目前文本框总行数,则调整文本框状态
inc(CurrentTextRead); //当前文本框数+1
Count_Line_Number:=Count_Line_Number+TextRead[CurrentTextRead].Lines.Count; //调整目前文本框总行数
end;
while (Page_Line_Number+i<=Count_Line_Number-TextRead[CurrentTextRead].Lines.Count) and (CurrentTextRead>1) do
begin //所读的行数少于目前文本框总行数,则调整文本框状态
Count_Line_Number:=Count_Line_Number-TextRead[CurrentTextRead].Lines.Count; //调整目前文本框总行数
dec(CurrentTextRead); //当前文本框数-1
end;
//换算文本框行数
j:=Page_Line_Number+i-1-(Count_Line_Number-TextRead[CurrentTextRead].Lines.Count);
TextRead_Page_Count_2:=TextRead_Page_Count_2+TextRead[CurrentTextRead].Lines[j]+#13+#10;
if (Pop_HangD.Checked) and (f_main.PopupMenu<>nil) then
TextRead_Page_Count_2:=TextRead_Page_Count_2+#13+#10;
end;
if Auto_Scroll_Count>0 then
begin //向后卷行,处理页面
end;
if Auto_Scroll_Count<0 then
begin //向前卷行,处理页面
end;
if Auto_Scroll_Count=0 then
begin //不卷行,处理页面
end;
if f_main.PopupMenu<>nil then
begin
Page_1.Caption:=TextRead_Page_Count_1;
Page_2.Caption:=TextRead_Page_Count_2;
end
else
begin
Page_Edit[1].Text:=TextRead_Page_Count_1;
Page_Edit[2].Text:=TextRead_Page_Count_2;
end;
//调整书签菜单
Pop_Label_Add.Enabled:=False;
Pop_Label_Edit.Enabled:=False;
Pop_Label_Delete.Enabled:=False;
label_image.Visible:=False;
if (filename<>'') and (filename<>'说明文件') and (filename<>'剪贴板') then
begin //不是说明文件、剪贴板,则调整书签菜单
//初始化书签菜单
j:=0;
Pop_Label_Add.Enabled:=True;
Pop_Label_Edit.Enabled:=False;
Pop_Label_Delete.Enabled:=False;
label_image.Visible:=False;
//取消默认书签
if Pop_Label_Input.Enabled then
begin
Pop_Label_Input.Items[0].Default:=True;
Pop_Label_Input.Items[0].Default:=False;
end;
//检测书签
for j:=0 to Pop_Label_Input.Count-1 do
begin
if (ye_Current_v=Label_Indexv[j]) or (ye_Current_v+1=Label_Indexv[j]) then
begin //当前页有书签,更新书签菜单
Pop_Label_Add.Enabled:=False;
Pop_Label_Edit.Enabled:=True;
Pop_Label_Delete.Enabled:=True;
Pop_Label_Input.Items[j].Default:=True;
label_image.Hint:=Label_Stringv[j];
label_image_Pic.Hint:=Label_Stringv[j];
label_image.Visible:=True;
break;
end;
end;
end;
end;
procedure Tf_main.Init_ye();
var x,y : integer; //页码位置
begin
//调整字体
ye_1_be.Font:=yeFont.Font;
ye_1.Font:=yeFont.Font;
ye_1_af.Font:=yeFont.Font;
ye_1_test.Font:=yeFont.Font;
ye_2_be.Font:=yeFont.Font;
ye_2.Font:=yeFont.Font;
ye_2_af.Font:=yeFont.Font;
ye_2_test.Font:=yeFont.Font;
//调整页码位置参数
ye_1_loc:=f_setup.ye_1_loc.Caption;
ye_2_loc:=f_setup.ye_2_loc.Caption;
//计算页码位置变量
ye_loc_Left_v:=trunc(Width_av*ye_loc_Left);
ye_loc_Top_v:=trunc(Width_av*ye_loc_Top);
//调整页码1
ye_1.Caption:=IntToStr(ye_Current_v);
ye_1_test.Caption:=ye_1_be.Caption+ye_1.Caption+ye_1_af.Caption;
//计算页码1位置1变量
case ye_1_loc[1] of
'1' : //靠左
x:=Page_Move_Width+ye_loc_Left_v;
'2' : //中间
x:=trunc((Book_Width_v/2-Page_Move_Width)/2-ye_1_test.Width/2+Page_Move_Width);
'3' : //靠右
x:=trunc(Book_Width_v/2-ye_Loc_Left_v-ye_1_test.Width);
end;
//计算页码1位置2变量
case ye_1_loc[2] of
'1' : //靠上
y:=ye_loc_Top_v;
'2' : //靠下
y:=trunc(Book_Height_v-ye_Loc_Top_v-ye_1_test.Height);
end;
//调整页码1位置
ye_1_be.Left:=x;
ye_1.Left:=ye_1_be.Left+ye_1_be.Width;
ye_1_af.Left:=ye_1.Left+ye_1.Width;
ye_1_be.Top:=y;
ye_1.Top:=y;
ye_1_af.Top:=y;
if f_setup.Check_ye_View.Checked then
begin //显示页码1
ye_1_be.Visible:=True;
ye_1_af.Visible:=True;
ye_1.Visible:=True;
end
else
begin //隐藏页码1
ye_1_be.Visible:=False;
ye_1_af.Visible:=False;
ye_1.Visible:=False;
end;
//隐藏页码2
ye_2_be.Visible:=False;
ye_2_af.Visible:=False;
ye_2.Visible:=False;
//调整页码2
if ye_Current_v+1<=ye_Count_v then
begin //存在页码2,则调整页码2
ye_2.Caption:=IntToStr(ye_Current_v+1);
ye_2_test.Caption:=ye_2_be.Caption+ye_2.Caption+ye_2_af.Caption;
//计算页码2位置1变量
case ye_2_loc[1] of
'1' : //靠左
x:=trunc(Book_Width_v/2+ye_Loc_Left_v);
'2' : //中间
x:=trunc((Book_Width_v/2-Page_Move_Width)/2-ye_2_test.Width/2+Book_Width_v/2);
'3' : //靠右
x:=trunc(Book_Width_v-Page_Move_Width-ye_Loc_Left_v-ye_2_test.Width);
end;
//计算页码2位置2变量
case ye_2_loc[2] of
'1' : //靠上
y:=ye_loc_Top_v;
'2' : //靠下
y:=trunc(Book_Height_v-ye_Loc_Top_v-ye_2_test.Height);
end;
//调整页码2位置
ye_2_be.Left:=x;
ye_2.Left:=ye_2_be.Left+ye_2_be.Width;
ye_2_af.Left:=ye_2.Left+ye_2.Width;
ye_2_be.Top:=y;
ye_2.Top:=y;
ye_2_af.Top:=y;
if f_setup.Check_ye_View.Checked then
begin //显示页码2
ye_2_be.Visible:=True;
ye_2_af.Visible:=True;
ye_2.Visible:=True;
end;
end;
end;
procedure Tf_main.Init_UnderLine();
begin
//调整下划线位置
if Pop_HangD.Checked then //行距加倍,则下划线多移一行
UnderLine.Top:=Page_Top_v-(2*UnderLine_Number-1)*PageFont.Font.Height+UnderLine_Offset
else
UnderLine.Top:=Page_Top_v-UnderLine_Number*PageFont.Font.Height+UnderLine_Offset;
end;
procedure Tf_main.FormResize(Sender: TObject);
begin
//判断是否允许改变窗口大小
if Book_Resize_Flag then exit;
//判断窗口不能过小
if f_main.Width<2*Book_Button_Width_v+100 then
f_main.Width:=2*Book_Button_Width_v+100;
if f_main.Height<3*Book_Button_Width_v+40 then
f_main.Height:=3*Book_Button_Width_v+40;
//调整窗口位置、大小变量
Book_Left_v:=f_main.Left;
Book_Top_v:=f_main.Top;
Book_Width_v:=f_main.Width;
Book_Height_v:=f_main.Height;
if xtsub then exit; //若为系统调用,则退出
Init_Window; //初始化窗口
Init_Page; //初始化页面
Init_Page_String; //初始化页面内容
Init_ye; //初始化页码
end;
procedure Tf_main.Pop_openClick(Sender: TObject);
var OpenFileIndex : integer; //打开文件索引
OpenFileCount : Longint; //打开文件总数
begin
//打开对话框,错误则退出
if not OpenTextFile.Execute then Exit;
f_main.Update;
//打开参数文件
Openfile_Flag:=False; //写标志:没有正确打开文件
OpenFileCount:=OpenTextFile.Files.Count; //获得总文件数
if OpenFileCount>Reg_Filename_Count then
OpenFileCount:=Reg_Filename_Count;
Open_File_Count:=0; //文件计数写0
Open_blf_File:=False; //写标志:不是打开书库文件
for OpenFileIndex:=OpenFileCount-1 downto 0 do
begin
pFileName:=OpenTextFile.Files.Strings[OpenFileIndex]; //菜单文件名
Open_Param_file(pFileName); //打开参数文件
end;
//判断是否打开了书库文件,并且删除原最新菜单
if (Open_blf_File) and (f_setup.Check_ClearNew.Checked) then
for OpenFileIndex:=Open_File_Count to Pop_new.Count-1-2 do
Delete_NewItem(Open_File_Count);
if Openfile_Flag then
begin //正确打开文件,则打开参数文件中第一个文件
OpenFirstFile;
end;
end;
procedure Tf_main.OpenFile();
var zipFileName : string;
subFileName : string;
cFileIndex : integer;
OpenZipIndex : integer;
begin
pZipFileName:='';
cFileIndex:=pos('|',pFileName);
if cFileIndex>0 then
begin //打开zip文件中的子文件
//复制zip文件名
pZipFileName:=pFileName;
//分割zip文件和子文件
zipFileN
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -