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

📄 ulistboxfrm.pas

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

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls,TB2Item,uIHintInf,uDllfrmList,TB2Dock, TB2Toolbar,SpTBXItem,
  TBXDkPanels,ComCtrls,ImgList, Menus,uExpMgr, TBX,TBXAluminumTheme,uSecPlugInf,
  RzListVw, ExtCtrls, RzPanel, RzSplit, ValEdit, TB2ToolWindow, Grids, uFunction,
  TBXThemes;

type
  TListBoxfrm = class(TDllFrm)
    SpTBXDock1: TSpTBXDock;
    SpTBXToolbar1: TTBXToolbar;
    imAdd: TSpTBXSubmenuItem;
    ListWindow: TListView;
    ImageList1: TImageList;
    SpTBXItem2: TSpTBXItem;
    SpTBXItem3: TSpTBXItem;
    ImageList2: TImageList;
    ImageList3: TImageList;
    SpTBXSubmenuItem1: TSpTBXSubmenuItem;
    SpTBXItem4: TSpTBXItem;
    SpTBXItem5: TSpTBXItem;
    SpTBXItem6: TSpTBXItem;
    SpTBXItem7: TSpTBXItem;
    SpTBXItem8: TSpTBXItem;
    SpTBXSeparatorItem1: TSpTBXSeparatorItem;
    PopMenu: TTBXPopupMenu;
    SpTBXItem9: TSpTBXItem;
    SpTBXItem10: TSpTBXItem;
    SpTBXItem11: TSpTBXItem;
    SpTBXSeparatorItem3: TSpTBXSeparatorItem;
    SpTBXItem14: TSpTBXItem;
    SpTBXDock2: TSpTBXDock;
    TBXPopupMenu1: TTBXPopupMenu;
    TBXItem2: TTBXItem;
    TBXItem1: TTBXItem;
    SpTBXDock3: TSpTBXDock;
    PanSearch: TTBXDockablePanel;
    TBXToolWindow1: TTBXToolWindow;
    TBXAlignmentPanel1: TTBXAlignmentPanel;
    Label2: TLabel;
    TBXButton1: TTBXButton;
    RzSizePanel1: TRzSizePanel;
    VL: TValueListEditor;
    ListView1: TListView;
    Panel1: TPanel;
    Label1: TLabel;
    Image1: TImage;
    SpTBXItem15: TSpTBXItem;
    SpTBXSeparatorItem2: TSpTBXSeparatorItem;
    SpTBXSeparatorItem4: TSpTBXSeparatorItem;
    SpTBXItem12: TSpTBXItem;
    SpTBXItem13: TSpTBXItem;
    SpTBXItem16: TSpTBXItem;
    SpTBXItem17: TSpTBXItem;
    SpTBXSeparatorItem5: TSpTBXSeparatorItem;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure SpTBXItem4Click(Sender: TObject);
    procedure SpTBXItem8Click(Sender: TObject);
    procedure imAddClick(Sender: TObject);
    procedure SpTBXItem3Click(Sender: TObject);
    procedure ListWindowDblClick(Sender: TObject);
    procedure SpTBXItem2Click(Sender: TObject);
    procedure ListWindowMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure SpTBXSubmenuItem1Click(Sender: TObject);
    procedure PopMenuPopup(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure SpTBXItem14Click(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure TBXButton1Click(Sender: TObject);
    procedure ListView1DblClick(Sender: TObject);
    procedure TBXItem2Click(Sender: TObject);
    procedure TBXItem1Click(Sender: TObject);
    procedure PanSearchClose(Sender: TObject);
    procedure SpTBXItem15Click(Sender: TObject);
    procedure ListWindowColumnClick(Sender: TObject; Column: TListColumn);
    procedure ListWindowCompare(Sender: TObject; Item1, Item2: TListItem;
      Data: Integer; var Compare: Integer);
  private
    { Private declarations }
    PlugToolBar:TTBXToolbar;
    PlugList:TInterfaceList;
    IsAscending:Boolean;
    procedure Search;
  protected

  public
    { Public declarations }
    ExpMgr:TExpMgr;
    procedure InitData;override;
    procedure AfterInitData;override;
    procedure DoPlugExecute(sender:TObject);
    procedure DoPlugAction(sender:TObject);
    procedure DoDrawMenuItem(Sender: TObject; ACanvas: TCanvas;
      ARect: TRect; ItemInfo: TTBXItemInfo;
      const PaintStage: TSpTBXPaintStage; var PaintDefault: Boolean);

    procedure AddSubMenu;
    procedure DoOnAddSubMenuClick(sender:TObject);
    procedure CreatePlugBtn(ASecPlug:ISecPlug);
    procedure DeletePlugBtn(AName:widestring);
    destructor Destroy; override;
  end;

implementation

{$R *.dfm}

procedure TListBoxfrm.FormClose(Sender: TObject; var Action: TCloseAction);
var
  i:integer;
begin
  i:=DllfrmList.DllList.IndexOf(self);
  if i<>-1 then
    DllfrmList.DllList.Delete(i);
  Action:=cafree;
end;

procedure TListBoxfrm.SpTBXItem4Click(Sender: TObject);
begin
  case TSpTBXItem(Sender).Tag of
    1:
    begin
      ListWindow.ViewStyle:=vsIcon;
      SpTBXItem17.Checked:=true;
      SpTBXItem4.Checked:=true;
    end;
    2:
    begin
      ListWindow.ViewStyle:=vsSmallIcon;
      SpTBXItem16.Checked:=true;
      SpTBXItem5.Checked:=true;
    end;
    3:
    begin
      ListWindow.ViewStyle:=vsList;
      SpTBXItem13.Checked:=true;
      SpTBXItem6.Checked:=true;
    end;
    4:
    begin
      ListWindow.ViewStyle:=vsReport;
      SpTBXItem12.Checked:=true;
      SpTBXItem7.Checked:=true;
    end;
  end;
end;

procedure TListBoxfrm.SpTBXItem8Click(Sender: TObject);
begin
  ListWindow.Arrange(arDefault);
  ExpMgr.RefreshList;
end;

procedure TListBoxfrm.imAddClick(Sender: TObject);
begin
  if ExpMgr is TExpFolderMgr then
  begin
    ExpMgr.ITheOprList.AddNode(ExpMgr.Params[0],0);
    ExpMgr.RefreshList;
  end
  else
  begin
    if ExpMgr.ITheOprList.Createfrm(nil,cdAdd,ExpMgr.ThefrmType) then
    begin
      ExpMgr.RefreshList;
    end;
  end;
end;

procedure TListBoxfrm.SpTBXItem3Click(Sender: TObject);
begin
  if ListWindow.Selected<>nil then
    if ExpMgr.ITheOprList.Createfrm(ListWindow.Selected.Data,cdEdit,ExpMgr.ThefrmType) then
    begin
      ExpMgr.RefreshList;
    end;
end;

procedure TListBoxfrm.ListWindowDblClick(Sender: TObject);
begin
  if ListWindow.Selected<>nil then
    ExpMgr.ExecWhenDBClick(ListWindow.Selected.Data);
end;

procedure TListBoxfrm.SpTBXItem2Click(Sender: TObject);
var
  i:integer;
  msgText:string;
begin
  if ListWindow.Selected<>nil then
  begin
    if ListWindow.SelCount>1 then
    begin
      msgText:='确实要把这'+inttostr(ListWindow.SelCount)+'项删除吗?'
    end
    else
    begin
      msgText:='确实要把“'+ListWindow.Selected.Caption+'”删除吗?'
    end;

    if (MessageBox(Handle,pchar(msgText), '提示', MB_ICONASTERISK or MB_OKCANCEL)=IDOK) then
    begin
      for i:=ListWindow.Items.Count-1 downto 0 do
      begin
        if ListWindow.Items[i].Selected then
        begin
          if ExpMgr.ITheOprList.DelNode(ExpMgr.GetItemID(ListWindow.Items[i]),ExpMgr.ThefrmType) then
            ListWindow.Items.Delete(i);
        end;
      end;
    end;
  end;

  if PlugList<>nil then
  begin
    for i:=0 to PlugList.Count-1 do
      ISecPlug(PlugList[i]).GetContext;
  end;
end;

procedure TListBoxfrm.ListWindowMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
  FNode:TListItem;
  FPoint:TPoint;
begin
  if Button=mbRight then
  begin
    FNode:=ListWindow.GetItemAt(X,Y);
    if FNode<>nil then
      ListWindow.Selected:=FNode;

    FPoint.X:=X;
    FPoint.Y:=Y;
    FPoint:=ListWindow.ClientToScreen(FPoint);
    PopMenu.Popup(FPoint.X,FPoint.Y); 
  end;
end;

destructor TListBoxfrm.Destroy;
var
  AID:integer;
begin
  AID:=ID;
  inherited Destroy;
  PostMessage(Application.MainForm.Handle,WM_FreeListDll,Longint(AID),0);
end;

procedure TListBoxfrm.SpTBXSubmenuItem1Click(Sender: TObject);
var
  i:integer;
begin
  for i:=0 to SpTBXSubmenuItem1.Count-1 do
    if SpTBXSubmenuItem1.Items[i].Checked then
    begin
      if i<SpTBXSubmenuItem1.Count-1 then
        SpTBXItem4Click(SpTBXSubmenuItem1.Items[i+1])
      else
        SpTBXItem4Click(SpTBXSubmenuItem1.Items[0]);
      break;
    end;
end;

procedure TListBoxfrm.PopMenuPopup(Sender: TObject);
var
  i,j:integer;
  PlugName:widestring;
  ItemHeight,ItemWidth:integer;
  s:string;
begin
  Screen.Cursor:=crHourGlass;
  try
    SpTBXItem10.Enabled:=ListWindow.Selected<>nil;
    SpTBXItem11.Enabled:=ListWindow.Selected<>nil;

    if ListWindow.Selected=nil then
    begin
      if PlugList<>nil then
      begin
        for i:=0 to PlugList.Count-1 do
        begin
          if ISecPlug(PlugList[i]).DrawMenu then
            for j:=0 to PopMenu.Items.Count-1 do
            begin
              if PopMenu.Items[j].Name=ISecPlug(PlugList[i]).Name+'_D' then
                TSpTBXItem(PopMenu.Items[j]).Visible:=false;
            end;
        end;
      end;
    end
    else
    begin
      if PlugList<>nil then
      begin

⌨️ 快捷键说明

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