📄 umain.pas
字号:
CreateFolderTree(Node);
end;
procedure Tmainfrm.FolderTreeEdited(Sender: TObject; Node: TTreeNode;
var S: String);
begin
ReNameNode(Node,s)
end;
procedure Tmainfrm.SpTBXItem48Click(Sender: TObject);
begin
OprList.FolderProperty.Node:=FolderTree.Selected;
if not OprList.FolderProperty.IsLocked then
begin
FolderTree.Selected.EditText;
end
else
MessageBox(mainfrm.Handle,pchar('有文件已加密,你不能更改文件名。请先解密!'), '提示', MB_ICONASTERISK or MB_OK);
end;
procedure Tmainfrm.FolderTreeMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
FNode:TTreeNode;
FPoint:TPoint;
begin
FNode:=FolderTree.GetNodeAt(X,Y);
if Button=mbRight then
begin
if FNode<>nil then
begin
FolderTree.Selected:=FNode;
OprList.FolderProperty.Node:=FNode;
end;
FPoint.X:=X;
FPoint.Y:=Y;
FPoint:=FolderTree.ClientToScreen(FPoint);
RefreshNEWMenu;
TBXPopupMenu2.Popup(FPoint.X,FPoint.Y);
end;
end;
procedure Tmainfrm.RefreshNEWMenu;
begin
if FolderTree.Selected<>nil then
begin
OprList.FolderProperty.Node:=FolderTree.Selected;
NEW1.Enabled:=OprList.FolderProperty.IsFile=0;
NEW2.Enabled:=OprList.FolderProperty.IsFile=0;
New4.Enabled:=FolderTree.Selected.Parent<>nil;
end
else
begin
New1.Enabled:=false;
NEW2.Enabled:=false;
New4.Enabled:=false;
end;
end;
procedure Tmainfrm.RefreshTree;
begin
FolderTree.Items.Clear;
SECData.qryTree.Open;
if SECData.qryTree.RecordCount <>0 then
CreateFolderTree(nil);
SECData.qryTree.Close;
FolderTree.AlphaSort(true);
end;
procedure Tmainfrm.SpTBXItem50Click(Sender: TObject);
begin
RefreshTree;
end;
procedure Tmainfrm.imDelNodeClick(Sender: TObject);
var
index,parentindex:integer;
msgText:string;
ACaption:string;
begin
msgText:='确实要把文件“'+FolderTree.Selected.Text+'”删除吗?';
oprList.FolderProperty.Node:=FolderTree.Selected;
if oprList.FolderProperty.IsFile=0 then
msgText:='确实要把文件夹“'+FolderTree.Selected.Text+'”以及所有内容删除吗?';
if MessageBox(0, pchar(msgText), '提示', MB_ICONASTERISK or MB_OKCANCEL) = IDOK then
begin
index:=FolderTree.Selected.StateIndex;
ACaption:=FolderTree.Selected.Text;
if FolderTree.Selected.Parent<>nil then
parentindex:=FolderTree.Selected.Parent.StateIndex
else
parentindex:=-1;
OprList.FolderProperty.DelFolder(FolderTree.Selected);
mainfrm.RefreshItemInDllfrm(integer(fmFolder),Pchar(ACaption),true,index,parentindex);
end
else
begin
if FolderTree.CanFocus then
FolderTree.SetFocus;
exit;
end;
end;
procedure Tmainfrm.NEW2Click(Sender: TObject);
var
FNode:TTreeNode;
begin
FNode:=AddNode(1,true);
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.NEW1Click(Sender: TObject);
var
FNode:TTreeNode;
begin
FNode:=AddNode(0,true);
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.AddNode(IsFile: byte;IsChild:Boolean):TTreeNode;
var
ID,UPID:integer;
FNode:TTreeNode;
FolderName:string;
Level:integer;
begin
FNode:=FolderTree.Selected;
result:=FNode;
ID:=OprList.GetMaxID('Folders');
UPID:=-1;
Level:=0;
if (FNode<>nil) and (not IsChild) then
begin
if FNode.Parent<>nil then
begin
UPID:=FNode.Parent.StateIndex;
Level:=FNode.Level;
end;
end
else if (FNode<>nil) and (IsChild) then
begin
UPID:=FNode.StateIndex;
Level:=FNode.Level+1;
end
else if (FNode=nil) and (IsChild) then
exit;
if not Ischild then
begin
if FNode=nil then
FolderName:=OprList.FolderProperty.SetFolderName(nil,IsFile)
else
FolderName:=OprList.FolderProperty.SetFolderName(FNode.Parent,IsFile)
end
else
FolderName:=OprList.FolderProperty.SetFolderName(FNode,IsFile);
SECData.InsTree.ParamByName('ID').AsInteger :=ID;
SECData.InsTree.ParamByName('UPID').AsInteger :=UPID;
SECData.InsTree.ParamByName('Text').AsString :=FolderName;
SECData.InsTree.ParamByName('CreateDate').AsDateTime :=Now;
SECData.InsTree.ParamByName('Pro').AsInteger:=Level;
SECData.InsTree.ParamByName('IsFile').AsInteger:=IsFile;
SECData.InsTree.ExecSQL;
if (FNode<>nil) and (IsChild) then
begin
FNode:=FolderTree.Items.AddChild(FNode,FolderName);
FNode.StateIndex:=ID;
FNode.ImageIndex:=2*IsFile;
FNode.SelectedIndex:=2*IsFile;
FolderTree.Selected:=FNode;
FNode.EditText;
end
else if not IsChild then
begin
FNode:=FolderTree.Items.Add(FNode,FolderName);
FNode.StateIndex:=ID;
FNode.ImageIndex:=2*IsFile;
FNode.SelectedIndex:=2*IsFile;
FolderTree.Selected:=FNode;
FNode.EditText;
end;
result:=FNode;
end;
function Tmainfrm.DeleteNodeSQL:String;
var
i:integer;
s,s1:string;
begin
s1:='select ID from folders where ID=:ID or UPID=:ID';
s:='select ID from folders where ID=:ID or UPID=:ID';
for i:=0 to 0 do
s:=s1+' or UPID in ('+s+')';
for i:=1 to 9 do
begin
s[1]:='D';s[2]:='e';s[3]:='l';s[4]:='e';s[5]:='t';s[6]:='e';
s[7]:=' ';s[8]:=' ';s[9]:=' ';
end;
Result:=s+#13+'Order by ID DESC';
end;
function Tmainfrm.CheckName(Level: integer;AName:string): Boolean;
var
i,NodeCount:integer;
FNode:TTreeNode;
begin
result:=false;
FNode:=OprList.FolderProperty.Node.Parent; //FolderTree.Selected.Parent;
if FNode<>nil then
NodeCount:=FNode.Count-1
else
NodeCount:=FolderTree.Items.Count-1;
for i:=0 to NodeCount do
if FNode<>nil then
begin
if FNode.Item[i].Level=Level then
if AName=FNode.Item[i].Text then
begin
result:=true;
break;
end;
end
else
begin
if FolderTree.Items.Item[i].Level=Level then
if AName=FolderTree.Items[i].Text then
begin
result:=true;
break;
end;
end;
end;
procedure Tmainfrm.FolderTreeKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (Key=VK_Delete) and (not folderTree.IsEditing) then
imDelNodeClick(nil);
end;
procedure Tmainfrm.SpTBXItem51Click(Sender: TObject);
begin
TheOprList.Createfrm(nil,cdEdit,fmFolder);
OprList.FolderProperty.Node:=folderTree.Selected;
folderTree.Refresh;
//if FolderTree.Selected.Parent<>nil then
//RefreshItemInDllfrm(integer(fmFolder),'',false,-1,FolderTree.Selected.Parent.StateIndex);
end;
procedure Tmainfrm.myException(Sender: TObject; E: Exception);
var
i:byte;
begin
randomize;
i:=random(4);
CreateMsg('有老鼠,被抓住啦!',e.Message,i);
end;
procedure Tmainfrm.CreateMsg(Title,Msg: string;Idx:integer);
var
ShowException:TShowException;
DllHandle:THandle;
begin
DllHandle:=LoadLibrary('Secfrm.dll');
try
if DllHandle<>0 then
begin
@ShowException:=GetProcAddress(DllHandle,'ShowException');
if @ShowException<>nil then
ShowException(Application,Screen,Pchar(Msg),Pchar(Title),Idx,CurrentTheme);
end;
finally
FreeLibrary(DllHandle);
end;
end;
procedure Tmainfrm.TBXPopupMenu2Popup(Sender: TObject);
var
i,j:integer;
PlugName:widestring;
ItemHeight,ItemWidth:integer;
begin
Screen.Cursor:=crHourGlass;
try
imDelNode.Enabled:=FolderTree.Selected<>nil;
SpTBXItem54.Enabled:=FolderTree.Selected<>nil;
SpTBXItem52.Enabled:=FolderTree.Selected<>nil;
SpTBXItem53.Enabled:=FolderTree.Selected<>nil;
SpTBXItem48.Enabled:=FolderTree.Selected<>nil;
SpTBXItem51.Enabled:=FolderTree.Selected<>nil;
if FolderTree.Selected<>nil then
begin
OprList.FolderProperty.Node:=FolderTree.Selected;
SpTBXItem52.Enabled :=not OprList.FolderProperty.IsLocked;
SpTBXItem53.Enabled :=OprList.FolderProperty.IsLocked;
SpTBXSubmenuItem5.Enabled :=(not OprList.FolderProperty.IsLocked) or (OprList.FolderProperty.IsFile=1);
imDelNode.Enabled :=not OprList.FolderProperty.IsLocked;
end;
if FolderTree.Selected=nil then
begin
if OprList.PlugInManager.FPlugs<>nil then
begin
for i:=0 to OprList.PlugInManager.FPlugs.Count-1 do
begin
if ISecPlug(OprList.PlugInManager.FPlugs[i]).DrawMenu then
for j:=0 to TBXPopupMenu2.Items.Count-1 do
begin
if TBXPopupMenu2.Items[j].Name=ISecPlug(OprList.PlugInManager.FPlugs[i]).Name+'_D' then
TSpTBXItem(TBXPopupMenu2.Items[j]).Visible:=false;
end;
end;
end;
end
else
begin
if OprList.PlugInManager.FPlugs<>nil then
begin
for i:=0 to OprList.PlugInManager.FPlugs.Count-1 do
begin
if not ISecPlug(OprList.PlugInManager.FPlugs[i]).DisplayInMenu then
continue;
if ISecPlug(OprList.PlugInManager.FPlugs[i]).PlugType=ptMain then
begin
ISecPlug(OprList.PlugInManager.FPlugs[i]).MenuPopup(VarArrayOf([' ']),PlugName,ItemHeight,ItemWidth);
if ISecPlug(OprList.PlugInManager.FPlugs[i]).DrawMenu then
for j:=0 to TBXPopupMenu2.Items.Count-1 do
begin
if TBXPopupMenu2.Items[j].Name=PlugName+'_D' then
begin
TSpTBXItem(TBXPopupMenu2.Items[j]).Visible:=true;
TSpTBXItem(TBXPopupMenu2.Items[j]).MinHeight:=ItemHeight;
TSpTBXItem(TBXPopupMenu2.Items[j]).MinWidth:=ItemWidth;
end;
end;
end;
end;
end;
end;
finally
Screen.Cursor:=crDefault;
end;
end;
procedure Tmainfrm.FolderTreeExpanding(Sender: TObject; Node: TTreeNode;
var AllowExpansion: Boolean);
var
i:integer;
begin
OprList.FolderProperty.Node:=Node;
for i:=0 to MDIChildCount-1 do
begin
if Node.StateIndex=TDllfrm(MDIChildren[i]).ID then
exit;
end;
if OprList.FolderProperty.IsLocked then
begin
AllowExpansion:=OprList.FolderProperty.EnterFolder;
end;
end;
procedure Tmainfrm.SpTBXItem52Click(Sender: TObject);
begin
OprList.FolderProperty.Node:=FolderTree.Selected;
OprList.FolderProperty.LockedFolder;
folderTree.Refresh;
if FolderTree.Selected.Parent<>nil then
RefreshItemInDllfrm(integer(fmFolder),'',false,-1,FolderTree.Selected.Parent.StateIndex);
end;
procedure Tmainfrm.SpTBXItem53Click(Sender: TObject);
begin
OprList.FolderProperty.Node:=FolderTree.Selected;
OprList.FolderProperty.UnLockedFolder;
folderTree.Refresh;
if FolderTree.Selected.Parent<>nil then
RefreshItemInDllfrm(integer(fmFolder),'',false,-1,FolderTree.Selected.Parent.StateIndex);
end;
procedure Tmainfrm.ibAddTaskClick(Sender: TObject);
begin
TheOprList.Createfrm(nil,cdAdd,fmTask);
RefreshItemInDllfrm(integer(fmTask),'',false,-2,-1);
end;
procedure Tmainfrm.itFileOpenClick(Sender: TObject);
var
frm:TfrmOpenDlg;
FID:integer;
OpenReadOnly:Boolean;
begin
FID:=-1;
OpenReadOnly:=false;
frm:=TfrmOpenDlg.Create(self);
try
frm.Init;
frm.OpenModel:=true;
if frm.ShowModal=mrok then
begin
FID:=frm.ID;
OpenReadOnly:=frm.OpenReadOnly;
end;
finally
frm.Free;
if FID<>-1 then
begin
OprList.ViewNode(FID);
if OpenReadOnly then
mainfrm.OprList.OperFrm('SetReadOnly',Application.MainForm.ActiveMDIChild);
end;
end;
end;
procedure Tmainfrm.FreeListDLL(var msg: TMessage);
begin
if DllfrmList.DllList.Count=0 then
begin
FreeLibrary(GetModuleHandle('List.dll'));
end;
OprList.DeletewMenu(msg.WParam);
end;
procedure Tmainfrm.Timer1Timer(Sender: TObject);
var
i:integer;
CanRun:Boolean;
function IsEqualNow(TheTime:TDatetime;step:integer=0):Boolean;
var
oldTime,newTime:TTimeStamp;
Y,M,D:Word;
Y1,M1,D1:Word;
begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -