⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.pas

📁 delphi 电子书阅读器 外观非常漂亮
💻 PAS
📖 第 1 页 / 共 5 页
字号:
	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 + -