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

📄 umain.pas

📁 一个基于不需引擎的文件管理系统,使用了许多界面比较好的控件
💻 PAS
📖 第 1 页 / 共 4 页
字号:
unit uMain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, TB2Item, TBX, SpTBXItem, TB2Dock, TB2Toolbar, Menus, TBXDkPanels,
  TBXStatusBars, TBXThemes, SpTBXDkPanels, ImgList, TBXToolPals, TBXExtItems,
  StdCtrls, ComCtrls, RzEdit, SpTBXTabs, uSECData,DBTables,uDllfrmList,
  DB, ABSMain, Shellapi,TBXAluminumTheme,TBXMDI,uHintImp,uIHintInf,clipbrd,
  ExtCtrls, RzGroupBar, Commctrl, Mask, uFunction, uSecPlugInf, ufrmFavoriteCfg;

type
  Tmainfrm = class(TForm)
    TBXStatusBar1: TSpTBXStatusBar;
    SpTBXDock1: TSpTBXDock;
    Toolbar1: TTBXToolbar;
    MenuFile: TSpTBXSubmenuItem;
    itFileOpen: TSpTBXItem;
    SpTBXItem2: TSpTBXItem;
    SpTBXSeparatorItem1: TSpTBXSeparatorItem;
    SpTBXItem4: TSpTBXItem;
    SpTBXSubmenuItem2: TSpTBXSubmenuItem;
    SpTBXItem3: TSpTBXItem;
    SpTBXDock2: TTBXMultiDock;
    ImageList1: TImageList;
    SpTBXToolbar1: TSpTBXToolbar;
    TBXDockablePanel1: TTBXDockablePanel;
    ImageList2: TImageList;
    MenuView: TSpTBXSubmenuItem;
    SpTBXItem5: TSpTBXItem;
    SpTBXSeparatorItem2: TSpTBXSeparatorItem;
    SpTBXSubmenuItem4: TSpTBXSubmenuItem;
    SpTBXItem8: TSpTBXItem;
    SpTBXItem9: TSpTBXItem;
    SpTBXItem11: TSpTBXItem;
    SpTBXItem12: TSpTBXItem;
    SpTBXSeparatorItem3: TSpTBXSeparatorItem;
    SpTBXItem10: TSpTBXItem;
    SpTBXItem13: TSpTBXItem;
    SpTBXItem14: TSpTBXItem;
    SpTBXSeparatorItem4: TSpTBXSeparatorItem;
    SpTBXItem15: TSpTBXItem;
    SpTBXToolbar2: TSpTBXToolbar;
    SpTBXItem16: TSpTBXItem;
    SpTBXItem17: TSpTBXItem;
    SpTBXItem18: TSpTBXItem;
    SpTBXSubmenuItem1: TSpTBXSubmenuItem;
    SpTBXSeparatorItem5: TSpTBXSeparatorItem;
    SpTBXItem20: TSpTBXItem;
    SpTBXItem21: TSpTBXItem;
    SpTBXItem22: TSpTBXItem;
    SpTBXToolbar3: TSpTBXToolbar;
    SpTBXItem31: TSpTBXItem;
    SpTBXItem27: TSpTBXItem;
    SpTBXItem28: TSpTBXItem;
    SpTBXSeparatorItem8: TSpTBXSeparatorItem;
    SpTBXItem29: TSpTBXItem;
    SpTBXTabControl1: TSpTBXTabControl;
    SpTBXTabItem1: TSpTBXTabItem;
    SpTBXTabSheet1: TSpTBXTabSheet;
    SpTBXTabItem2: TSpTBXTabItem;
    SpTBXTabSheet2: TSpTBXTabSheet;
    FolderTree: TTreeView;
    SpTBXSubmenuItem3: TSpTBXSubmenuItem;
    SpTBXItem30: TSpTBXItem;
    SpTBXItem35: TSpTBXItem;
    SpTBXSeparatorItem9: TSpTBXSeparatorItem;
    SpTBXItem36: TSpTBXItem;
    SpTBXSeparatorItem11: TSpTBXSeparatorItem;
    SpTBXItem37: TSpTBXItem;
    SpTBXItem38: TSpTBXItem;
    MenuOther: TSpTBXSubmenuItem;
    ibAddFriend: TSpTBXItem;
    SpTBXSeparatorItem12: TSpTBXSeparatorItem;
    SpTBXItem40: TSpTBXItem;
    TBSeparatorItem1: TTBSeparatorItem;
    SpTBXLabelItem2: TSpTBXLabelItem;
    btnStatus: TSpTBXSubmenuItem;
    SpTBXItem42: TSpTBXItem;
    SpTBXItem43: TSpTBXItem;
    ibAddTask: TSpTBXItem;
    SpTBXLabelItem3: TSpTBXLabelItem;
    TBSeparatorItem2: TTBSeparatorItem;
    SpTBXLabelItem4: TSpTBXLabelItem;
    SpTBXItem45: TSpTBXItem;
    SpTBXItem46: TSpTBXItem;
    SpTBXItem47: TSpTBXItem;
    TBXPopupMenu2: TTBXPopupMenu;
    SpTBXItem48: TSpTBXItem;
    SpTBXSeparatorItem13: TSpTBXSeparatorItem;
    SpTBXSubmenuItem5: TSpTBXSubmenuItem;
    NEW2: TSpTBXItem;
    NEW1: TSpTBXItem;
    imDelNode: TSpTBXItem;
    SpTBXItem50: TSpTBXItem;
    SpTBXItem51: TSpTBXItem;
    SpTBXItem52: TSpTBXItem;
    SpTBXSeparatorItem15: TSpTBXSeparatorItem;
    SpTBXItem53: TSpTBXItem;
    TBXMDIHandler1: TTBXMDIHandler;
    Timer1: TTimer;
    RzGroupBar1: TRzGroupBar;
    RzGroup1: TRzGroup;
    RzGroup2: TRzGroup;
    SpTBXItem54: TSpTBXItem;
    mWindow: TSpTBXSubmenuItem;
    SpTBXItem55: TSpTBXItem;
    SpTBXItem56: TSpTBXItem;
    SpTBXItem57: TSpTBXItem;
    SpTBXItem6: TSpTBXItem;
    SpTBXItem7: TSpTBXItem;
    SpTBXItem23: TSpTBXItem;
    TBXSeparatorItem1: TTBXSeparatorItem;
    TBXSeparatorItem2: TTBXSeparatorItem;
    SpTBXItem24: TSpTBXItem;
    SpTBXItem25: TSpTBXItem;
    TBXSeparatorItem3: TTBXSeparatorItem;
    SpTBXItem26: TSpTBXItem;
    SpTBXItem32: TSpTBXItem;
    TBXSeparatorItem4: TTBXSeparatorItem;
    SpTBXItem33: TSpTBXItem;
    SpTBXItem34: TSpTBXItem;
    SpTBXItem58: TSpTBXItem;
    TBXSeparatorItem5: TTBXSeparatorItem;
    SpTBXItem59: TSpTBXItem;
    SpTBXItem19: TSpTBXItem;
    SpTBXItem60: TSpTBXItem;
    SpTBXItem61: TSpTBXItem;
    SpTBXSeparatorItem6: TSpTBXSeparatorItem;
    SpTBXItem62: TSpTBXItem;
    ibSaveAs: TSpTBXItem;
    SpTBXItem64: TSpTBXItem;
    SpTBXItem65: TSpTBXItem;
    TBXSeparatorItem6: TTBXSeparatorItem;
    SpTBXItem66: TSpTBXItem;
    SpTBXItem67: TSpTBXItem;
    SpTBXItem68: TSpTBXItem;
    ImageList4: TImageList;
    New3: TSpTBXItem;
    New4: TSpTBXItem;
    SpTBXSeparatorItem7: TSpTBXSeparatorItem;
    ImageList5: TImageList;
    TBXMultiDock1: TTBXMultiDock;
    PLSearch: TTBXDockablePanel;
    Panel2: TPanel;
    Panel3: TPanel;
    Panel4: TPanel;
    Panel5: TPanel;
    Panel6: TPanel;
    Label3: TLabel;
    Image2: TImage;
    Panel7: TPanel;
    Panel8: TPanel;
    Label4: TLabel;
    Panel9: TPanel;
    LvFile: TListView;
    Panel10: TPanel;
    Panel11: TPanel;
    Panel12: TPanel;
    Image1: TImage;
    Label1: TLabel;
    Panel13: TPanel;
    Label2: TLabel;
    Panel14: TPanel;
    edName: TRzEdit;
    Panel1: TPanel;
    btnOK: TTBXButton;
    SpTBXSeparatorItem10: TSpTBXSeparatorItem;
    SpTBXItem1: TSpTBXItem;
    SpTBXSeparatorItem14: TSpTBXSeparatorItem;
    itFavorite: TSpTBXSubmenuItem;
    SpTBXItem39: TSpTBXItem;
    SpTBXSeparatorItem16: TSpTBXSeparatorItem;
    procedure SpTBXItem4Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure SpTBXItem43Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure SpTBXItem40Click(Sender: TObject);
    procedure SpTBXItem38Click(Sender: TObject);
    procedure FolderTreeEdited(Sender: TObject; Node: TTreeNode;
      var S: String);
    procedure SpTBXItem48Click(Sender: TObject);
    procedure FolderTreeMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure SpTBXItem50Click(Sender: TObject);
    procedure imDelNodeClick(Sender: TObject);
    procedure NEW2Click(Sender: TObject);
    procedure NEW1Click(Sender: TObject);
    procedure FolderTreeKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure SpTBXItem51Click(Sender: TObject);
    procedure myException(Sender: TObject; E: Exception);
    procedure TBXPopupMenu2Popup(Sender: TObject);
    procedure FolderTreeExpanding(Sender: TObject; Node: TTreeNode;
      var AllowExpansion: Boolean);
    procedure SpTBXItem52Click(Sender: TObject);
    procedure SpTBXItem53Click(Sender: TObject);
    procedure ibAddTaskClick(Sender: TObject);
    procedure itFileOpenClick(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure HintPopURLClick(Sender: TObject; URL: String);
    procedure ibAddFriendClick(Sender: TObject);
    procedure RzGroup1Items0Click(Sender: TObject);
    procedure SpTBXItem54Click(Sender: TObject);
    procedure FolderTreeDblClick(Sender: TObject);
    procedure SpTBXItem47Click(Sender: TObject);
    procedure SpTBXItem55Click(Sender: TObject);
    procedure SpTBXItem56Click(Sender: TObject);
    procedure SpTBXItem57Click(Sender: TObject);
    procedure SpTBXItem28Click(Sender: TObject);
    procedure SpTBXItem6Click(Sender: TObject);
    procedure SpTBXItem3Click(Sender: TObject);
    procedure SpTBXItem12Click(Sender: TObject);
    procedure SpTBXItem11Click(Sender: TObject);
    procedure SpTBXItem26Click(Sender: TObject);
    procedure SpTBXItem23Click(Sender: TObject);
    procedure SpTBXItem7Click(Sender: TObject);
    procedure SpTBXItem32Click(Sender: TObject);
    procedure SpTBXItem61Click(Sender: TObject);
    procedure SpTBXItem60Click(Sender: TObject);
    procedure SpTBXItem20Click(Sender: TObject);
    procedure SpTBXItem21Click(Sender: TObject);
    procedure SpTBXItem22Click(Sender: TObject);
    procedure FolderTreeDragOver(Sender, Source: TObject; X, Y: Integer;
      State: TDragState; var Accept: Boolean);
    procedure FolderTreeDragDrop(Sender, Source: TObject; X, Y: Integer);
    procedure FolderTreeEditing(Sender: TObject; Node: TTreeNode;
      var AllowEdit: Boolean);
    procedure SpTBXItem66Click(Sender: TObject);
    procedure SpTBXItem62Click(Sender: TObject);
    procedure SpTBXItem15Click(Sender: TObject);
    procedure SpTBXItem68Click(Sender: TObject);
    procedure New3Click(Sender: TObject);
    procedure New4Click(Sender: TObject);
    procedure ibSaveAsClick(Sender: TObject);
    procedure SpTBXItem64Click(Sender: TObject);
    procedure SpTBXItem2Click(Sender: TObject);
    procedure SpTBXItem10Click(Sender: TObject);
    procedure btnOKClick(Sender: TObject);
    procedure LvFileDblClick(Sender: TObject);
    procedure SpTBXItem29Click(Sender: TObject);
    procedure FolderTreeCompare(Sender: TObject; Node1, Node2: TTreeNode;
      Data: Integer; var Compare: Integer);
    procedure SpTBXItem19Click(Sender: TObject);
    procedure RzGroup1Items4Click(Sender: TObject);
    procedure FolderTreeStartDrag(Sender: TObject;
      var DragObject: TDragObject);
    procedure FormDestroy(Sender: TObject);
    procedure SpTBXItem1Click(Sender: TObject);
    procedure itFavoritePopup(Sender: TTBCustomItem;
      FromLink: Boolean);
    procedure SpTBXItem39Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
    aatom:atom; 
    procedure FreeListDLL(var msg:TMessage);message WM_FreeListDll;
    procedure FreeTxtDLL(var msg:TMessage);message WM_FreeTxtDll;
    function CopySingleNode(AParentNode,ANode:TTreeNode;CopyMode:Boolean):TTreeNode;
    procedure hotkey(var msg:tmessage);message wm_hotkey;
  public
    { Public declarations }
    OprList:TOprList;
    TheOprList:IOprList;

    procedure Add3thToolsItem(Caption,Path,ID:string);
    procedure On3thToolsClick(Sender: TObject);

    procedure CreateFolderTree(Node:TTreeNode);
    function AddNode(IsFile:byte;IsChild:Boolean):TTreeNode;
    function CheckName(Level:integer;AName:string):Boolean;
    function DeleteNodeSQL:string;
    procedure RefreshNEWMenu;
    procedure RefreshTree;
    function ReNameNode(ANode:TTreeNode;var s:string):Boolean;

    procedure CreateMsg(Title,Msg:string;Idx:integer);

    procedure RefreshTaskList;
    procedure ExecTask(TaskData:PTaskData);

    procedure RefreshItemInDllfrm(AfrmType:integer;ACaption:Pchar;UpDateCaption:Boolean;index,ParentIndex:integer);
    procedure Closefrm(IDs:array of integer);

    procedure DoOnMenuDllItemClick(sender:TObject);
    procedure DoOnFavoriteItemClick(sender:TObject);
  end;

  TSecDragControlObject=class(TDragControlObject)
  protected
    function GetDragCursor(Accepted: Boolean; X, Y: Integer): TCursor; override;
  end;  

var
  mainfrm: Tmainfrm;

type
  TRefreshfrm=procedure(AfrmType:integer;ACaption:Pchar;UpDateCaption:Boolean;index,ParentIndex:integer);stdcall;
  TShowException=procedure(App:TApplication;Scr:TScreen;ErrMsg,Title:Pchar;ImageIndex:integer;Theme:TTBXTheme);stdcall;
  TShowAbout=procedure(App:TApplication;Scr:TScreen;Theme:TTBXTheme);stdcall;
  TClosefrm=procedure(IDs:array of integer);stdcall;

implementation

uses uConfingTools,uProperty, uOpenfrm;

{$R *.dfm}

procedure Tmainfrm.SpTBXItem4Click(Sender: TObject);
begin
  close;
end;
       
procedure Tmainfrm.FormShow(Sender: TObject);
begin
  TBXSetTheme('Aluminum');
  RefreshTree;
end;

procedure Tmainfrm.SpTBXItem43Click(Sender: TObject);
var
  i:integer;
begin
  for i:=0 to mainfrm.MDIChildCount-1 do
    mainfrm.MDIChildren[i].Enabled:=(TSpTBXItem(Sender).Tag=19);
  btnStatus.Caption :=TSpTBXItem(Sender).Hint;
  btnStatus.ImageIndex :=TSpTBXItem(Sender).Tag;
  SpTBXDock1.Enabled :=(TSpTBXItem(Sender).Tag=19);
  SpTBXDock2.Enabled :=(TSpTBXItem(Sender).Tag=19);
  AlphaBlend :=(TSpTBXItem(Sender).Tag=23);
end;

procedure Tmainfrm.On3thToolsClick(Sender: TObject);
var
  Path:string;
begin
  Path:=TSpTBXItem(Sender).Hint;
  Shellexecute(0,'open',Pchar(Path),'','',1);
end;

procedure Tmainfrm.Add3thToolsItem(Caption, Path, ID: string);
var
  x:TSpTBXItem;
begin
  x:=TSpTBXItem.Create(MenuOther);
  x.Caption :=Caption;
  x.Hint :=Path;
  x.Tag :=strtoint(ID);
  x.OnClick :=On3thToolsClick;
  MenuOther.Add(x);
end;

procedure Tmainfrm.FormCreate(Sender: TObject);
begin
  SECData.ABSDatabase1.DatabaseFileName:=ExtractFilePath(paramstr(0))+'\Sec.ABS';
  SECData.ABSDatabase1.Password:='password';
  try
    SECData.ABSDatabase1.Connected :=true;
    Application.OnException:=myException;
    DllfrmList:=TDllfrmList.Create;
    OprList:=TOprList.Create;
    OprList.Ownerfrm:=self;
    OprList.FolderProperty.FolderTree:=FolderTree;
    OprList.Application:=Application;
    OprList.Screen:=Screen;
    OprList.DllfrmList:=DllfrmList;
    OprList.HintWindow:=HintWindowClass;
    TheOprList:=OprList;
    RefreshTaskList;

    aatom:=globaladdatom('hot key');
    RegisterHotKey(handle,aatom,MOD_Shift or MOD_CONTROL,78);
  except
    Application.Terminate;
  end;
end;

procedure Tmainfrm.SpTBXItem40Click(Sender: TObject);
var
  frm:TToolsFrm;
begin
  frm:=TToolsFrm.Create(self);
  frm.ShowModal;
  frm.Free; 
end;

procedure Tmainfrm.SpTBXItem38Click(Sender: TObject);
var
  DllHandle:THandle;
  ShowAbout:TShowAbout;
begin
  {DllHandle:=LoadLibrary('Secfrm.dll');
  try
    if DllHandle<>0 then
    begin
      @ShowAbout:=GetProcAddress(DllHandle,'ShowAbout');
      if @ShowAbout<>nil then
        ShowAbout(Application,Screen,CurrentTheme);
    end;
  finally
    FreeLibrary(DllHandle);
  end;  }
end;

procedure Tmainfrm.CreateFolderTree(Node: TTreeNode);
var
  i,j,idx,ID,UPID:integer;
  Locked:Byte;
  folderName:string;
  IsChild:Boolean;
  IsFile:Byte;
begin
  Node:=nil;
  i:=FolderTree.Items.Count;
  idx:=-1;
  ISChild:=false;
  ID:=SECData.qryTree.fieldbyname('ID').AsInteger;
  UPID:=SECData.qryTree.fieldbyname('UPID').AsInteger;
  folderName:=SECData.qryTree.fieldbyname('Text').AsString;
  Locked:=SECData.qryTree.fieldbyname('Locked').AsInteger;
  IsFile:=SECData.qryTree.fieldbyname('IsFile').AsInteger;

  for j:=0 to i-1 do
  begin
    inc(idx);
    if UPID=FolderTree.Items[j].StateIndex then
    begin
      IsChild:=true;
      break;
    end;
  end;

  if IsChild then
    Node:=FolderTree.Items[idx];

  with FolderTree.Items.AddChild(Node,folderName) do
  begin
    StateIndex:=ID;
    ImageIndex:=2*IsFile+Locked;
    SelectedIndex:=2*IsFile+Locked;
  end;


  SECData.qryTree.Next;

  if i<SECData.qryTree.RecordCount-1 then

⌨️ 快捷键说明

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