📄 ulistboxfrm.pas
字号:
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 + -