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

📄 main.pas

📁 -个人文档管理专家V1.10版本源码
💻 PAS
📖 第 1 页 / 共 4 页
字号:
    lbl_Caption.Caption:='子类别名';
    lbl_Info.Caption :='注意字数不要超过255个ASCII字符';
    if ShowModal=mrOk then
    begin
      pi_id^:=getRandomId('IndexData');
      if srb_Borther.Checked then
      begin
        TmpNode:=sTV_Main.Items.AddObject(sTV_Main.Selected,sedt_caption.text,pi_id);
      end
      else
      begin
        TmpNode:=sTV_Main.Items.AddChildObject(sTV_Main.Selected,sedt_caption.text,pi_id);
      end;
      TmpNode.ImageIndex:=2;
      TmpNode.SelectedIndex:=TmpNode.ImageIndex;     //保持选中时和没有选中时节点图标相同
      SaveIndexNode(TmpNode,CIDNode);
      TmpNode.Selected :=True;
      TempStr:='<b>提示</b><p>'
              +'现在您可以选择添加文档,如果您想分得更细的话可以新建子类别<br><br>'
              +'如果您还想新建同级类别可以在新建子类别时选择同级类别<br>';
      DBookBrowser.DisplayModalPage('新建子类别'+sedt_caption.Text,Tempstr);
    end;
    free;
  end;
end;

procedure TMainFrm.NewDocExecute(Sender: TObject);
var
 pi_id:^integer;
 TmpNode:TTreeNode;
 ClassDoc:TClassDoc;
begin
  New(pi_id);
  if sTV_Main.Selected =nil then Exit;
  with TAddFrm.Create(self) do
  begin
    Caption:='新建文档';
    lbl_Caption.Caption:='文档名';
    lbl_Info.Caption :='注意字数不要超过255个ASCII字符';
    if ShowModal=mrOk then
    begin
      pi_id^:=getRandomId('IndexData');
      if Not IsDocNode(sTV_Main.Selected) then     //子集文档
        TmpNode:=sTV_Main.Items.AddChildObject(sTV_Main.Selected,sedt_caption.text,pi_id)
      else     //同级文档
        TmpNode:=sTV_Main.Items.AddObject(sTV_Main.Selected,sedt_caption.text,pi_id);
      TmpNode.ImageIndex:=3;
      TmpNode.SelectedIndex:=TmpNode.ImageIndex;     //保持选中时和没有选中时节点图标相同

      ClassDoc.Title:=sedt_caption.text;
      ClassDoc.Description :='在此处输入简单摘要';
      ClassDoc.MemoText :='在此处输入备注';
      ClassDoc.CreateTime:=DateToStr(Date)+' '+TimeToStr(Time);
      ClassDoc.LastModified :=ClassDoc.CreateTime;
      ClassDoc.DocText :='';
      ClassDoc.Subject :=scbb_Subject.Text;
      ClassDoc.UserID:=UserID;
      ClassDoc.HtmlMode:='默认格式';
      SaveIndexNode(TmpNode,CIDDoc);
      SaveDoc(TmpNode,ClassDoc);
      TmpNode.Selected :=True;
      spcl_Main.ActivePage:= stst_EditMode;
      mem_DocText.Text :='请在这里输入您要保存的文档...';
      mem_DocText.SelectAll;
    end;
    free;
  end;
end;

procedure TMainFrm.DelNodeExecute(Sender: TObject);
var
  TmpNode:TTreeNode;
  s_name,s_tmp:String;
begin
  TmpNode:=sTV_Main.Selected;
  if Not Assigned(TmpNode) then Exit;
  if isDocNode(tmpNode) then
  begin
    if MessageBox(handle,'真的要删除该文档记录吗?','提示',MB_OKCANCEL+MB_ICONWARNING)=IDOK then
    begin
      delNodes(tmpNode);   //如果为文档类型就在数据库删除文件
      sTV_Main.SetFocus;
    end;
  end
  else
  begin
    s_name:=tmpNode.Text;
    if tmpNode.HasChildren Then
     s_tmp:='此操作将会使 "'+s_name+'" 类别下所有子类别和子文档全部被清除,真的要删除该类别吗?'
    else
     s_tmp:='将要删除类别"'+s_name+'",真的要删除吗?';
    if MessageBox(handle,PChar(s_tmp),'提示',MB_OKCANCEL+MB_ICONWARNING)=IDOK then
      delNodes(tmpNode);

  end;
end;

procedure TMainFrm.EditNodeExecute(Sender: TObject);
var
  TmpNode:TTreeNode;
  ClassID:TClassId;
begin
  TmpNode:= sTV_Main.Selected;
  if Not Assigned(TmpNode) then Exit;
  if IsDocNode(TmpNode) then
  begin
    spcl_Main.ActivePage :=stst_EditMode;
    sBtn_Submit.Enabled:=True;
    mem_DocText.SelectAll;
  end
  else
  begin
    With TAddFrm.Create(Self) Do
    begin
      AddsFrm.Caption:='编辑类别';
      Caption:='编辑类别';
      lbl_caption.Caption:='类别名';
      lbl_info.Caption :='注意不要超过50个';
      sEdt_caption.Text :=TmpNode.Text;
      srb_Borther.Visible :=False;
      srb_Son.Visible :=False;
      if ShowModal =mrOk then
      begin
        TmpNode.Text:=sEdt_caption.Text;
        UpdateIndexNode(TmpNode);
      end;
      Free;
    end;
  end;

end;

procedure TMainFrm.At_ExportSubjectExecute(Sender: TObject);
begin
  if scbb_Subject.Text ='' then Exit;
  DBookBrowser.ExportSubjectToHtm(scbb_Subject.Text);
end;

procedure TMainFrm.At_ExportNodeExecute(Sender: TObject);
var
  PathStr,OutPathStr:String;
begin
  if Not Assigned(sTV_Main.Selected) then Exit;
  DBookBrowser.ExportNodeToHtm(sTV_Main.Selected);
end;

procedure TMainFrm.At_ExitApplicationExecute(Sender: TObject);
begin
  Application.Terminate;
end;

procedure TMainFrm.At_helpExecute(Sender: TObject);
var
  TempStr:String;
begin
  TempStr:=ExePath+'\data\help\Index.htm';
  //MessageBox(Handle,'很容易的,自己用着吧!','提示',MB_OK+MB_ICONINFORMATION);
  shellexecute(0,'Open',PChar(TempStr), '','',1);
end;

procedure TMainFrm.At_HideWindowsExecute(Sender: TObject);
begin
  Application.Minimize;
  Hide;
end;


//=============================================================================//


procedure TMainFrm.sTV_MainChange(Sender: TObject; Node: TTreeNode);
begin
  DisplayTheNode(Node);
  spcl_Main.ActivePage :=stst_ViewMode;
end;


procedure TMainFrm.scbb_SubjectChange(Sender: TObject);
var
 vv: Variant;
 HTMLDocument: IHTMLDocument2;
 s_htm:String;
 i_num1,i_num2,i:integer;
begin
  sTV_Main.Items.Clear;
  //禁止编辑模式
  mem_DocText.Lines.Clear;
  sedt_title.Text:='';
  sedt_Description.Text:='';
  sedt_memo.Text:='';
  scbb_HtmlMode.ItemIndex:=-1;
  sBtn_Submit.Enabled:=False;
  
  sBtn_Submit.Enabled:=False;
  gge_MainStatus.Progress:=0;
  gge_MainStatus.Visible:=True;
  LoadSubjectNodeData(scbb_Subject.Text,sTV_Main);
  Sleep(10);
  gge_MainStatus.Visible:=False;
  i_num1:=0;
  i_num2:=0;
  for i:=0 to sTV_Main.Items.Count-1 Do
  begin
    if isDocNode(sTV_Main.items[i]) then
      i_num1:=i_num1+1
    else
      i_num2:=i_num2+1;
  end;
  s_htm:='<html>'
       +'<head>'
       +'<title>[课题:'+scbb_Subject.Text+']</title>'
       +'<style type="text/css">'
       +'A:visited{TEXT-DECORATION: none;Color:#333333;}'
       +'A:active{TEXT-DECORATION: none;Color:#333333;}'
       +'A:hover{TEXT-DECORATION: underline;Color:red;}'
       +'A:link{text-decoration: none;Color:#000000;}'
       +'body{font-family: "Arial";font-size: 10.5pt;};'
       +'</style>'
       +'</head>'
       +'<body bgcolor="#eeeeee">'
       +'<b>课题:'+scbb_Subject.Text+'</b>'
       +'<hr>'
       +'<br>'
       +'相关记录如下...<br>'
       +'<br>'
       +'该课题总共有节点'+InttoStr(sTV_Main.Items.Count)+'个<br>'
       +'该课题总共有文档'+InttoStr(i_num1)+'个<br>'
       +'该课题总共有类别'+InttoStr(i_num2)+'个<br>'
       +'<br>'
       +'<hr>'
       +'</body>'
       +'</html>';
  vv := VarArrayCreate([0, 0], varVariant);
  vv[0]:=s_htm;
  HTMLDocument :=MainFrm.WebBrowser1.Document as IHTMLDocument2;
  HTMLDocument.Write(PSafeArray(TVarData(vv).VArray));
  HTMLDocument.Close;
end;

procedure TMainFrm.sBtn_SubmitClick(Sender: TObject);
var
  ClassDoc:TClassDoc;
  id:Integer;
begin
  if Not Assigned(sTV_Main.Selected) then
  begin
    showMessage('没有选中的文档可更新');
    Exit;
  end;
  ClassDoc.LastModified :=DateToStr(Date)+' '+TimeToStr(Time);
  ClassDoc.Title:=sedt_title.Text;
  ClassDoc.Description :=sedt_Description.Text;
  ClassDoc.MemoText:=sedt_Memo.Text;
  ClassDoc.DocText:=mem_DocText.Text;
  ClassDoc.HtmlMode:=scbb_HtmlMode.Text;
  ClassDoc.Subject:=scbb_Subject.Text;
  ClassDoc.UserID:=UserID;
  sTV_Main.Selected.Text:=sedt_title.Text;
  id:=GetNodeId(sTV_Main.Selected);
  UpdateDoc(id,ClassDoc);
  UpdateIndexNode(sTV_Main.Selected,CIDDoc);
  DisplayTheNode(sTV_Main.Selected);
  spcl_Main.ActivePage :=stst_ViewMode;
end;

procedure TMainFrm.TB_AdvanceApplyClick(Sender: TObject);
begin
  with TAdvanceFrm.Create(Self) Do
  begin
    ShowModal;
    Free;
  end;
  DBookBrowser.LoadHtmlMode;

end;

procedure TMainFrm.WebBrowser1BeforeNavigate2(Sender: TObject;
  const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
  Headers: OleVariant; var Cancel: WordBool);
var
 s_nodeText,s_tmp:String;
 i_count,i_size,i:integer;
 tmpNode:TtreeNode;
begin
 i_size:=Length(CS_LINKPL);
 tmpNode:=sTV_Main.Selected;
 if MidStr(URL,1,i_size)=CS_LINKPL then
 begin
  s_tmp:=MidStr(URL,i_size+1,(Length(URL)-i_size));
  s_tmp:=AnsiReplaceStr(s_tmp,'%20',' ');
  tmpNode:=tmpNode.getFirstChild;
  while InttoStr(tmpNode.index)<>s_tmp Do
  begin
   tmpNode:=tmpNode.getNextSibling;
  end;
  tmpNode.Selected:=True;
 end;
end;

procedure TMainFrm.Pnl_RightMainMouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
begin
  lbl_Status.Caption:='';  
end;

procedure TMainFrm.TB_NewSubjectMouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
var
  TagIndex:Integer;
begin
  TagIndex:=(Sender As TToolButton).Tag;
  Case TagIndex of
    1:lbl_Status.Caption:='新建一个课题';
    2:lbl_Status.Caption:='新建一个根类别(根目录)';
    3:lbl_Status.Caption:='新建一个子类别(子目录)';
    4:lbl_Status.Caption:='新建一个文档';
    5:lbl_Status.Caption:='编辑类别或者文档';
    6:lbl_Status.Caption:='删除一个类别或者文档';
    7:lbl_Status.Caption:='高级应用,系统设置等';
    8:lbl_Status.Caption:='将当前选中的节点导出成网页';
    9:lbl_Status.Caption:='将当前课题导出成网页';
    10:lbl_Status.Caption:='帮助主题,有任何疑问请来信 etu5@163.com';
    11:lbl_Status.Caption:='关于DBook';
    12:lbl_Status.Caption:='隐藏主窗口 -它将最小化存在于您的托盘内';
  end;
end;


//=============================================================================//




procedure TMainFrm.mnl_showClick(Sender: TObject);
begin
  if mnl_show.Caption ='显示(&S)' then
  begin
    Show;
    Application.Restore;
    Application.BringToFront;
  end
  else
  begin
    Application.Minimize;
    Hide;
  end;
end;

procedure TMainFrm.Exit1Click(Sender: TObject);
begin
  Application.Terminate;
end;

procedure TMainFrm.At_AboutExecute(Sender: TObject);
begin
  //MessageBox(Handle,'哈哈 外星人你还不认识? 打你屁股 :)','提示',MB_OK+MB_ICONINFORMATION);
  With TSplashFrm.Create(Self) Do
  begin
    sPB_Splash.Visible:=False;
    lbl_Close.Visible:=True;
    ShowModal;
    Free;
  end;
end;


procedure TMainFrm.sb_searchClick(Sender: TObject);
var
  SubjectStr,KeyStr,KeyClass,TempStr:String;
  IsLikeSearch:Boolean;
  Index:Integer;
  P_id:^Integer;
begin
  slb_SearchRecList.Items.Clear;
  FSearchList.Clear;
  SubjectStr:=scbb_Subject.Text;
  KeyStr:=sedt_Search.Text;
  if scb_like.Checked then
    IsLikeSearch:=True
  else
    IsLikeSearch:=False;
  Index:=scbb_keyclass.Items.IndexOf(scbb_keyclass.Text);
  case Index of
    0:KeyClass:='Caption';
    1:KeyClass:='Description';
    2:KeyClass:='MemoText';
    3:KeyClass:='DocText';
    4:KeyClass:='CreateTime';
    5:KeyClass:='LastModified';
  end;
  if IsLikeSearch then
    TempStr:= 'Where Subject="'+SubjectStr+'" and '+KeyClass+' like "'+KeyStr+'%"'
  else
    TempStr:= 'Where Subject="'+SubjectStr+'" and '+KeyClass+' = "'+KeyStr+'"';
  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('Select Caption,ID From DocData');
  ADOQuery1.SQL.Add(TempStr);
  ADOQuery1.Open;
  While Not ADOQuery1.Eof Do
  begin
    New(p_id);
    TempStr:=ADOQuery1.fieldByName('Caption').AsString;
    p_id^:= ADOQuery1.fieldByName('ID').AsInteger;
    slb_SearchRecList.Items.Add(TempStr);
    FSearchList.Add(p_id);
    ADOQuery1.Next;
  end;
end;

procedure TMainFrm.slb_SearchRecListClick(Sender: TObject);
var
  Index,i:Integer;
  p_id,P_tmpid:^Integer;
  ClassDoc:TClassDoc;
begin
  Index:=slb_SearchRecList.ItemIndex;
  p_id:=FSearchList.Items[Index];
  //遍历全部节点
  for i:=0 to sTV_Main.Items.Count-1 Do
  begin
    P_tmpid:=sTV_Main.Items[i].Data;
    if p_tmpid^=p_id^ then
    begin
      sTV_Main.Items[i].Selected:=True;
    end;
  end;
  {  垃圾
  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('Select * from DocData');
  ADOQuery1.SQL.Add('Where ID='+IntToStr(p_id^));
  ADOQuery1.Open;
  if ADOQuery1.RecordCount >0 then
  begin
    ClassDoc.Title:=ADOQuery1.FieldByName('Caption').AsString;
    ClassDoc.Description:=ADOQuery1.FieldByName('Description').AsString;
    ClassDoc.MemoText:=ADOQuery1.FieldByName('MemoText').AsString;
    ClassDoc.DocText:=ADOQuery1.FieldByName('DocText').AsString;
    ClassDoc.HtmlMode:=ADOQuery1.FieldByName('HtmlMode').AsString;
    ClassDoc.LastModified:=ADOQuery1.FieldByName('LastModified').AsString;
    ClassDoc.CreateTime:=ADOQuery1.FieldByName('CreateTime').AsString;
    ClassDoc.UserID:=ADOQuery1.FieldByName('UserID').AsString;
    scbb_HtmlMode.ItemIndex:=scbb_HtmlMode.Items.IndexOf(ClassDoc.HtmlMode);
    sedt_title.Text:=ClassDoc.Title;
    sedt_Description.Text:=ClassDoc.Description;
    sedt_memo.Text:=ClassDoc.MemoText;
    mem_DocText.Text:=ClassDoc.DocText;
    sBtn_Submit.Enabled:=True;
    DBookBrowser.SetHtmStr(ClassDoc);
    DBookBrowser.DisplayHtmlPage;
    spcl_Main.ActivePage :=stst_ViewMode;
  end;
  }
end;

procedure TMainFrm.sbtn_hideLeftPnlClick(Sender: TObject);
begin
  if Pnl_LeftMain.Visible=True then
  begin
    Pnl_LeftMain.Visible:=False;
    sbtn_hideLeftPnl.Caption:='显示左面板';
  end
  else
  begin
    Pnl_LeftMain.Visible:=True;
    sbtn_hideLeftPnl.Caption:='隐藏左面板';
  end;
end;



Initialization
  OleInitialize(nil);
Finalization
  try
    OleUninitialize;
  except
  end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -