?? main.pas
字號:
//---注冊頁面設置---
c_strRegBookMoveFlag = '窗口移動';
c_strRegBookResizeFlag = '窗口改變大小';
c_strRegPageMoveFlag = '點擊頁面移動';
c_strRegPageYeFlag = '點擊頁面翻頁';
c_strRegMaxFlag = '最大化顯示';
c_strRegSinglePage = '單頁顯示';
c_strRegAutoPageMoveFlag = '自動翻頁';
c_strRegAutoVal = '自動翻頁時間';
c_strRegUnMimeCodeFlag = '處理UnMimeCode文件標志';
c_strRegUnQPCodeFlag = '處理UnQPCode文件標志';
c_strRegUnHZCodeFlag = '處理UnHZCode文件標志';
c_strRegBIG5Flag = '處理BIG5碼文件標志';
c_strRegGBFlag = '處理GB碼文件標志';
c_strRegHtmlFlag = '處理HTML文件標志';
c_strRegChapFlag = '智能分段標志';
c_strRegHangDFlag = '行距加倍標志';
c_strRegUnderLineFlag = '下劃線標志';
c_strRegUnderLineColor = '下劃線顏色';
c_strRegUnderLineOffset = '下劃線距離';
c_strRegUnderLineThick = '下劃線寬度';
//---注冊頁碼設置---
c_strRegYe1Be = '頁碼1前綴';
c_strRegYe1Af = '頁碼1后綴';
c_strRegYe1Loc = '頁碼1位置';
c_strRegYe1Count = '頁碼1顯示總頁數';
c_strRegYe2Be = '頁碼2前綴';
c_strRegYe2Af = '頁碼2后綴';
c_strRegYe2Loc = '頁碼2位置';
c_strRegYe2Count = '頁碼2顯示總頁數';
//---注冊界面設置---
c_strRegBackBmpFlag = '背景圖片';
c_strRegBackBmpFilename = '背景圖片文件';
c_strRegLabelImageFlag = '書簽圖片';
c_strRegLabelImageFilename = '書簽圖片文件';
c_strRegLabel = '書簽';
c_strRegLabelString = '書簽說明';
c_strRegShowTime = '顯示時間';
c_strRegAlarmFlag = '定時提醒';
c_strRegAlarmTime = '定時提醒時間';
c_strRegAlarmMsg = '顯示內容';
c_strRegBtnFlat = '浮動式按鈕';
c_strRegViewCtrl = '顯示界面控制按鈕';
//---注冊系統設置---
c_strRegItemChangeFlag = '改變最新文件順序';
c_strRegOpenFileFlag = '打開上次關閉時候的文件';
c_strRegCloseFilename = '上次關閉文件';
c_strRegCloseFilenameIndex = '上次關閉文件索引';
c_strRegCloseFilenameYe = '上次關閉文件頁碼';
c_strRegClearLabFlag = '清除書簽信息';
c_strRegClearNewFlag = '清除最新文件';
c_strRegSimpleItem = '簡化最新文件菜單';
c_strRegAutoGB = '自動轉換為GB/BIG5碼';
c_strRegFilename = '最新文件';
c_nRegFilenameCount = 50; //最多保存最新文件數
c_strRegFilenameSort = '最新文件順序';
c_strRegYeViewFlag = '頁碼顯示';
c_strRegYeFontName = '頁碼字體';
c_strRegYeFontSize = '頁碼字體大小';
c_strRegYeFontColor = '頁碼字體顏色';
c_strRegYeFontCharset = '頁碼字體語系';
c_strRegYeFontStyle1 = '頁碼字體粗體';
c_strRegYeFontStyle2 = '頁碼字體斜體';
c_strRegYeFontStyle3 = '頁碼字體刪除線';
c_strRegYeFontStyle4 = '頁碼字體下劃線';
c_strRegPageFontName = '頁面字體';
c_strRegPageFontSize = '頁面字體大小';
c_strRegPageFontColor = '頁面字體顏色';
c_strRegPageFontCharset = '頁面字體語系';
c_strRegPageFontStyle1 = '頁面字體粗體';
c_strRegPageFontStyle2 = '頁面字體斜體';
c_strRegPageFontStyle3 = '頁面字體刪除線';
c_strRegPageFontStyle4 = '頁面字體下劃線';
c_strRegMaxFileRead = '最大容納的文件容量';
var
FormMain : TFormMain;
implementation
uses
About,
Alarm,
ClearNew,
InputYe,
LabelInput,
Mess,
MoreName,
MP3Play,
Search,
Setup,
ZipPrev,
Gb2Big5,
Decode,
ZipPass,
Global;
{$R *.DFM}
//----------------------------------窗口事件-------------------------------
//---建立窗口---
procedure TFormMain.FormCreate(Sender: TObject);
begin
//建立托盤圖標
New(FpNotify);
with FpNotify^ do
begin
Wnd := Handle;
uID := 0;
uFlags := NIF_ICON + NIF_MESSAGE + NIF_TIP;
hIcon := Icon.Handle;
uCallbackMessage := c_nTaskIcoMsg;
szTip := '電子小說閱讀器';
end;
Shell_NotifyIcon(NIM_ADD, FpNotify);
//建立字體
g_YeFont := TFont.Create;
with g_YeFont do
begin
Name := '宋體';
Size := 9;
Color := clBlack;
Charset := 134;
Style := [];
end;
g_PageFont := TFont.Create;
with g_PageFont do
begin
Name := '宋體';
Size := 9;
Color := clBlack;
Charset := 134;
Style := [];
end;
//建立打開文件對話框
FDlgOpenTextFile := TOpenTextDialog.Create(Self);
with FDlgOpenTextFile 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;
//建立保存文件對話框
FDlgSaveTextFile := TSaveTextDialog.Create(Self);
with FDlgSaveTextFile do
begin
DefaultExt := '*.txt';
Filter := '文本文件(*.txt)|*.txt';
FilterIndex := 1;
Options := [ofOverwritePrompt];
Title := '保存小說文件';
end;
//建立保存書庫對話框
FDlgSaveLibFile := TSaveTextDialog.Create(Self);
with FDlgSaveLibFile do
begin
DefaultExt := '*.' + c_strLibFile;
Filter := '書庫文件(*.' + c_strLibFile + ')|*.' + c_strLibFile;
FilterIndex := 1;
Options := [ofOverwritePrompt];
Title := '生成書庫文件';
end;
//建立編輯框1
FMemoPageEdit[1] := TMemo.Create(Self);
with FMemoPageEdit[1] do
begin
BorderStyle := bsSingle;
ScrollBars := ssNone;
Visible := False;
OnKeyDown := OnMemoPageEditKeyDown;
Parent := FormMain;
end;
//建立編輯框2
FMemoPageEdit[2] := TMemo.Create(Self);
with FMemoPageEdit[2] do
begin
BorderStyle := bsSingle;
ScrollBars := ssNone;
Visible := False;
OnKeyDown := OnMemoPageEditKeyDown;
Parent := FormMain;
end;
//建立最新文件列表
FstrNewFileList := TStringList.Create;
//建立最小化事件
Application.OnMinimize := OnMinimize;
//能夠接受拖放文件
DragAcceptFiles(Handle, True);
//初始化頁面
LabelPage1.Caption := '';
LabelPage2.Caption := '';
//初始化下劃線
with ImageUnderLine do
begin
Canvas.MoveTo(0, 0);
Canvas.LineTo(FnPageWidth, 0);
end;
//初始化程序
Init;
end;
//---卸載窗口事件---
procedure TFormMain.FormDestroy(Sender: TObject);
var i : integer;
begin
//刪除任務欄圖標
Shell_NotifyIcon(NIM_DELETE, FpNotify);
//刪除字體
g_YeFont.Free;
g_PageFont.Free;
//刪除對話框
FDlgOpenTextFile.Free;
FDlgSaveTextFile.Free;
FDlgSaveLibFile.Free;
//刪除編輯框
FMemoPageEdit[1].Free;
FMemoPageEdit[2].Free;
//清除分配給文本框數組內存
// SetLength(FMemoTextRead, 0);
// SetLength(FstrTextReadReady, 0);
// SetLength(FstrTextReadBak, 0);
//刪除文本框
for i := 1 to g_nMaxTextRead do
FMemoTextRead[i].Free;
//刪除添加的指定書簽的子菜單
for i := 0 to ItemLabelInput.Count - 1 do
ItemLabelInput.Delete(0);
//刪除添加的最新文件的子菜單、列表內容
for i := 0 to FstrNewFileList.Count - 1 do
begin
FstrNewFileList.Delete(0);
ItemNew.Delete(0);
end;
//刪除最新文件列表
FstrNewFileList.Free;
end;
//---最小化事件---
procedure TFormMain.OnMinimize(Sender: TObject);
begin
if IsWindowEnabled(Handle) then
FormMain.Hide;
end;
//---顯示窗口事件---
procedure TFormMain.FormShow(Sender: TObject);
begin
if FboolIsMP3Show then FormMP3Play.Show;
Application.Restore;
FormMain.BringToFront;
FormMain.Update;
end;
//---窗口改變大小事件---
procedure TFormMain.FormResize(Sender: TObject);
begin
//判斷是否允許改變窗口大小
if FboolBookResizeFlag then Exit;
//判斷窗口不能過小
if FormMain.Width < 2 * FnBookButtonWidth + 100 then
FormMain.Width := 2 * FnBookButtonWidth + 100;
if FormMain.Height < 3 * FnBookButtonWidth + 40 then
FormMain.Height := 3 * FnBookButtonWidth + 40;
//調整窗口位置、大小變量
g_nBookLeft := FormMain.Left;
g_nBookTop := FormMain.Top;
g_nBookWidth := FormMain.Width;
g_nBookHeight := FormMain.Height;
if g_boolSystemCall then Exit; //若為系統調用,則退出
Init_Window; //初始化窗口
Init_Page; //初始化頁面
//最大化顯示翻頁
if g_boolMaxYe then
begin
g_boolMaxYe := False; //寫標志:沒有最大化顯示翻頁
ChangeYe(FnCloseFileYe); //翻到關閉時候的頁碼
end
else
begin
ChangeYe(g_nYeCurrent); //翻到指定頁
end;
end;
//---窗口鍵盤事件---
procedure TFormMain.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
case Key of
33, 37 : //上一頁 "PageUp" "左鍵"
ItemPagePrev.Click;
34, 39, 32 : //下一頁 "PageDown" "右鍵" "空格"
ItemPageNext.Click;
38 : //上一頁 / 行 "上鍵"
if g_boolUnderLine then
MoveUnderLine(-1)
else
ItemPagePrev.Click;
40 : //下一頁 / 行 "下鍵"
if g_boolUnderLine then
MoveUnderLine(1)
else
ItemPageNext.Click;
36 : //第一頁 "Home"
ItemPageFirst.Click;
35 : //最后一頁 "End"
ItemPageLast.Click;
8 : //回退到翻頁前的一頁 "退格鍵"
ChangeYe(g_nOldYeCurrent);
109, 189 : //上一篇小說(文件) " - "
OpenDiskFile(-1);
107, 187 : //下一篇小說(文件) " + "
OpenDiskFile(1);
188 : //上一篇小說(列表) "<"
ItemFilePrev.Click;
190 : //下一篇小說(列表) ">"
ItemFileNext.Click;
13, 79 : //打開文件 "Enter" "O"
ItemOpen.Click;
84 : //顯示 / 隱藏時間 "T"
ShowTime(not g_boolShowTime);
27 : //隱藏窗口 "Esc"
FormMain.Hide;
18 : //彈出Pop菜單 "Alt"
begin
GetCurrentMousePoint;
FormMain.BringToFront;
MenuMain.Popup(g_MousePoint.x, g_MousePoint.y);
end;
66 : //轉換為BIG5 "B"
ItemBIG5.Click;
71 : //轉換為GB "G"
ItemGB.Click;
72 : //處理HTML "H"
ItemHtml.Click;
70 : //智能分段 "F"
ItemChap.Click;
68 : //行距加倍 "D"
ItemHangD.Click;
85 : //顯示下劃線 "U"
ItemUnderLine.Click;
69 : //編輯原稿 "E"
ItemEdit.Click;
75 : //生成書庫 "K"
ItemLib.Click;
76 : //增加書簽 "L"
ItemAddLabel.Click;
89 : //指定頁 "Y"
ItemInputYe.Click;
65 : //自動翻頁 "A"
ItemAutoPageMove.Click;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -