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

📄 ebookfrm.pas

📁 用于制作和整理(文件搜索方式)编程技术文档和各类源代码, 可以如编程工具一样分色显示程序(C++, Delphi , java, Vb, SQL ……)(用算法实现), 主要用于查找相应的类和函数
💻 PAS
📖 第 1 页 / 共 4 页
字号:
  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 + -