?? main.pas
字號:
var i, j, k : integer;
begin
//顯示主窗口
ShowMainForm;
//當前沒有書簽的話,就退出
if not FboolCurrentLabel then Exit;
//檢測書簽
for j := 0 to ItemLabelInput.Count - 1 do
begin
if ((g_boolSinglePage and (g_nYeCurrent + FnYeOffset = FnLabelIndex[j])) or
((not g_boolSinglePage) and ((g_nYeCurrent = FnLabelIndex[j]) or (g_nYeCurrent + 1 = FnLabelIndex[j])))) then
begin //刪除書簽
if Confirm('刪除書簽《' + FstrLabelString[j] + '》嗎?') then
begin
//獲得最新文件索引
i := RegReadInt(c_strRegFilePath, c_strRegFilenameSort + IntToStr(FnOpenNewIndex), - 1);
//調整書簽設置
for k := j + 1 to ItemLabelInput.Count - 1 do
begin
FnLabelIndex[k - 1] := FnLabelIndex[k];
FstrLabelString[k - 1] := FstrLabelString[k];
//調整注冊表中書簽的順序
RegWriteInt(c_strRegLabelPath, IntToStr(i) + c_strRegLabel + IntToStr(k - 1), FnLabelIndex[k - 1]);
RegWriteStr(c_strRegLabelPath, IntToStr(i) + c_strRegLabelString + IntToStr(k - 1), FstrLabelString[k - 1]);
end;
//寫空記錄到注冊表
k := ItemLabelInput.Count;
FnLabelIndex[k - 1] := 0;
FstrLabelString[k - 1] := '';
RegWriteInt(c_strRegLabelPath, IntToStr(i) + c_strRegLabel + IntToStr(k - 1), FnLabelIndex[k - 1]);
RegWriteStr(c_strRegLabelPath, IntToStr(i) + c_strRegLabelString + IntToStr(k - 1), FstrLabelString[k - 1]);
//刪除菜單
ItemLabelInput.Delete(j);
if ItemLabelInput.Count <= 0 then ItemLabelInput.Enabled := False;
//調整書簽菜單
FboolCurrentLabel := False;
PanelLabel.Visible := FboolCurrentLabel;
end;
end;
end;
end;
//---指定書簽菜單---
procedure TFormMain.OnLabelInputClick(Sender: TObject);
var i, j : integer;
begin
if ItemLabelInput.Count <=0 then Exit;
j := TMenuItem(Sender).MenuIndex;
if FnLabelIndex[j] > g_nYeCount then
begin //標簽指向的頁數過大
if Confirm('此書簽指向一個無效頁碼,是否刪除此書簽?') then
begin
//調整書簽設置
for i := j + 1 to ItemLabelInput.Count - 1 do
begin
FnLabelIndex[i - 1] := FnLabelIndex[i];
FstrLabelString[i - 1] := FstrLabelString[i];
//調整注冊表中書簽順序
RegWriteInt(c_strRegLabelPath, IntToStr(FnOpenNewIndex) + c_strRegLabel + IntToStr(i - 1), FnLabelIndex[i - 1]);
RegWriteStr(c_strRegLabelPath, IntToStr(FnOpenNewIndex) + c_strRegLabelString + IntToStr(i - 1), FstrLabelString[i - 1]);
end;
//寫空記錄到注冊表
i := ItemLabelInput.Count;
FnLabelIndex[i - 1] := 0;
FstrLabelString[i - 1] := '';
RegWriteInt(c_strRegLabelPath, IntToStr(FnOpenNewIndex) + c_strRegLabel + IntToStr(i - 1), FnLabelIndex[i - 1]);
RegWriteStr(c_strRegLabelPath, IntToStr(FnOpenNewIndex) + c_strRegLabelString + IntToStr(i - 1), FstrLabelString[i - 1]);
//刪除菜單
ItemLabelInput.Delete(j);
end;
end
else
begin //書簽合法,轉到書簽的指定頁
ChangeYe(FnLabelIndex[j]);
end;
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; //下劃線左位置
FnUnderLineLocate := 1; //下劃線位置寫1
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 := FstrNewFileList.Count;
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 FstrNewFileList.Count - 1 do
begin
FstrNewFileList.Delete(0);
ItemNew.Delete(0);
end;
//最新文件索引寫 -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);
ItemPageFirst.Enabled := (g_nYeCurrent > 1);
if g_boolSinglePage then
begin
ItemPageNext.Enabled := (g_nYeCurrent + FnYeOffset < g_nYeCount);
ItemPageLast.Enabled := (g_nYeCurrent + FnYeOffset < g_nYeCount);
end
else
begin
ItemPageNext.Enabled := (g_nYeCurrent + 1 < g_nYeCount);
ItemPageLast.Enabled := (g_nYeCurrent + 1 < g_nYeCount);
end;
ItemInputYe1.Enabled := (g_nYeCount > 2);
ItemFilePrev.Enabled := (FnOpenNewIndex > 0);
ItemFileNext.Enabled := (FnOpenNewIndex > 0) and (FnOpenNewIndex < FstrNewFileList.Count - 1);
end;
//---向前翻頁菜單---
procedure TFormMain.ItemPagePrevClick(Sender: TObject);
begin
if FboolEdit then Exit;
if g_boolSinglePage then
begin
if (g_nYeCurrent + FnYeOffset >= 2) then
ChangeYe(g_nYeCurrent + FnYeOffset - 1);
end
else
begin
if (g_nYeCurrent >= 3) then
ChangeYe(g_nYeCurrent - 2);
end;
end;
//---向后翻頁菜單---
procedure TFormMain.ItemPageNextClick(Sender: TObject);
begin
if FboolEdit then Exit;
if g_boolSinglePage then
begin
if (g_nYeCurrent + FnYeOffset + 1 <= g_nYeCount) then
ChangeYe(g_nYeCurrent + FnYeOffset + 1);
end
else
begin
if (g_nYeCurrent + 2 <= g_nYeCount) then
ChangeYe(g_nYeCurrent + 2);
end;
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 >= 0) and (FnOpenNewIndex < FstrNewFileList.Count - 1) 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);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -