📄 main.pas
字号:
end;
//---指定页码菜单---
procedure TFormMain.ItemInputYeClick(Sender: TObject);
begin
//显示主窗口
ShowMainForm;
if g_nYeCount <= 2 then Exit;
with TFormInputYe.Create(Self) do
begin
if ShowModal = mrOk then
ChangeYe(m_nPos); //转到指定页数
Free;
end;
end;
//---自动翻页菜单---
procedure TFormMain.ItemAutoPageMoveClick(Sender: TObject);
begin
TimeAutoPageMove.Enabled := False; //关闭自动翻页
TimeAutoUnderLine.Enabled := False; //关闭自动移动下划线
g_boolAutoPageMove := not g_boolAutoPageMove;
TimeAutoPageMove.Enabled := g_boolAutoPageMove;
TimeAutoUnderLine.Enabled := g_boolAutoPageMove and g_boolUnderLine;
if g_boolAutoPageMove and g_boolUnderLine then
begin //调整自动下划线状态
ImageUnderLine.Left := FnPage1Left; //下划线左位置
FnUnderLineNumber := 1; //下划线行数写1
Init_UnderLine; //初始化下划线
end;
end;
//---背景音乐菜单---
procedure TFormMain.ItemMP3Click(Sender: TObject);
begin
if g_boolExistMP3 then
FormMP3Play.Show;
end;
//---查看剪贴板菜单---
procedure TFormMain.ItemReadClipClick(Sender: TObject);
begin
g_strFilename := '剪贴板';
Init_Page; //初始化页面
ChangeYe(1); //翻到第1页
end;
//---设置菜单---
procedure TFormMain.ItemSetupClick(Sender: TObject);
var nModalResult : integer;
begin
//显示主窗口
ShowMainForm;
g_nBookLeft := FormMain.Left; //窗口左位置
g_nBookTop := FormMain.Top; //窗口上位置
g_nBookWidth := FormMain.Width; //窗口宽度
g_nBookHeight := FormMain.Height; //窗口高度
g_boolMax := (FormMain.WindowState = wsMaximized); //最大化显示标志
with TFormSetup.Create(Application) do
begin
nModalResult := ShowModal;
Free;
end;
case nModalResult of
mrOk : //更改系统设置
begin
Init_Setup;
end;
mrRetry : //恢复默认设置
begin
//清除注册标志
RegWriteStr(c_strRegPath, c_strRegRegFlag, '');
Prompt('重新启动《电子小说阅读器》即可恢复为默认设置。');
end;
end;
end;
//---显示书本菜单---
procedure TFormMain.ItemShowClick(Sender: TObject);
begin
FormMain.Visible := not FormMain.Visible;
end;
//---最大化显示菜单---
procedure TFormMain.ItemMaxClick(Sender: TObject);
begin
g_boolMax := not (FormMain.WindowState = wsMaximized);
//显示主窗口
ShowMainForm;
Init_Max;
end;
//---测试自动翻页菜单---
procedure TFormMain.ItemRecordTimeClick(Sender: TObject);
begin
if FboolTestAutoPage then
begin //结束翻页测试,询问测试结果是否正确
FboolTestAutoPage := False;
TimeRecord.Enabled := False;
if FnPageRecordTime < 0 then FnPageRecordTime := 0;
if FnPageRecordTime > 1000 then FnPageRecordTime := 1000;
if not Confirm('自动翻页时间为' + IntToStr(FnPageRecordTime) + '秒?') then
begin //放弃
TimeAutoPageMove.Enabled := g_boolAutoPageMove; //恢复自动翻页
TimeAutoUnderLine.Enabled := g_boolAutoPageMove and g_boolUnderLine; //恢复自动下划线移动
Exit;
end;
g_boolAutoPageMove := True;
g_nAutoVal := FnPageRecordTime;
TimeAutoPageMove.Enabled := g_boolAutoPageMove; //自动翻页标志
TimeAutoPageMove.Interval := g_nAutoVal * 1000; //自动翻页时间
TimeAutoUnderLine.Enabled := g_boolAutoPageMove and g_boolUnderLine; //自动下划线移动标志
TimeAutoUnderLine.Interval := Trunc(g_nAutoVal * 1000 / (FnPageNumber + 2) / 2); //自动下划线移动时间
//测试完成后,应先翻一页
if (g_boolAutoPageMove) and (g_nAutoVal > 0) then
TimeAutoPageMoveTimer(Self);
end
else
begin //开始翻页测试,保存原始设置
FboolTestAutoPage := True;
TimeAutoPageMove.Enabled := False;
TimeAutoUnderLine.Enabled := False;
FnPageRecordTime := 0;
TimeRecord.Enabled := True;
end;
end;
//---清除最新文件菜单---
procedure TFormMain.ItemClearNewItemClick(Sender: TObject);
var i, j, k : integer;
begin
//显示主窗口
ShowMainForm;
with TFormClearNew.Create(Self) do
begin
m_nMax := ItemNew.Count - 2;
if ShowModal = mrOk then
begin
if RadioBtnClearAll.Checked then
begin //全部清除
RegEraseSection(c_strRegFilePath); //删除文件记录
RegEraseSection(c_strRegLabelPath); //删除书签记录
//更新最新文件索引、建立默认索引
for i := 0 to c_nRegFilenameCount - 1 do
RegWriteInt(c_strRegFilePath, c_strRegFilenameSort + IntToStr(i), i);
//删除菜单中最新文件
for i := 0 to ItemNew.Count - 3 do
ItemNew.Delete(0);
//最新文件索引写 -1
FnOpenNewIndex := -1;
end
else
begin //部分清除
//设置循环
j := StrToInt(EditFromIndex.Text) - 1;
k := StrToInt(EditToIndex.Text) - 1;
if k < j then
begin
j := StrToInt(EditToIndex.Text) - 1;
k := StrToInt(EditFromIndex.Text) - 1;
end;
//删除指定序号最新文件
for i := j to k do
DeleteNewItem(j);
//改变最新文件索引
if (FnOpenNewIndex >= j) and (FnOpenNewIndex <= k) then
FnOpenNewIndex := -1; //最新文件索引写 -1
if FnOpenNewIndex > k then
dec(FnOpenNewIndex, (k - j + 1));
end;
end;
Free;
end;
end;
//---关于菜单---
procedure TFormMain.ItemAboutClick(Sender: TObject);
begin
//显示主窗口
ShowMainForm;
with TFormAbout.Create(Self) do
begin
if ShowModal = mrRetry then
begin
with TFormMoreName.Create(Self) do
begin
ShowModal;
Free;
end;
end;
Free;
end;
end;
//---退出菜单---
procedure TFormMain.ItemQuitClick(Sender: TObject);
begin
FormMain.Close;
end;
//---翻页菜单弹出事件---
procedure TFormMain.MenuPageMovePopup(Sender: TObject);
begin
ItemPagePrev.Enabled := (g_nYeCurrent > 1);
ItemPageNext.Enabled := (g_nYeCurrent < g_nYeCount - 1);
ItemPageFirst.Enabled := (g_nYeCurrent > 1);
ItemPageLast.Enabled := (g_nYeCurrent < g_nYeCount - 1);
ItemInputYe1.Enabled := (g_nYeCount > 2);
ItemFilePrev.Enabled := (FnOpenNewIndex > 0);
ItemFileNext.Enabled := (FnOpenNewIndex < ItemNew.Count - 3) and (FnOpenNewIndex > 0);
end;
//---向前翻页菜单---
procedure TFormMain.ItemPagePrevClick(Sender: TObject);
begin
if FboolEdit then Exit;
ChangeYe(g_nYeCurrent - 2);
end;
//---向后翻页菜单---
procedure TFormMain.ItemPageNextClick(Sender: TObject);
begin
if FboolEdit then Exit;
ChangeYe(g_nYeCurrent + 2);
end;
//---翻到第一页菜单---
procedure TFormMain.ItemPageFirstClick(Sender: TObject);
begin
if FboolEdit then Exit;
ChangeYe(1);
end;
//---翻到最后一页---
procedure TFormMain.ItemPageLastClick(Sender: TObject);
begin
if FboolEdit then Exit;
ChangeYe(g_nYeCount);
end;
//---上一篇小说菜单---
procedure TFormMain.ItemFilePrevClick(Sender: TObject);
begin
if FnOpenNewIndex > 0 then
OnItemNewFileClick(ItemNew.Items[FnOpenNewIndex - 1]);
end;
//---下一篇小说菜单---
procedure TFormMain.ItemFileNextClick(Sender: TObject);
begin
if (FnOpenNewIndex < ItemNew.Count - 3) and (FnOpenNewIndex >= 0) then
OnItemNewFileClick(ItemNew.Items[FnOpenNewIndex + 1]);
end;
//---定时提醒菜单---
procedure TFormMain.ItemShowAlarmClick(Sender: TObject);
begin
with TFormAlarm.Create(Self) do
begin
ShowModal;
Free;
end;
end;
//---不显示时间菜单---
procedure TFormMain.ItemShowTimeClick(Sender: TObject);
begin
ShowTime(False);
end;
//---保存修改---
procedure TFormMain.ItemSaveEditClick(Sender: TObject);
var nYeCurrent : integer;
begin
FboolEdit := False; //写标志:不处于编辑状态
//恢复原功能
FormMain.PopupMenu := MenuMain;
FormMain.KeyPreview := True;
ImagePagePrev.Enabled := True;
ImagePageNext.Enabled := True;
ImageUnderLine.Visible := g_boolUnderLine;
TimeAutoPageMove.Enabled := g_boolAutoPageMove;
TimeAutoUnderLine.Enabled := g_boolAutoPageMove and g_boolUnderLine;
//保存编辑框中的内容
FboolSaveEdit := True; //写标志:处于保存编辑状态
Init_Page_String; //初始化页面内容
FboolSaveEdit := False; //写标志:不处于保存编辑状态
//隐藏编辑框1、2
FMemoPageEdit[1].Hide;
FMemoPageEdit[2].Hide;
//初始化页面
nYeCurrent := g_nYeCurrent; //保存当前页码
Init_Page; //初始化页面
ChangeYe(nYeCurrent); //翻到保存的当前页码
end;
//---放弃修改---
procedure TFormMain.ItemExitEditClick(Sender: TObject);
begin
FboolEdit := False; //写标志:不处于编辑状态
//恢复原功能
FormMain.PopupMenu := MenuMain;
FormMain.KeyPreview := True;
ImagePagePrev.Enabled := True;
ImagePageNext.Enabled := True;
ImageUnderLine.Visible := g_boolUnderLine;
TimeAutoPageMove.Enabled := g_boolAutoPageMove;
TimeAutoUnderLine.Enabled := g_boolAutoPageMove and g_boolUnderLine;
//隐藏编辑框1、2
FMemoPageEdit[1].Hide;
FMemoPageEdit[2].Hide;
//刷新页面内容
Init_Page_String;
end;
//---------------------------------图片事件-------------------------------------
//---背景上鼠标按下事件---
procedure TFormMain.ImageBookMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
//判断是否进入移动状态
if (Button = mbLeft) and (g_boolMove) and (g_boolPageMove) and (FormMain.WindowState = wsNormal) then
FnPageMouseDown := 1
else
FnPageMouseDown := 0;
end;
//---背景上鼠标移动事件---
procedure TFormMain.ImageBookMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
if FnPageMouseDown = 1 then
begin
FnPageMouseDown := 2;
ReleaseCapture;
SendMessage(Handle, WM_NCLBUTTONDOWN, HTCaption, 0);
end;
end;
//---背景上鼠标释放事件---
procedure TFormMain.ImageBookMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if (Button = mbLeft) and (g_boolPageYe) and (FnPageMouseDown <> 2) then
begin
FnPageMouseDown := 0;
if x < Trunc(ImageBook.Width / 2) then
ItemPagePrev.Click
else
ItemPageNext.Click;
end;
end;
//---页面上鼠标释放事件---
procedure TFormMain.LabelPage1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if (Button = mbLeft) and (g_boolPageYe) and (FnPageMouseDown <> 2) then
begin
FnPageMouseDown := 0;
if TLabel(Sender).Name = 'LabelPage1' then
ItemPagePrev.Click
else
ItemPageNext.Click;
end;
end;
//---向前翻页---
procedure TFormMain.ImagePagePrevClick(Sender: TObject);
begin
if FboolEdit then Exit;
ChangeYe(g_nYeCurrent - 2);
end;
//---向后翻页---
procedure TFormMain.ImagePageNextClick(Sender: TObject);
begin
if FboolEdit then Exit;
ChangeYe(g_nYeCurrent + 2);
end;
//---最小化---
procedure TFormMain.ImageMinSizeClick(Sender: TObject);
begin
FormMain.Hide;
end;
//---移动按钮上鼠标按下事件---
procedure TFormMain.ImageMoveMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
be
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -