?? main.pas
字號(hào):
{
模塊名稱(chēng):電子小說(shuō)閱讀器
使用方法:1、Create
2、Show
返回值: 無(wú)
}
unit Main;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, Menus, ShellAPI, Buttons, ComCtrls, ImgList, Jpeg,
Clipbrd, FileCtrl, Registry, DlgText;
const
c_nTaskIcoMsg = WM_USER + 78; //托盤(pán)圖標(biāo)返回消息
c_nMaxTextRead = 90; //最大容納的文本框數(shù)
c_nRegLabelCount = 20; //最多保存書(shū)簽數(shù)
c_nBufSize = 25000; //文件讀入緩存大小
c_strVer = '版本 2.66'; //當(dāng)前版本號(hào)
type
TFormMain = class(TForm)
MenuMain: TPopupMenu;
ItemOpen: TMenuItem;
ItemSave: TMenuItem;
ItemNew: TMenuItem;
N8: TMenuItem;
ItemLib: TMenuItem;
N3: TMenuItem;
ItemDeal: TMenuItem;
ItemBIG5: TMenuItem;
ItemGB: TMenuItem;
ItemHtml: TMenuItem;
ItemChap: TMenuItem;
ItemHangD: TMenuItem;
ItemUnderLine: TMenuItem;
ItemEdit: TMenuItem;
ItemRefresh: TMenuItem;
N14: TMenuItem;
ItemSearch: TMenuItem;
ItemSearchNext: TMenuItem;
ItemLabel: TMenuItem;
ItemAddLabel: TMenuItem;
ItemEditLabel: TMenuItem;
ItemDeleteLabel: TMenuItem;
N9: TMenuItem;
ItemLabelInput: TMenuItem;
ItemInputYe: TMenuItem;
N12: TMenuItem;
ItemAutoPageMove: TMenuItem;
ItemMP3: TMenuItem;
ItemReadClip: TMenuItem;
N2: TMenuItem;
ItemSetup: TMenuItem;
N5: TMenuItem;
ItemShow: TMenuItem;
ItemMax: TMenuItem;
ItemRecordTime: TMenuItem;
ItemClearNewItem: TMenuItem;
N1: TMenuItem;
ItemAbout: TMenuItem;
N7: TMenuItem;
ItemQuit: TMenuItem;
MenuPageMove: TPopupMenu;
ItemPagePrev: TMenuItem;
ItemPageNext: TMenuItem;
N6: TMenuItem;
ItemPageFirst: TMenuItem;
ItemPageLast: TMenuItem;
N4: TMenuItem;
ItemInputYe1: TMenuItem;
N10: TMenuItem;
ItemFilePrev: TMenuItem;
ItemFileNext: TMenuItem;
MenuTime: TPopupMenu;
ItemShowTime: TMenuItem;
N11: TMenuItem;
ItemShowAlarm: TMenuItem;
MenuEdit: TPopupMenu;
ItemSaveEdit: TMenuItem;
ItemExitEdit: TMenuItem;
ImageBook: TImage;
ImageBookPic: TImage;
ImageLabel: TImage;
ImageLabelPic: TImage;
ImageUnderLine: TImage;
ImagePagePrev: TImage;
ImagePageNext: TImage;
ImageMinSize: TImage;
ImageMove: TImage;
ImageResize: TImage;
ImageMinSizePic: TImage;
ImageMovePic: TImage;
ImageResizePic: TImage;
LabelPage1: TLabel;
LabelPage2: TLabel;
LabelPageTest: TLabel;
LabelYe1Be: TLabel;
LabelYe1: TLabel;
LabelYe1Af: TLabel;
LabelYe1Test: TLabel;
LabelYe2Be: TLabel;
LabelYe2: TLabel;
LabelYe2Af: TLabel;
LabelYe2Test: TLabel;
TimeAutoUnderLine: TTimer;
TimeShowTime: TTimer;
TimeKeyDelay: TTimer;
TimeRecord: TTimer;
TimeAutoPageMove: TTimer;
TimeAutoPageScroll: TTimer;
MemoReadme: TMemo;
MemoRTFRead: TRichEdit;
ListChap1: TListBox;
ListChap2: TListBox;
PanelLabel: TPanel;
PanelShowTime: TPanel;
ImageListMenuMain: TImageList;
//---窗體事件---
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure OnMinimize(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure FormResize(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure FormHide(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
//---菜單事件---
procedure MenuMainPopup(Sender: TObject);
procedure ItemOpenClick(Sender: TObject);
procedure OnItemNewFileClick(Sender: TObject);
procedure ItemSaveClick(Sender: TObject);
procedure ItemLibClick(Sender: TObject);
procedure ItemBIG5Click(Sender: TObject);
procedure ItemEditClick(Sender: TObject);
procedure ItemRefreshClick(Sender: TObject);
procedure ItemSearchClick(Sender: TObject);
procedure ItemSearchNextClick(Sender: TObject);
procedure ItemAddLabelClick(Sender: TObject);
procedure ItemEditLabelClick(Sender: TObject);
procedure ItemDeleteLabelClick(Sender: TObject);
procedure OnLabelInputClick(Sender: TObject);
procedure ItemInputYeClick(Sender: TObject);
procedure ItemAutoPageMoveClick(Sender: TObject);
procedure ItemMP3Click(Sender: TObject);
procedure ItemReadClipClick(Sender: TObject);
procedure ItemSetupClick(Sender: TObject);
procedure ItemShowClick(Sender: TObject);
procedure ItemMaxClick(Sender: TObject);
procedure ItemRecordTimeClick(Sender: TObject);
procedure ItemClearNewItemClick(Sender: TObject);
procedure ItemAboutClick(Sender: TObject);
procedure ItemQuitClick(Sender: TObject);
procedure MenuPageMovePopup(Sender: TObject);
procedure ItemPagePrevClick(Sender: TObject);
procedure ItemPageNextClick(Sender: TObject);
procedure ItemPageFirstClick(Sender: TObject);
procedure ItemPageLastClick(Sender: TObject);
procedure ItemFilePrevClick(Sender: TObject);
procedure ItemFileNextClick(Sender: TObject);
procedure ItemShowAlarmClick(Sender: TObject);
procedure ItemShowTimeClick(Sender: TObject);
procedure ItemSaveEditClick(Sender: TObject);
procedure ItemExitEditClick(Sender: TObject);
//---圖片事件---
procedure ImageBookMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure ImageBookMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
procedure ImageBookMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure LabelPage1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure ImagePagePrevClick(Sender: TObject);
procedure ImagePageNextClick(Sender: TObject);
procedure ImageMinSizeClick(Sender: TObject);
procedure ImageMoveMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure ImageResizeMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
//---時(shí)鐘事件---
procedure TimeAutoPageMoveTimer(Sender: TObject);
procedure TimeShowTimeTimer(Sender: TObject);
procedure TimeAutoUnderLineTimer(Sender: TObject);
procedure TimeKeyDelayTimer(Sender: TObject);
procedure TimeRecordTimer(Sender: TObject);
procedure TimeAutoPageScrollTimer(Sender: TObject);
procedure ShowTime(Show : Boolean);
//---初始化事件---
procedure Init; //初始化所有東西
procedure Init_Var; //初始化變量和注冊(cè)表
procedure Init_Setup; //初始化各種設(shè)置
procedure Init_Max; //初始化窗口的最大化顯示
procedure Init_Window; //初始化窗口的位置和大小
procedure Init_Page; //初始化頁(yè)面、下劃線(xiàn)
procedure Init_Page_String; //初始化頁(yè)面的顯示內(nèi)容
procedure Init_Ye; //初始化頁(yè)碼
procedure Init_UnderLine; //初始化下劃線(xiàn)
procedure Init_Text; //初始化文本
procedure Init_BIG5; //初始化BIG5toGB
procedure Init_GB; //初始化GBtoBIG5
procedure Init_AutoGB; //初始化AutoGB
procedure Init_Html; //初始化Html
procedure Init_Chap; //初始化智能分段
procedure Init_Page_Do; //初始化頁(yè)面處理
//---打開(kāi)文件事件---
function OpenParamFile(Filename : string) : Boolean;
function OpenItemFile(Filename : string) : Boolean;
function OpenFile(Filename : string) : Boolean;
function isFileExist(Filename : string; ZipFilename : string) : Boolean;
//---其他事件---
procedure ShowMainForm;
procedure UpdateMainForm;
procedure ChangeYe(YeNumber : integer);
procedure DeleteNewItem(index : integer);
procedure InitShowMess(PosMin, PosMax : integer; Msg : string);
procedure ShowMessPos(Pos : integer);
procedure CloseShowMess;
procedure MoveUnderLine(Kind : integer);
procedure DoSearch(SearchString : string; Caps : Boolean);
function GetIndexFilename(index : integer) : string;
procedure OnMemoPageEditKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure ImageLabelMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure PanelShowTimeMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
//---系統(tǒng)變量---
FpNotify : PNotifyIconDataA; //定義托盤(pán)圖標(biāo)結(jié)構(gòu)
FboolIsMP3Show : Boolean; //MP3窗口是否顯示
FboolEdit : Boolean; //編輯狀態(tài)
FboolSaveEdit : Boolean; //保存編輯狀態(tài)
FnKeyOpenFile : integer; //使用鍵盤(pán)打開(kāi)文件的索引(將鍵碼轉(zhuǎn)換為最新文件的序號(hào))
//---對(duì)話(huà)框變量---
FDlgOpenTextFile : TOpenTextDialog; //定義打開(kāi)文件對(duì)話(huà)框
FDlgSaveTextFile : TOpenTextDialog; //定義保存文件對(duì)話(huà)框
FDlgSaveLibFile : TOpenTextDialog; //定義保存書(shū)庫(kù)文件對(duì)話(huà)框
//---窗口變量---
FnBookLeftBeMax : integer; //最大化前的窗口左位置
FnBookTopBeMax : integer; //最大化前的窗口上位置
FnBookWidthBeMax : integer; //最大化前的窗口寬度
FnBookHeightBeMax : integer; //最大化前的窗口高度
FboolBookResizeFlag : Boolean; //窗口改變大小標(biāo)志(屏蔽Form.Resize)
FnWidthAvg : Real; //窗口寬度平均值
FnHeightAvg : Real; //窗口高度平均值
//---頁(yè)面變量---
FnPage1Left : integer; //左頁(yè)面左位置
FnPage2Left : integer; //右頁(yè)面左位置
FnPageTop : integer; //頁(yè)面上位置
FnPageWidth : integer; //頁(yè)面寬度
FnPageHeight : integer; //頁(yè)面高度
FnPageNumber : integer; //頁(yè)面可存放行數(shù)
FnPageTestWidth : integer; //測(cè)試頁(yè)面的寬度
FnPageTestHeight : integer; //測(cè)試頁(yè)面的高度
FnPageMouseDown : integer; //頁(yè)面上是否有鼠標(biāo)按下
//---下劃線(xiàn)變量---
FnUnderLineNumber : integer; //下劃線(xiàn)的行數(shù)
//---文本框變量---
FMemoTextRead : array [1 .. c_nMaxTextRead] of TMemo; //最終用于顯示的文本框
FMemoPageEdit : array [1 .. 2] of TMemo; //原稿編輯窗口
FstrTextReadReady : array [1 .. c_nMaxTextRead] of string; //處理后的文本框
FstrTextReadBak : array [1 .. c_nMaxTextRead] of string; //原始的文本框
FnCountLines : integer; //總行數(shù)
FnCountTextRead : integer; //實(shí)際總文本框數(shù)
FnCurrentTextRead : integer; //當(dāng)前文本框數(shù)
FnPageLineNumber : integer; //頁(yè)起始行數(shù)
FnCountLineNumber : integer; //總文本框行數(shù)
//---書(shū)簽變量---
FnLabelLeft : integer; //書(shū)簽左位置
FnLabelTop : integer; //書(shū)簽上位置
FnLabelWidth : integer; //書(shū)簽寬度
FnLabelHeight : integer; //書(shū)簽高度
FboolCurrentLabel : boolean; //當(dāng)前有沒(méi)有書(shū)簽顯示
FItemAddLabel : TMenuItem; //書(shū)簽添加菜單
FnLabelIndex : array [0 .. c_nRegLabelCount - 1] of integer; //書(shū)簽索引
FstrLabelString : array [0 .. c_nRegLabelCount - 1] of string; //書(shū)簽說(shuō)明
//---翻頁(yè)變量---
FnPageNextLeft : integer; //右翻頁(yè)左位置
FnPageMoveWidth : integer; //翻頁(yè)寬度
FnPageMoveHeight : integer; //翻頁(yè)高度
//---自動(dòng)翻頁(yè)變量---
FboolTestAutoPage : Boolean; //測(cè)試自動(dòng)翻頁(yè)
FnPageRecordTime : integer; //測(cè)試翻頁(yè)時(shí)間
FnAutoScrollCount : integer; //自動(dòng)卷行數(shù)
//---按鈕變量---
FnBookButtonWidth : integer; //系統(tǒng)按鈕的寬度
//---頁(yè)碼變量---
FnYeLocLeft : integer; //頁(yè)碼左位置
FnYeLocTop : integer; //頁(yè)碼上位置
//---文件變量---
FpFile : File; //一般文件指針
FpLibFile : TextFile; //書(shū)庫(kù)文件指針
ItemAddNew : TMenuItem; //添加最新文件的菜單
FnCloseFileIndex : integer; //上次關(guān)閉時(shí)候的文件名索引
FstrCloseFilename : string; //上次關(guān)閉時(shí)候的文件名
FnCloseFileYe : integer; //上次關(guān)閉時(shí)候的文件頁(yè)碼
FboolOpenLibFile : Boolean; //打開(kāi)書(shū)庫(kù)文件標(biāo)志
FboolOpenFileFlag : Boolean; //正確打開(kāi)文件標(biāo)志
FnOpenFileCount : integer; //打開(kāi)的文件總數(shù)
FnOpenNewIndex : Integer; //打開(kāi)最新文件索引
FnReadnum : integer; //實(shí)際讀取文件長(zhǎng)度大小
FstrDataBuf : array [1 .. c_nBufSize + 5000] of Char; //讀文件的緩沖(加5000是因?yàn)檗D(zhuǎn)換的時(shí)候會(huì)多出一些字節(jié))
public
{ Public declarations }
procedure TaskIcoMsgDo(var Msg : TMessage); Message c_nTaskIcoMsg; //托盤(pán)圖標(biāo)的返回消息
procedure DropFiles(var Msg : TMessage); Message WM_DROPFILES; //拖動(dòng)文件消息
function DeleteDirectory(DirName : string) : boolean; //刪除目錄
end;
//---定義基本常量---
const
//---系統(tǒng)常量---
c_nDragMove = $F017; //移動(dòng)控件消息
c_strLibFile = 'blf'; //書(shū)庫(kù)文件擴(kuò)展名
c_strZipPassTempDir = '\~TaleZip'; //Zip文件臨時(shí)解壓目錄
c_strPopNewIndex = ') '; //最新文件菜單索引序號(hào)分隔符
//---窗口常量---
c_nBookLeft = 100; //窗口左位置
c_nBookTop = 50; //窗口上位置
c_nBookWidth = 556; //窗口寬度
c_nBookHeight = 380; //窗口高度
//---頁(yè)面常量---
c_nPage1Left = 33; //左頁(yè)面左位置
c_nPage2Left = 306; //右頁(yè)面左位置
c_nPageTop = 28; //頁(yè)面上位置
c_nPageWidth = 230; //頁(yè)面寬度
c_nPageHeight = 330; //頁(yè)面高度
//---書(shū)簽常量---
c_nLabelLeft = 300; //書(shū)簽左位置
c_nLabelTop = 5; //書(shū)簽上位置
c_nLabelWidth = 40; //書(shū)簽寬度
c_nLabelHeight = 90; //書(shū)簽高度
//---翻頁(yè)常量---
c_nPageNextLeft = 543; //右翻頁(yè)的左位置
c_nPageMoveWidth = 13; //翻頁(yè)寬度
c_nPageMoveHeight = 380; //翻頁(yè)寬度
//---頁(yè)碼常量---
c_nYeLocLeft = 11; //頁(yè)碼左位置
c_nYeLocTop = 8; //頁(yè)碼上位置
//---注冊(cè)表常量---
//---系統(tǒng)注冊(cè)目錄---
c_strRegPath = 'Software\Tale\ReadBook'; //系統(tǒng)目錄
c_strRegBookPath = 'Book Files'; //右鍵菜單注冊(cè)路徑
c_strRegFilePath = 'Software\Tale\ReadBook\File'; //最新文件目錄
c_strRegFontPath = 'Software\Tale\ReadBook\Font'; //字體目錄
c_strRegLabelPath = 'Software\Tale\ReadBook\Label'; //書(shū)簽?zāi)夸? c_strRegAlarmPath = 'Software\Tale\ReadBook\Alarm'; //定時(shí)提醒目錄
//---注冊(cè)標(biāo)志---
c_strRegRegFlag = '注冊(cè)';
c_strRegRegVer = '版本';
//---注冊(cè)書(shū)本設(shè)置---
c_strRegBookLeft = '窗口左位置';
c_strRegBookTop = '窗口上位置';
c_strRegBookWidth = '窗口寬度';
c_strRegBookHeight = '窗口高度';
//---注冊(cè)頁(yè)面設(shè)置---
c_strRegBookMoveFlag = '窗口移動(dòng)';
c_strRegBookResizeFlag = '窗口改變大小';
c_strRegPageMoveFlag = '點(diǎn)擊頁(yè)面移動(dòng)';
c_strRegPageYeFlag = '點(diǎn)擊頁(yè)面翻頁(yè)';
c_strRegMaxFlag = '最大化顯示';
c_strRegAutoPageMoveFlag = '自動(dòng)翻頁(yè)';
c_strRegAutoVal = '自動(dòng)翻頁(yè)時(shí)間';
c_strRegBIG5Flag = '處理BIG5碼文件標(biāo)志';
c_strRegGBFlag = '處理GB碼文件標(biāo)志';
c_strRegHtmlFlag = '處理HTML文件標(biāo)志';
c_strRegChapFlag = '智能分段標(biāo)志';
c_strRegHangDFlag = '行距加倍標(biāo)志';
c_strRegUnderLineFlag = '下劃線(xiàn)標(biāo)志';
c_strRegUnderLineColor = '下劃線(xiàn)顏色';
c_strRegUnderLineOffset = '下劃線(xiàn)距離';
c_strRegUnderLineThick = '下劃線(xiàn)寬度';
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -