?? main.pas
字號(hào):
//---注冊(cè)頁(yè)碼設(shè)置---
c_strRegYe1Be = '頁(yè)碼1前綴';
c_strRegYe1Af = '頁(yè)碼1后綴';
c_strRegYe1Loc = '頁(yè)碼1位置';
c_strRegYe1Count = '頁(yè)碼1顯示總頁(yè)數(shù)';
c_strRegYe2Be = '頁(yè)碼2前綴';
c_strRegYe2Af = '頁(yè)碼2后綴';
c_strRegYe2Loc = '頁(yè)碼2位置';
c_strRegYe2Count = '頁(yè)碼2顯示總頁(yè)數(shù)';
//---注冊(cè)系統(tǒng)設(shè)置---
c_strRegBackBmpFlag = '背景圖片';
c_strRegBackBmpFilename = '背景圖片文件';
c_strRegLabelImageFlag = '書簽圖片';
c_strRegLabelImageFilename = '書簽圖片文件';
c_strRegLabel = '書簽';
c_strRegLabelString = '書簽說明';
c_strRegShowTime = '顯示時(shí)間';
c_strRegAlarmFlag = '定時(shí)提醒';
c_strRegAlarmTime = '定時(shí)提醒時(shí)間';
c_strRegAlarmMsg = '顯示內(nèi)容';
c_strRegBtnFlat = '浮動(dòng)式按鈕';
c_strRegViewCtrl = '顯示界面控制按鈕';
c_strRegItemChangeFlag = '改變最新文件順序';
c_strRegOpenFileFlag = '打開上次關(guān)閉時(shí)候的文件';
c_strRegCloseFilename = '上次關(guān)閉文件';
c_strRegCloseFilenameIndex = '上次關(guān)閉文件索引';
c_strRegCloseFilenameYe = '上次關(guān)閉文件頁(yè)碼';
c_strRegClearLabFlag = '清除書簽信息';
c_strRegClearNewFlag = '清除最新文件';
c_strRegAutoGB = '自動(dòng)轉(zhuǎn)換為GB/BIG5碼';
c_strRegFilename = '最新文件';
c_nRegFilenameCount = 50; //最多保存最新文件數(shù)
c_strRegFilenameSort = '最新文件順序';
c_strRegYeViewFlag = '頁(yè)碼顯示';
c_strRegYeFontName = '頁(yè)碼字體';
c_strRegYeFontSize = '頁(yè)碼字體大小';
c_strRegYeFontColor = '頁(yè)碼字體顏色';
c_strRegYeFontCharset = '頁(yè)碼字體語系';
c_strRegYeFontStyle1 = '頁(yè)碼字體粗體';
c_strRegYeFontStyle2 = '頁(yè)碼字體斜體';
c_strRegYeFontStyle3 = '頁(yè)碼字體刪除線';
c_strRegYeFontStyle4 = '頁(yè)碼字體下劃線';
c_strRegPageFontName = '頁(yè)面字體';
c_strRegPageFontSize = '頁(yè)面字體大小';
c_strRegPageFontColor = '頁(yè)面字體顏色';
c_strRegPageFontCharset = '頁(yè)面字體語系';
c_strRegPageFontStyle1 = '頁(yè)面字體粗體';
c_strRegPageFontStyle2 = '頁(yè)面字體斜體';
c_strRegPageFontStyle3 = '頁(yè)面字體刪除線';
c_strRegPageFontStyle4 = '頁(yè)面字體下劃線';
var
FormMain : TFormMain;
implementation
uses
About,
Alarm,
ClearNew,
InputYe,
LabelInput,
Mess,
MoreName,
MP3Play,
Search,
Setup,
ZipPrev,
Gb2Big5,
ZipPass,
Global;
{$R *.DFM}
//----------------------------------窗口事件-------------------------------
//---建立窗口---
procedure TFormMain.FormCreate(Sender: TObject);
var i : integer;
begin
//建立托盤圖標(biāo)
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;
//建立打開文件對(duì)話框
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|' +
'書庫(kù)文件(*.blf)|*.blf|' +
'所有文件(*.*)|*.*';
FilterIndex := 1;
Options := [ofAllowMultiSelect, ofPathMustExist, ofFileMustExist];
Title := '打開小說文件';
end;
//建立保存文件對(duì)話框
FDlgSaveTextFile := TSaveTextDialog.Create(Self);
with FDlgSaveTextFile do
begin
DefaultExt := '*.txt';
Filter := '文本文件(*.txt)|*.txt';
FilterIndex := 1;
Options := [ofOverwritePrompt];
Title := '保存小說文件';
end;
//建立保存書庫(kù)對(duì)話框
FDlgSaveLibFile := TSaveTextDialog.Create(Self);
with FDlgSaveLibFile do
begin
DefaultExt := '*.' + c_strLibFile;
Filter := '書庫(kù)文件(*.' + c_strLibFile + ')|*.' + c_strLibFile;
FilterIndex := 1;
Options := [ofOverwritePrompt];
Title := '生成書庫(kù)文件';
end;
//建立文本框
for i := 1 to c_nMaxTextRead do
begin
FMemoTextRead[i] := TMemo.Create(Self);
with FMemoTextRead[i] do
begin
Top := -600;
width := 300;
Height := 500;
BorderStyle := bsSingle; //防止超出Label框
ScrollBars := ssNone;
TabStop := False;
Text := '';
Parent := FormMain;
end;
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;
//建立最小化事件
Application.OnMinimize := OnMinimize;
//能夠接受拖放文件
DragAcceptFiles(Handle, True);
//初始化頁(yè)面
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
//刪除任務(wù)欄圖標(biāo)
Shell_NotifyIcon(NIM_DELETE, FpNotify);
//刪除字體
g_YeFont.Free;
g_PageFont.Free;
//刪除對(duì)話框
FDlgOpenTextFile.Free;
FDlgSaveTextFile.Free;
FDlgSaveLibFile.Free;
//刪除文本框
for i := 1 to c_nMaxTextRead do
FMemoTextRead[i].Free;
//刪除編輯框
FMemoPageEdit[1].Free;
FMemoPageEdit[2].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;
//調(diào)整窗口位置、大小變量
g_nBookLeft := FormMain.Left;
g_nBookTop := FormMain.Top;
g_nBookWidth := FormMain.Width;
g_nBookHeight := FormMain.Height;
if g_boolSystemCall then Exit; //若為系統(tǒng)調(diào)用,則退出
Init_Window; //初始化窗口
Init_Page; //初始化頁(yè)面
//最大化顯示翻頁(yè)
if g_boolMaxYe then
begin
g_boolMaxYe := False; //寫標(biāo)志:沒有最大化顯示翻頁(yè)
ChangeYe(FnCloseFileYe); //翻到關(guān)閉時(shí)候的頁(yè)碼
end
else
begin
ChangeYe(g_nYeCurrent); //翻到指定頁(yè)
end;
end;
//---窗口鍵盤事件---
procedure TFormMain.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
case Key of
33, 37, 189 : //上一頁(yè) "PageUp" "左鍵" " - "
ImagePagePrevClick(Self);
34, 39, 187, 32 : //下一頁(yè) "PageDown" "右鍵" " + " "空格"
ImagePageNextClick(Self);
38 : //上一頁(yè) / 行 "上鍵"
if g_boolUnderLine then
MoveUnderLine(-1)
else
ItemPagePrev.Click;
40 : //下一頁(yè) / 行 "下鍵"
if g_boolUnderLine then
MoveUnderLine(1)
else
ItemPageNext.Click;
36 : //第一頁(yè) "Home"
ItemPageFirst.Click;
35 : //最后一頁(yè) "End"
ItemPageLast.Click;
8 : //回退到翻頁(yè)前的一頁(yè) "退格鍵"
ChangeYe(g_nOldYeCurrent);
188 : //上一篇小說 "<"
ItemFilePrev.Click;
190 : //下一篇小說 ">"
ItemFileNext.Click;
13, 79 : //打開文件 "Enter" "O"
ItemOpen.Click;
84 : //顯示 / 隱藏時(shí)間 "T"
begin
ShowTime(not g_boolShowTime);
end;
27 : //隱藏窗口 "Esc"
FormMain.Hide;
18 : //彈出Pop菜單 "Alt"
begin
GetCurrentMousePoint;
MenuMain.Popup(g_MousePoint.x, g_MousePoint.y);
end;
66 : //轉(zhuǎn)換為BIG5 "B"
ItemBIG5.Click;
71 : //轉(zhuǎn)換為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ù) "K"
ItemLib.Click;
76 : //增加書簽 "L"
ItemAddLabel.Click;
89 : //指定頁(yè) "Y"
ItemInputYe.Click;
65 : //自動(dòng)翻頁(yè) "A"
ItemAutoPageMove.Click;
77 : //背景音樂 "M"
ItemMP3.Click;
86 : //查看剪貼板 "V"
ItemReadClip.Click;
83 : //設(shè)置 "S"
ItemSetup.Click;
78 : //顯示 / 隱藏書本 "N"
ItemShow.Click;
73 : //最大化顯示 "I"
ItemMax.Click;
90 : //自動(dòng)翻頁(yè)測(cè)試 "Z"
ItemRecordTime.Click;
88 : //退出 "X"
ItemQuit.Click;
67 : //清除最新文件 "C"
ItemClearNewItem.Click;
48..57, 96..105 : //打開最新文件 "1..9"
begin
if TimeKeyDelay.Enabled then
begin //轉(zhuǎn)換鍵碼的第二位
if (Key >= 48) and (Key <= 57) then
FnKeyOpenFile := FnKeyOpenFile * 10 + Key - 48
else
FnKeyOpenFile := FnKeyOpenFile * 10 + Key - 96;
//關(guān)閉鍵盤延時(shí)
TimeKeyDelay.Enabled := False;
end
else
begin //轉(zhuǎn)換鍵碼的第一位
if (Key >= 48) and (Key <= 57) then
FnKeyOpenFile := Key - 48
else
FnKeyOpenFile := Key - 96;
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -