📄 main.pas
字号:
c_nLabelWidth = 40; //书签宽度
c_nLabelHeight = 90; //书签高度
//---翻页常量---
c_nPageNextLeft = 543; //右翻页的左位置
c_nPageMoveWidth = 13; //翻页宽度
c_nPageMoveHeight = 380; //翻页宽度
//---页码常量---
c_nYeLocLeft = 11; //页码左位置
c_nYeLocTop = 8; //页码上位置
//---注册表常量---
//---系统注册目录---
c_strRegPath = 'Software\Tale\ReadBook'; //系统目录
c_strRegBookPath = 'Book Files'; //右键菜单注册路径
c_strRegFilePath = 'Software\Tale\ReadBook\File'; //最新文件目录
c_strRegFontPath = 'Software\Tale\ReadBook\Font'; //字体目录
c_strRegLabelPath = 'Software\Tale\ReadBook\Label'; //书签目录
c_strRegAlarmPath = 'Software\Tale\ReadBook\Alarm'; //定时提醒目录
//---注册标志---
c_strRegRegFlag = '注册';
c_strRegRegVer = '版本';
//---注册书本设置---
c_strRegBookLeft = '窗口左位置';
c_strRegBookTop = '窗口上位置';
c_strRegBookWidth = '窗口宽度';
c_strRegBookHeight = '窗口高度';
//---注册页面设置---
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_strRegCheckText = '校验文件错误';
c_strRegSaveTempFile = '关闭时保存临时文件';
c_strRegLanguageDLL = '外挂语言库文件';
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
//多语言文字
Self.Font.Charset := GetCharset;
Application.Title := GetWord('电子小说阅读器');
Self.Caption := GetWord('电子小说阅读器');
ItemOpen.Caption := GetWord('打开文件') + c_strItemMore;
ItemSave.Caption := GetWord('保存文件') + c_strItemMore;
ItemNew.Caption := GetWord('最新文件');
ItemLib.Caption := GetWord('生成书库文件') + c_strItemMore;
ItemUnite.Caption := GetWord('生成合并文件') + c_strItemMore;
ItemDeal.Caption := GetWord('文件处理');
ItemBIG5.Caption := GetWord('BIG5码转换为GB码');
ItemGB.Caption := GetWord('GB码转换为BIG5码');
ItemHtml.Caption := GetWord('处理HTML文件');
ItemChap.Caption := GetWord('智能分段');
ItemHangD.Caption := GetWord('行距加倍');
ItemUnderLine.Caption := GetWord('显示下划线');
ItemEdit.Caption := GetWord('编辑');
ItemRefresh.Caption := GetWord('刷新');
ItemSearch.Caption := GetWord('查找') + c_strItemMore;
ItemSearchNext.Caption := GetWord('查找下一个');
ItemDecode.Caption := GetWord('编码处理');
ItemUnMimeCode.Caption := GetWord('处理MIME/BASE64编码');
ItemUnQPCode.Caption := GetWord('处理Quoted-Printable编码');
ItemUnHZCode.Caption := GetWord('处理HZ编码');
ItemLabel.Caption := GetWord('书签处理');
ItemAddLabel.Caption := GetWord('添加书签') + c_strItemMore;
ItemEditLabel.Caption := GetWord('修改书签') + c_strItemMore;
ItemDeleteLabel.Caption := GetWord('删除书签') + c_strItemMore;
ItemLabelInput.Caption := GetWord('指定书签');
ItemInputYe.Caption := GetWord('指定页') + c_strItemMore;
ItemAutoPageMove.Caption := GetWord('自动翻页');
ItemMP3.Caption := GetWord('背景音乐');
ItemReadClip.Caption := GetWord('查看剪贴板');
ItemSetup.Caption := GetWord('设置') + c_strItemMore;
ItemShow.Caption := GetWord('显示书本');
ItemMax.Caption := GetWord('最大化显示');
ItemRecordTime.Caption := GetWord('开始自动翻页测试');
ItemClearNewItem.Caption := GetWord('清除最新文件') + c_strItemMore;
ItemAbout.Caption := GetWord('关于') + c_strItemMore;
ItemQuit.Caption := GetWord('退出');
ItemPagePrev.Caption := GetWord('上一页');
ItemPageNext.Caption := GetWord('下一页');
ItemPageFirst.Caption := GetWord('第一页') + ' Home';
ItemPageLast.Caption := GetWord('最后一页') + ' End';
ItemInputYe1.Caption := GetWord('指定页') + c_strItemMore + ' Ctrl+Y';
ItemFilePrev.Caption := GetWord('上一篇小说') + ' <';
ItemFileNext.Caption := GetWord('下一篇小说') + ' >';
ItemShowAlarm.Caption := GetWord('定时提醒') + c_strItemMore;
ItemShowTime.Caption := GetWord('不显示时间');
ItemSaveEdit.Caption := GetWord('保存修改');
ItemExitEdit.Caption := GetWord('放弃修改');
ImagePagePrev.Hint := GetWord('上一页');
ImagePageNext.Hint := GetWord('下一页');
ImageMove.Hint := GetWord('移动书本');
ImageResize.Hint := GetWord('改变书本大小');
ImageMinSize.Hint := GetWord('最小化');
//建立托盘图标
New(FpNotify);
with FpNotify^ do
begin
Wnd := Handle;
uID := 0;
uFlags := NIF_ICON + NIF_MESSAGE + NIF_TIP;
hIcon := Icon.Handle;
uCallbackMessage := c_nTaskIcoMsg;
szTip := 'Book';
end;
Shell_NotifyIcon(NIM_ADD, FpNotify);
//建立字体
g_YeFont := TFont.Create;
with g_YeFont do
begin
Name := '宋体';
Size := 9;
Color := clBlack;
Charset := GetCharset;
Style := [];
end;
g_PageFont := TFont.Create;
with g_PageFont do
begin
Name := '宋体';
Size := 9;
Color := clBlack;
Charset := GetCharset;
Style := [];
end;
//建立打开文件对话框
FDlgOpenTextFile := TOpenTextDialog.Create(Self);
with FDlgOpenTextFile do
begin
Filter := GetWord('所有小说文件') + '|*.txt;*.htm;*.html;*.rtf;*.ini;*.zip;*.gb;*.blf|' +
GetWord('文本文件') + '(*.txt)|*.txt|' +
GetWord('HTML文件') + '(*.htm, *.html)|*.htm;*.html|' +
GetWord('RTF文件') + '(*.rtf)|*.rtf|' +
GetWord('INI文件') + '(*.ini)|*.ini|' +
GetWord('ZIP文件') + '(*.zip)|*.zip|' +
GetWord('GB文件') + '(*.gb)|*.gb|' +
GetWord('书库文件') + '(*.blf)|*.blf|' +
GetWord('所有文件') + '(*.*)|*.*';
FilterIndex := 1;
Options := [ofAllowMultiSelect, ofPathMustExist, ofFileMustExist];
Title := GetWord('打开小说文件');
end;
//建立保存文件对话框
FDlgSaveTextFile := TSaveTextDialog.Create(Self);
with FDlgSaveTextFile do
begin
DefaultExt := '*.txt';
Filter := GetWord('文本文件') + '(*.txt)|*.txt';
FilterIndex := 1;
Options := [ofOverwritePrompt];
Title := GetWord('保存小说文件');
end;
//建立保存书库文件对话框
FDlgSaveLibFile := TSaveTextDialog.Create(Self);
with FDlgSaveLibFile do
begin
DefaultExt := '*.' + c_strLibFile;
Filter := GetWord('书库文件') + '(*.' + c_strLibFile + ')|*.' + c_strLibFile;
FilterIndex := 1;
Options := [ofOverwritePrompt];
Title := GetWord('生成书库文件');
end;
//建立保存合并文件对话框
FDlgSaveUniteFile := TSaveTextDialog.Create(Self);
with FDlgSaveUniteFile do
begin
DefaultExt := '*.txt';
Filter := GetWord('文本文件') + '(*.txt)|*.txt';
FilterIndex := 1;
Options := [ofOverwritePrompt];
Title := GetWord('生成合并文件');
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;
FDlgSaveUniteFile.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;
//取消接受拖放文件
DragAcceptFiles(Handle, False);
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;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -