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