📄 ebookfrm.pas
字号:
end;
self.IsInFormatFont :=true;
end;
procedure Tmainfrm.N6Click(Sender: TObject);
//var set_frm:Tset_frm ;
begin
// set_frm:=Tset_frm.Create(nil);
self.showMsg('设置首选项');
// try
set_frm.show ;
// finally
// set_frm.Free ;
// end;
end;
procedure Tmainfrm.N2Click(Sender: TObject);
begin
self.TVW_dir.Items.BeginUpdate ;
self.TVW_dir.FullCollapse ;
self.TVW_dir.Items.EndUpdate ;
end;
procedure Tmainfrm.N1Click(Sender: TObject);
begin
self.TVW_dir.Items.BeginUpdate ;
self.TVW_dir.FullExpand;
self.TVW_dir.Items.EndUpdate ;
end;
procedure Tmainfrm.file_link;
var
Reg: TRegistry;
FileExt:String;
FileType:String;
MIMEType:String;
ExecName:String;
s,filename:string;
begin
FileExt:='.ebook';
FileType:='ebookEdit File';
MIMETYPE:=' rtf ';
ExecName:=Application.ExeName +' %1';
if ParamCount>0 then
begin
filename:='';
try
s:=GetCommandLine;
delete(s,1,length(application.ExeName)+2);
filename:=trimleft(s);
if fileexists(filename) then
self.open_dir(filename)
else
begin
showmessage('文档无法加载:'+filename);
end;
except
showmessage('文档无法加载:'+filename);
end;
end
else
begin
//注册.ebook
Reg := TRegistry.Create;
Reg.RootKey :=HKEY_CLASSES_ROOT;
Reg.OpenKey(FileExt, True);
Reg.WriteString('', FileType);
Reg.WriteString('Content Type', MIMEType);
Reg.OpenKey('shell\open\command',True);
Reg.WriteString('', ExecName);
Reg.CloseKey;
Reg.Free;
end;
end;
procedure Tmainfrm.del_all_lastfilesClick(Sender: TObject);
begin
if MessageDlg('想清空列表???',
mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin
end;
end;
procedure Tmainfrm.SaveToReg;
var
Reg: TRegistry;
begin
Reg := TRegistry.Create;
try
reg.RootKey :=HKEY_CURRENT_USER;
//from information
Reg.OpenKey('software\EbookEdit2.0\form', True);
//当前程序最大化信息写入注册表,
reg.WriteBool('max',self.WindowState=(wsMaximized));
reg.WriteInteger('top',last_form_top);
reg.WriteInteger('left',last_form_left);
reg.WriteInteger('width',last_form_width);
reg.WriteInteger('height',last_form_height);
reg.CloseKey ;
// dir_tree
reg.OpenKey('software\EbookEdit2.0\dir_tree',true);
reg.WriteBool('readonly',self.TVW_dir.ReadOnly );
reg.WriteBool('showbuttons',self.TVW_dir.ShowButtons );
reg.WriteBool('ShowRoot',self.TVW_dir.ShowRoot );
reg.WriteBool('ShowLines',self.TVW_dir.ShowLines );
reg.WriteInteger('color',self.TVW_dir.Color );
//font
reg.OpenKey('font',true);
reg.WriteInteger('size',self.TVW_dir.Font.Size );
reg.WriteInteger('color',self.TVW_dir.Font.Color );
reg.WriteInteger('charset',self.TVW_dir.Font.Charset );
reg.WriteInteger('height',self.TVW_dir.Font.Height ) ;
reg.WriteString('fontname', self.TVW_dir.Font.Name );
reg.writeinteger('pitch', integer(self.TVW_dir.Font.Pitch) );
//style
reg.OpenKey('style',true);
reg.WriteBool('bold',fsBold in self.TVW_dir.Font.Style);
reg.WriteBool('italic',fsitalic in self.TVW_dir.Font.Style);
reg.WriteBool('underline',fsUnderline in self.TVW_dir.Font.Style);
reg.WriteBool('StrikeOut',fsStrikeOut in self.TVW_dir.Font.Style);
Reg.CloseKey;
//text_show
reg.OpenKey('software\EbookEdit2.0\text_show',true);
reg.WriteBool('readonly',self.ret_show.ReadOnly );
reg.WriteInteger('color',self.ret_show.Color );
reg.CloseKey ;
finally
Reg.Free;
end;
end;
procedure Tmainfrm.LoadFromReg;
var
Reg: TRegistry;
begin
Reg := TRegistry.Create;
try
reg.RootKey :=HKEY_CURRENT_USER;
if Reg.OpenKey('software\EbookEdit2.0',false) then
begin
//form
if (reg.OpenKey('form',false))then
begin
SELF.Top:=reg.ReadInteger('top');
self.Left :=reg.ReadInteger('left');
self.Height :=reg.ReadInteger('height');
self.Width :=reg.ReadInteger('width');
if reg.ReadBool ('max') then//最大化窗体
begin
self.WindowState:=(wsMaximized);
end
end;
reg.CloseKey ;
// dir_tree
if reg.OpenKey('software\EbookEdit2.0\dir_tree',false)then
begin
self.TVW_dir.ReadOnly:=reg.readBool('readonly');
self.TVW_dir.ShowButtons:=reg.readBool('showbuttons' );
self.TVW_dir.ShowRoot:=reg.readBool('ShowRoot' );
self.TVW_dir.ShowLines:= reg.readBool('ShowLines');
self.TVW_dir.Color:=reg.readInteger('color');
//font
if ( reg.OpenKey('font',false)) then
begin
self.TVW_dir.Font.Size:=reg.readInteger('size' );
self.TVW_dir.Font.Color:= reg.readInteger('color');
self.TVW_dir.Font.Charset:= reg.readInteger('charset');
self.TVW_dir.Font.Height:=reg.readInteger('height' ) ;
self.TVW_dir.Font.Name:=reg.readString('fontname' );
self.TVW_dir.Font.Pitch:=TFontPitch(reg.readinteger('pitch'));
//style
if (reg.OpenKey('style',false)) then
begin
self.TVW_dir.Font.Style:=[];
if (reg.readBool('bold')) then
self.TVW_dir.Font.Style :=self.TVW_dir.Font.Style+[fsbold];
if (reg.readBool('italic')) then
self.TVW_dir.Font.Style :=self.TVW_dir.Font.Style
+[fsitalic];
if (reg.readBool('underline')) then
self.TVW_dir.Font.Style :=self.TVW_dir.Font.Style
+[fsunderline];
if (reg.readBool('StrikeOut')) then
self.TVW_dir.Font.Style :=self.TVW_dir.Font.Style
+[fsStrikeOut];
end;
end;
end;
reg.CloseKey ;
//text_show
reg.OpenKey('software\EbookEdit2.0\text_show',true);
self.ret_show.ReadOnly :=reg.readBool('readonly');
self.btn_readonly.Checked := self.ret_show.ReadOnly ;
self.ret_show.Color:=reg.readInteger('color' );
reg.CloseKey ;
end
else
begin
Reg.CloseKey;
self.SaveToReg ;
end;
finally
Reg.Free;
end;
end;
procedure Tmainfrm.ret_showSelectionChange(Sender: TObject);
var KeyStates:TKeyboardState;
begin
if (IsInFormatFont ) then
begin
GetKeyboardState(KeyStates);
self.ret_show.SelAttributes.Assign(ForMatFont );
ret_show.SelAttributes.Height:=ForMatFont.Height ;
if not (KeyStates[VK_CONTROL] in [128,129]) then
begin
//完成格式刷任务
ret_show.Cursor:=crdefault;
IsInFormatFont:=false;
end;
end;
end;
procedure Tmainfrm.btn_cut_fileClick(Sender: TObject);
begin
cut_node:=self.TVW_dir.Selected ;
if cut_node<>nil then
self.showMsg('剪切节点/文件',cut_node.Text +filetype)
else
self.showMsg('剪切节点/文件','没有选择节点');
end;
procedure Tmainfrm.btn_paste_fileClick(Sender: TObject);
var sourcenode,source_parentnode:TTreenode;
targetNode, temp_targetNode:TTreenode;
begin
sourcenode:=cut_node;
targetNode:=self.TVW_dir.Selected ;
if sourcenode<>nil then
begin
temp_targetnode:=targetnode;
while (temp_TargetNode.Parent <> nil) and (temp_TargetNode <> SourceNode) do
temp_TargetNode := temp_TargetNode.Parent;
if temp_TargetNode = SourceNode then
begin
showmessage('不能剪切到它的子节点中去!');
cut_node:=nil;
end
else
begin
source_parentnode:= sourcenode.Parent ;
sourcenode.MoveTo (targetnode,nainsert);
cut_node:=nil;
self.set_node_image(source_parentnode ) ;
end;
end;
end;
procedure Tmainfrm.Menu_dirPopup(Sender: TObject);
begin
if cut_node=nil then
self.btn_paste_file.Enabled :=false
else
self.btn_paste_file.Enabled :=true;
if self.TVW_dir.Selected <>nil then
self.btn_cut_file.Enabled := true
else
self.btn_cut_file.Enabled :=false;
end;
procedure Tmainfrm.TVW_dirKeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
begin
self.TVW_dirclick(nil);
self.TVW_dir.Selected.Expand(true);
end;
end;
procedure Tmainfrm.N20Click(Sender: TObject);
begin
self.TVW_dir.SortType :=stnone;
self.TVW_dir.SortType :=sttext;
end;
procedure Tmainfrm.FinishDropped(var Msg: TMessage);
Var
hDrop : THandle ;
iFile:Uint;
lpszFile :pchar;
CountOfFiles : integer ;
FileIndex : integer ;
ReSults : string ;
begin
hDrop := Msg.WParam ;
getmem(lpszfile,255);
iFile:=$FFFFFFFF;
CountOfFiles := DragQueryFile(hDrop,iFile,lpszFile,254);
ReSults := '' ;
for FileIndex := 0 to CountOfFiles-1 do
begin
iFile:=FileIndex;
DragQueryFile(hDrop,iFile,lpszFile,254);
ReSults :=lpszFile ;
break;
end ;
if results<>'' then
begin
if ExtractFileExt(results )='.ebook' then
begin
self.open_dir(results);
end
else
showmessage('出现不支持文件格式:'+#13+ExtractFileExt(results ));
end
else
begin
showmessage('未得到文件!');
end;
Dispose(lpszFile);
DragFinish ( hDrop);
end ;
procedure Tmainfrm.FormResize(Sender: TObject);
begin
self.showdir ;
if (top<>0)and (left<>0)and (height<>580)and(width<>808) then
begin
last_form_top:=top;
last_form_width:=width;
last_form_left:=left;
last_form_height:=height;
end;
end;
procedure Tmainfrm.find_node(start_index: integer; key: string);
var i,findIndex:integer;
begin
if key<>'' then
begin
find_node_key:=key;
key:=AnsiLowerCase(key);
findIndex:=-1;
for i:=start_index to self.TVW_dir.Items.Count -1 do
begin
if pos(key,AnsiLowerCase(self.TVW_dir.Items[i].Text) )<>0 then
begin
findIndex:=i;
break;
end;
end;
if findIndex= -1 then//没有查到
begin
MessageBeep(MB_ICONSTOP);
end
else
self.open_file(self.TVW_dir.Items [findindex]);
end
else
showmessage('空串无效!');
end;
procedure Tmainfrm.N24Click(Sender: TObject);
var key:string;
begin
key:=find_node_key;
if InputQuery('您正在查找节点...',
'输入关键字: '+#13+'(从当前选择节点往下找...) ', key) then
begin
self.find_node(self.get_node_index (self.TVW_dir.Selected.Text )+1,key);
end;
end;
procedure Tmainfrm.N26Click(Sender: TObject);
begin
if self.TVW_dir.Selected<>nil then
self.find_node(self.get_node_index (self.TVW_dir.Selected.Text )+1,
find_node_key);
end;
function Tmainfrm.get_node_index(node_text:string): integer;
var i :integer;
begin
result:=-1;
for i:=0 to self.TVW_dir.Items.Count -1 do
begin
if node_text=self.TVW_dir.Items[i].Text then
begin
result:=i;
break;
end;
end;
end;
procedure Tmainfrm.MM_findallClick(Sender: TObject);
begin
self.FindDialog.FindText :=self.find_text_key ;
finddialog.Execute ;
findDialog.Tag :=1;// 设置为 find All Files
end;
procedure Tmainfrm.find_text_in_all_file;
var selStart,selLength:integer;
PLname:string;
var i:integer;
var selectedindex:integer;
s:string;
begin
PLname:=self.PLCon.PLName ;
self.PLCon.reset ;
self.ret_show.Lines.BeginUpdate ;
self.TVW_dir.Items.BeginUpdate ;
if self.find_text_key<>'' then
begin
self.showMsg('查找字符串','在所有文件中');
while true do
begin
if (self.find_text =false)then //没有查找到关键字
begin
if self.PclOperation.ActivePageIndex =0 then
begin
////////////////////////////////////////////////////////////////////
//树状目录
if self.TVW_dir.Selected.GetNext<>nil then
begin
self.open_file(self.TVW_dir.Selected.GetNext);
end
else//所有文件都查完了
begin
if PLName<>'' then
self.PLcon.loadfromInifile(self.PLconfigfile ,PLName );
self.open_file(self.TVW_dir.Selected );
messagebeep(0);
break;
end;
end
else
/////////////////////////////////////////////////////////////////////////////
//搜索列表
begin
selectedindex:=-1;
for i:=0 to self.Lbx_searchfile.Items.Count -1 do
begin
if self.Lbx_searchfile.Selected[i] then
begin
selectedindex:=i;
end;
end;
if selectedindex<self.Lbx_searchfile.Items.Count -1 then
begin
self.Lbx_searchfile.Selected[selectedindex]:=false;
self.Lbx_searchfile.Selected[selectedindex+1]:=true;
s:=self.Lbx_searchfile.Items [selectedindex+1];
self.open_file(self.TVW_dir.Items.Item[
self.gettreenodeindex(self.TVW_dir.Selected.Index ,s)
])
end
else//所有文件都查完了
begin
if PLName<>'' then
self.PLcon.loadfromInifile(self.PLconfigfile ,PLName );
self.open_file(self.TVW_dir.Selected );
messagebeep(0);
break;
end;
end;
end
else //查找到关键字
begin
if PLName<>'' then
begin
selstart:=self.ret_show.SelStart ;
selLength:=self.ret_show.SelLength ;
self.PLcon.loadfromInifile(self.PLconfigfile ,PLName );
self.open_file(self.TVW_dir.Selected );
self.ret_show.selstart:=SelStart ;
self.ret_show.selLength:=SelLength ;
ret_show.Perform(EM_SCROLLCARET, 0, 0);
end;
break;
end;
end;
end;
self.TVW_dir.Items.EndUpdate ;
self.ret_show.Lines.EndUpdate ;
self.file_ischange := false;
self.PLCon.PLname:=PLName ;
end;
procedure Tmainfrm.N31Click(Sender: TObject);
begin
if self.save_dir then
begin
showmessage('保存成功!');
end
else
begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -