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

📄 umain.pas

📁 一个基于不需引擎的文件管理系统,使用了许多界面比较好的控件
💻 PAS
📖 第 1 页 / 共 4 页
字号:
      MessageBox(mainfrm.Handle,pchar('已有相同的名称,'+TheText+'失败!'), '提示', MB_ICONASTERISK or MB_OK);
      exit;
    end;

    if NodeIsLock(FNode,true) or NodeIsLock(TheNode,true) then
      exit;

    if not TheNode.HasChildren then
    begin
      LockWindowUpdate(FolderTree.Handle);
      try
        NewNode:=CopySingleNode(FNode,TheNode,DoCopy);
        NewNode.Selected:=true;
        RefreshItemInDllfrm(integer(fmFolder),'',false,FNode.StateIndex,-1);
        if TheNode.Parent<>nil then
          RefreshItemInDllfrm(integer(fmFolder),'',false,TheNode.Parent.StateIndex,-1);
        if not DoCopy then
          TheNode.Delete;
      finally
        LockWindowUpdate(0);
      end;
    end
    else
    begin
      LockWindowUpdate(FolderTree.Handle);
      try
        NodesHasLock(TheNode,HasLockNode);
        NewNode:=CopySingleNode(FNode,TheNode,DoCopy or HasLockNode);
        NewNode.Selected:=True;

        CopyAllSubNode(NewNode,TheNode);
        RefreshItemInDllfrm(integer(fmFolder),'',false,FNode.StateIndex,-1);//刷新目标浏岚器
        if TheNode.Parent<>nil then
          RefreshItemInDllfrm(integer(fmFolder),'',false,TheNode.Parent.StateIndex,TheNode.StateIndex);//刷新拖放源的父节点浏览器,同时刷新拖放源浏览器
        if (not HasLockNode) and (not DoCopy) then
        begin
          TheNode.Delete;
        end;
      finally
        LockWindowUpdate(0);
        if HasLockNode then
        begin
          MessageBox(mainfrm.Handle,pchar('有文件已加密,这些文件未被'+TheText+'。'), '提示', MB_ICONASTERISK or MB_OK);
        end;        
      end;
    end;
  end;
end;

procedure Tmainfrm.FolderTreeEditing(Sender: TObject; Node: TTreeNode;
  var AllowEdit: Boolean);
begin
  OprList.FolderProperty.Node:=Node;
  AllowEdit:=not OprList.FolderProperty.IsLocked;
end;

function Tmainfrm.CopySingleNode(AParentNode, ANode: TTreeNode;
  CopyMode: Boolean): TTreeNode;
var
  NewID:integer;
begin
  NewId:=-1;
  if not CopyMode then
  begin
    SecData.qryTmp.Close;
    SecData.qryTmp.SQL.Clear;
    SecData.qryTmp.SQL.Text:='UpDate Folders'+#13+
                             'set UpID=:UpID,'+#13+
                             ' Pro=:Pro'+#13+
                             'where ID=:ID';
    SecData.qryTmp.ParamByName('UpID').AsInteger:=AParentNode.StateIndex;
    SecData.qryTmp.ParamByName('ID').AsInteger:=ANode.StateIndex;
    SecData.qryTmp.ParamByName('Pro').AsInteger:=AParentNode.Level+1;
  end
  else
  begin
    NewID:=OprList.GetMaxID('Folders');
    SecData.qryTmp.Close;
    SecData.qryTmp.SQL.Clear;
    SecData.qryTmp.SQL.Text:='insert into Folders(ID,UpID,Text,PWS,CreateDate,ReadOnly,Locked,Memo,Pro,IsFile)'+#13+
                             '  select :NewID,:UpID,Text,PWS,CreateDate,ReadOnly,Locked,Memo,:Pro,IsFile'+#13+
                             '  from Folders'+#13+
                             '  where ID=:ID';
    SecData.qryTmp.ParamByName('NewID').AsInteger:=NewID;
    SecData.qryTmp.ParamByName('UpID').AsInteger:=AParentNode.StateIndex;
    SecData.qryTmp.ParamByName('Pro').AsInteger:=AParentNode.Level+1;
    SecData.qryTmp.ParamByName('ID').AsInteger:=ANode.StateIndex;
  end;
  SecData.qryTmp.ExecSQL;

  result:=FolderTree.Items.AddChild(AParentNode,ANode.Text);
  result.StateIndex:=ANode.StateIndex;
  result.ImageIndex:=ANode.ImageIndex;
  result.SelectedIndex:=ANode.SelectedIndex;
  if CopyMode then
    result.StateIndex:=NewID;
end;

procedure Tmainfrm.SpTBXItem66Click(Sender: TObject);
begin
  Screen.Cursor:=crHourGlass;
  try
    OprList.OperFrm('Preview',Application.MainForm.ActiveMDIChild);
  finally
    Screen.Cursor:=crDefault;
  end;
end;

procedure Tmainfrm.SpTBXItem62Click(Sender: TObject);
begin
  Screen.Cursor:=crHourGlass;
  try
    OprList.OperFrm('Print',Application.MainForm.ActiveMDIChild);
  finally
    Screen.Cursor:=crDefault;
  end;
end;

procedure Tmainfrm.SpTBXItem15Click(Sender: TObject);
begin
  Screen.Cursor:=crHourGlass;
  try
    OprList.OperFrm('PrintDefault',Application.MainForm.ActiveMDIChild);
  finally
    Screen.Cursor:=crDefault;
  end;
end;

procedure Tmainfrm.SpTBXItem68Click(Sender: TObject);
begin
  Screen.Cursor:=crHourGlass;
  try
    OprList.OperFrm('PageSetup',Application.MainForm.ActiveMDIChild);
  finally
    Screen.Cursor:=crDefault;
  end;
end;


procedure Tmainfrm.New3Click(Sender: TObject);
var
  FNode:TTreeNode;
begin
  FNode:=AddNode(0,false);
  if FNode=nil then
    exit;
  if FNode.Parent<>nil then
    RefreshItemInDllfrm(integer(fmFolder),'',false,FNode.StateIndex,FNode.Parent.StateIndex)
  //else
    //RefreshItemInDllfrm(integer(fmFolder),'',false,FNode.StateIndex,-1);
end;

procedure Tmainfrm.New4Click(Sender: TObject);
var
  FNode:TTreeNode;
begin
  FNode:=AddNode(1,false);
  if FNode=nil then
    exit;
  if FNode.Parent<>nil then
    RefreshItemInDllfrm(integer(fmFolder),'',false,FNode.StateIndex,FNode.Parent.StateIndex)
  //else
    //RefreshItemInDllfrm(integer(fmFolder),'',false,FNode.StateIndex,-1);
end;

function Tmainfrm.ReNameNode(ANode: TTreeNode; var s: string):Boolean;
begin
  result:=false;
  if s='' then
  begin
    s:=ANode.Text;
    MessageBox(Handle, '必须键入名称。', '错误', MB_ICONHAND);
    exit;
  end;
  if (s<>ANode.Text) and CheckName(ANode.Level,s) then
  begin
    MessageBox(0, Pchar('无法重命名 '+s+':指定名称与现有名称同名。请指定另一名称。'), '错误', MB_ICONHAND);
    s:=ANode.Text;
    exit;
  end;
  SECData.UpTree.ParamByName('Text').AsString :=s;
  SECData.UpTree.ParamByName('ID').AsInteger :=ANode.StateIndex;
  SECData.UpTree.ExecSQL;

  SECData.qryTmp.Close;
  SECData.qryTmp.SQL.Clear;
  SECData.qryTmp.SQL.Text:='UpDate Favorite'+#13+
                           '  set Text=:Text'+#13+
                           'where FileID=:FileID';
  SECData.qryTmp.ParamByName('Text').AsString:=s;
  SECData.qryTmp.ParamByName('FileID').AsInteger:=ANode.StateIndex;
  SECData.qryTmp.ExecSQL;  

  OprList.FolderProperty.Node:=Anode;
  if ANode.Parent<>nil then
    RefreshItemInDllfrm(integer(fmFolder),pchar(s),true,ANode.stateIndex,ANode.Parent.StateIndex)
  else
    RefreshItemInDllfrm(integer(fmFolder),pchar(s),true,ANode.stateIndex,-1);
  OprList.RefreshwMenu(ANode.StateIndex,ANode.StateIndex,s);
  result:=true;
end;

procedure Tmainfrm.ibSaveAsClick(Sender: TObject);
begin
  Screen.Cursor:=crHourGlass;
  try
    OprList.OperFrm('SaveAsText',Application.MainForm.ActiveMDIChild);
  finally
    Screen.Cursor:=crDefault;
  end;
end;

procedure Tmainfrm.SpTBXItem64Click(Sender: TObject);
var
  i:integer;
  EmptyFileCount:integer;
begin
  EmptyFileCount:=-5;
  for i:=0 to Application.MainForm.MDIChildCount-1 do
  begin
    if TDllfrm(Application.MainForm.MDIChildren[i]).ID<0 then
    begin
      Dec(EmptyFileCount);
    end;
  end;
  OprList.OpenFile(TheOprList,EmptyFileCount-1,fsMDIChild);
end;

procedure Tmainfrm.SpTBXItem2Click(Sender: TObject);
begin
  OprList.OperFrm('ExportFile',Application.MainForm.ActiveMDIChild);
end;

procedure Tmainfrm.SpTBXItem10Click(Sender: TObject);
begin
  PLSearch.Visible:=not PLSearCh.Visible;
end;

procedure Tmainfrm.btnOKClick(Sender: TObject);
var
  s:string;
  Item:TListItem;
begin
  Screen.Cursor:=crHourGlass;
  try
    s:=edName.Text;
    s:=stringReplace(s,'*','%',[rfReplaceAll, rfIgnoreCase]);
    if pos('%',s)=0 then
      s:='%'+s+'%';
    SECData.qryTmp.Close;
    SECData.qryTmp.SQL.Clear;
    SECData.qryTmp.SQL.Text:='Select ID,UPID,Text,Pro,Locked,IsFile,CreateDate from folders'+#13+
                             ' where Text like :Text';
    SECData.qryTmp.Params[0].AsString:=s;
    SECData.qryTmp.Open;

    lvFile.Items.Clear;
    while not SecData.qryTmp.Eof do
    begin
      Item:=lvFile.Items.Add;
      Item.StateIndex:=SecData.qryTmp.fieldbyname('ID').AsInteger;
      Item.Caption:=SecData.qryTmp.fieldbyname('Text').AsString;
      Item.ImageIndex:=2*SecData.qryTmp.fieldbyname('IsFile').AsInteger+SecData.qryTmp.fieldbyname('Locked').AsInteger;
      Item.SubItems.Add(SecData.qryTmp.fieldbyname('CreateDate').AsString);

      SecData.qryTmp.Next;
    end;
    SecData.qryTmp.Close;
  finally
    Screen.Cursor:=crDefault;
  end;
end;

procedure Tmainfrm.LvFileDblClick(Sender: TObject);
var
  FID:integer;
begin
  if lvFile.Selected=nil then
    FID:=-1
  else
    FID:=lvFile.Selected.StateIndex;
  OprList.ViewNode(FID);
end;

procedure Tmainfrm.SpTBXItem29Click(Sender: TObject);
begin
  OprList.OperFrm('InsertTable',Application.MainForm.ActiveMDIChild);
end;

procedure Tmainfrm.FolderTreeCompare(Sender: TObject; Node1,
  Node2: TTreeNode; Data: Integer; var Compare: Integer);
begin
  if Node1.ImageIndex=Node2.ImageIndex then
    Compare:=CompareStr(Node1.Text,Node2.Text)
  else if Node1.ImageIndex>Node2.ImageIndex then
    Compare:=1
  else if Node1.ImageIndex<Node2.ImageIndex then
    Compare:=-1
end;

procedure Tmainfrm.SpTBXItem19Click(Sender: TObject);
begin
  OprList.OperFrm('InsHyperlink',Application.MainForm.ActiveMDIChild);
end;

procedure Tmainfrm.RzGroup1Items4Click(Sender: TObject);
begin
  TheOprList.RunListfrm(-(TRzGroupItem(Sender).Index+1),0,TRzGroupItem(Sender).Caption);
end;

{ TSecDragControlObject }

function TSecDragControlObject.GetDragCursor(Accepted: Boolean; X,
  Y: Integer): TCursor;
var
  CtrlState:byte;
begin
  if Accepted then
  begin
    CtrlState:=GetKeyState(VK_Control);
    if CtrlState and $F0=$80 then
    begin
      Screen.Cursors[20]:=GetCur('102');
      result:=20;
    end
    else if CtrlState and $F0=$00 then
    begin
      Screen.Cursors[21]:=GetCur('101');
      result:=21;
    end;
  end
  else
    result := crNoDrop;
end;

procedure Tmainfrm.FolderTreeStartDrag(Sender: TObject;
  var DragObject: TDragObject);
begin
  DragObject:=TSecDragControlObject.Create(FolderTree);
end;

procedure Tmainfrm.FormDestroy(Sender: TObject);
begin
  globalDeleteatom(aatom);
end;

procedure Tmainfrm.hotkey(var msg: tmessage);
begin
  if (msg.LParamHi=78) and (msg.LParamLo=MOD_Shift or MOD_CONTROL) then
    OprList.OpenFile(TheOprList,-1,fsNormal);
end;

procedure Tmainfrm.SpTBXItem1Click(Sender: TObject);
begin
  if FolderTree.Selected<>nil then
  begin
    Screen.Cursor:=crHourGlass;
    try
      OprList.FolderProperty.Node:=FolderTree.Selected;

      SecData.qryTmp.Close;
      SecData.qryTmp.SQL.Clear;
      SecData.qryTmp.SQL.Text:='insert into Favorite(ID,FileID,Text,PType)'+#13+
                               '  values(:ID,:FileID,:Text,:PType)';
      SecData.qryTmp.ParamByName('ID').AsInteger:=OprList.GetMaxID('Favorite');
      SecData.qryTmp.ParamByName('FileID').AsInteger:=OprList.FolderProperty.Node.StateIndex;
      SecData.qryTmp.ParamByName('Text').AsString:=OprList.FolderProperty.Node.Text;
      SecData.qryTmp.ParamByName('PType').AsInteger:=OprList.FolderProperty.IsFile;
      SecData.qryTmp.ExecSQL;
    finally
      Screen.Cursor:=crDefault;
    end;
  end;
end;

procedure Tmainfrm.itFavoritePopup(Sender: TTBCustomItem;
  FromLink: Boolean);
var
  i:integer;
  Item:TSpTBXItem;
begin
  Screen.Cursor:=crHourGlass;
  try
    for i:=itFavorite.Count-1 downto 2 do
      itFavorite.Delete(i);

    SecData.qryTmp.Close;
    SecData.qryTmp.SQL.Clear;
    SecData.qryTmp.SQL.Text:='select ID,FileID,Text from Favorite';
    SecData.qryTmp.Open;
    while not SecData.qryTmp.Eof do
    begin
      Item:=TSpTBXItem.Create(itFavorite);
      Item.Caption:=SecData.qryTmp.fieldbyname('Text').AsString;
      Item.Tag:=SecData.qryTmp.fieldbyname('ID').AsInteger;
      Item.GroupIndex:=SecData.qryTmp.fieldbyname('FileID').AsInteger;
      Item.OnClick:=DoOnFavoriteItemClick;
      itFavorite.Add(Item);
      SecData.qryTmp.Next;
    end;
    SecData.qryTmp.Close;
  finally
    Screen.Cursor:=crDefault;
  end;
end;

procedure Tmainfrm.DoOnFavoriteItemClick(sender: TObject);
begin
  TheOprList.ViewNode(TSpTBXItem(sender).GroupIndex);
end;

procedure Tmainfrm.SpTBXItem39Click(Sender: TObject);
var
  frm:TfrmFavoriteCfg;
  Node:TTreeNode;
begin
  frm:=TfrmFavoriteCfg.Create(Application);
  try
    frm.TreeView1.Images:=ImageList4;
    SecData.qryTmp.Close;
    SecData.qryTmp.SQL.Clear;
    SecData.qryTmp.SQL.Text:='select ID,FileID,Text,PType from Favorite';
    SecData.qryTmp.Open;
    while not SecData.qryTmp.Eof do
    begin
      Node:=frm.TreeView1.Items.Add(nil,SecData.qryTmp.fieldbyname('Text').AsString);
      Node.StateIndex:=SecData.qryTmp.fieldbyname('ID').AsInteger;
      Node.ImageIndex:=SecData.qryTmp.fieldbyname('PType').AsInteger*2;
      Node.SelectedIndex:=SecData.qryTmp.fieldbyname('PType').AsInteger*2;
      SecData.qryTmp.Next;
    end;
    frm.ShowModal;
  finally
    frm.Free;
  end;
end;

procedure Tmainfrm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  OprList.PlugInManager.UnLoadAllPlugIn;   
end;

end.



⌨️ 快捷键说明

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