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

📄 main.pas

📁 电子小说阅读器v2.68可用于阅读pdf.html等各种形式的文档
💻 PAS
📖 第 1 页 / 共 5 页
字号:

	//---注册页面设置---
	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 + -