📄 mainunit.pas
字号:
AviForm.Show;
TreeView1.Items.BeginUpdate;
//currentdir:=GetCurrentDir();
ChDir(Dir);
Try
ImportFromDir(TreeView1.Selected);
TreeView1.CustomSort(@MyCustomSortProc,0);
finally
AviForm.Close;
AviForm.Free;
TreeView1.Items.EndUpdate;
Screen.Cursor:=crDefault;
end;
Statusbar1.Panels[2].Text:=intToStr(GetPicOrFolderCount(1));
Statusbar1.Panels[4].Text:=intToStr(GetPicOrFolderCount(0));
end;
procedure TForm1.DelAddBookMark(ID: Integer;bm: Boolean); //删除添加书签
var //true添加书签,False删除书签
query:TADOQuery;
begin
query:=TADOQuery.Create(self);
try
query.Connection:=ADOConnection1;
query.Close;
query.SQL.Clear;
query.SQL.Add('select * from PData where ID='+intToStr(ID));
Query.Open;
query.First;
Query.Edit;
query.FieldByName('BMark').AsBoolean:=bm;
query.Post;
query.Close;
finally
query.Free;
end;
end;
procedure TForm1.AddBookMarkMenuClick(Sender: TObject);
begin
if pagecontrol1.ActivePage<>TreeTab then PageControl1.ActivePage:=TreeTab;
if (TreeView1.Selected=nil) or (TreeView1.Selected.ImageIndex<>0) then exit;
DelAddBookMark(NodeData(TreeView1.Selected.Data).ID,true);
TreeView2.Items.AddObject(nil,Treeview1.Selected.Text,TreeView1.Selected.Data);
end;
procedure TForm1.PrintMenuClick(Sender: TObject);
var
image:Timage;
begin
// if PageControl1.ActivePage<>TreeTab then PageControl1.ActivePage:=TreeTab;
IF ((TreeView1.Selected<>nil) and (TreeView1.Selected.ImageIndex=0))
or (TreeView2.Selected<>nil) or (TreeView3.Selected<>nil) then
begin
if (ZoomOut=1.0) and (ZoomIn=1.0) then image:=Image1 else image:=image2;
PrintPicture(Image,1);
end;
end;
procedure TForm1.Button1Click(Sender: TObject); //查找
var
i:integer;
begin
if Edit1.Text='' then exit;
Button1.Enabled:=false;
TreeView3.Items.Clear;
for i:=0 to TreeView1.Items.Count-1 do
begin
if (pos(LowerCase(Edit1.Text),LowerCase(TreeView1.Items.Item[i].Text))<>0) and (TreeView1.Items.Item[i].ImageIndex=0) then
TreeView3.Items.AddObject(nil,TreeView1.Items.Item[i].Text,TreeView1.Items.Item[i].Data);
end;
Button1.Enabled:=True;
end;
procedure TForm1.TreeView2DblClick(Sender: TObject);
var
i:integer;
begin
if TreeView2.Selected=nil then exit;
for i:=0 to TreeView1.Items.Count-1 do
begin
if NodeData(TreeView2.Selected.Data).ID=NodeData(TreeView1.Items.Item[i].Data).ID then
begin
PageControl1.ActivePage:=TreeTab;
TreeView1.Items.Item[i].Expanded:=true;
TreeView1.Items.Item[i].Selected:=true;
break;
end;
end;
end;
procedure TForm1.TreeView3DblClick(Sender: TObject);
var
i:integer;
begin
if TreeView3.Selected=nil then exit;
for i:=0 to TreeView1.Items.Count-1 do
begin
if NodeData(TreeView3.Selected.Data).ID=NodeData(TreeView1.Items.Item[i].Data).ID then
begin
PageControl1.ActivePage:=TreeTab;
TreeView1.Items.Item[i].Expanded:=true;
TreeView1.Items.Item[i].Selected:=true;
break;
end;
end;
end;
procedure TForm1.DelPMenuClick(Sender: TObject);
begin
if TreeView2.Selected=nil then exit;
If messagedlg('确认删除书签吗?',mtInformation,[mbYES,mbNO],0)<>mrYes then exit;
DelAddBookMark(NodeData(TreeView2.Selected.Data).ID,False);
TreeView2.Selected.Delete;
end;
procedure TForm1.AllDelPMenuClick(Sender: TObject);
var
i:integer;
begin
if TreeView2.Items.Count=0 then exit;
If messagedlg('确认删除所有书签吗?',mtInformation,[mbYES,mbNO],0)<>mrYes then exit;
for i:=0 to TreeView2.Items.Count-1 do
DelAddBookMark(NodeData(TreeView2.Items.Item[i].Data).ID,false);
TreeView2.Items.Clear;
end;
procedure TForm1.ToTreeTabPMenuClick(Sender: TObject);
begin
TreeView2DblClick(sender);
end;
procedure TForm1.TreeView2MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
node:TTreenode;
begin
if (Button<>mbRight) then exit;
Node:=TreeView2.GetNodeAt(x,y);
if Node<>nil then Node.Selected:=True;
if node<>nil then
begin
DelPMenu.Enabled:=true;
AllDelPMenu.Enabled:=true;
ToTreetabPMenu.Enabled:=True;
end else begin
DelPMenu.Enabled:=false;
AllDelPMenu.Enabled:=true;
ToTreetabPMenu.Enabled:=false;
end;
end;
procedure TForm1.SearchToTreeTabPMenuClick(Sender: TObject);
begin
TreeView3DblClick(sender);
end;
procedure TForm1.SearchToBMpmenuClick(Sender: TObject);
begin
if (TreeView3.Selected=nil) then exit;
DelAddBookMark(NodeData(TreeView3.Selected.Data).ID,true);
TreeView2.Items.AddObject(nil,Treeview3.Selected.Text,TreeView3.Selected.Data);
end;
procedure TForm1.TreeView3MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
node:TTreeNode;
begin
IF (Button<>mbRight) then exit;
node:=TreeView3.GetNodeAt(x,y);
IF Node<>nil then Node.Selected:=True;
if node<>nil then
begin
searchToTreeTabpmenu.Enabled:=true;
searchToBMpmenu.Enabled:=true;
end else begin
searchToTreeTabpmenu.Enabled:=false;
searchToBMpmenu.Enabled:=false;
end;
end;
procedure TForm1.TreeView2KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if TreeView2.Selected=nil then exit;
if key=VK_Delete then DelPMenuClick(sender);
end;
procedure TForm1.TreeView1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if TreeView1.Selected=nil then exit;
if key=VK_F2 then begin
RenameMenuClick(sender);
exit;
end;
if Key=VK_Delete then DelMenuClick(sender);
end;
procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
node:TTreenode;
begin
IF (Button<>mbRight) then exit;
Node:=TreeView1.GetNodeAt(x,y);
if node<>nil then Node.Selected:=true ;
end;
procedure TForm1.ImagePopupMenuPopup(Sender: TObject);
var
i:integer;
begin
if ((TreeView1.Selected=nil) or (Treeview1.Selected.ImageIndex<>0)) and
(TreeView2.Selected=nil) and (TreeView3.Selected=nil) then begin
for i:=0 to ImagePopupmenu.Items.Count-1 do
ImagePopupMenu.Items.Items[i].Enabled:=False;
end else begin
for i:=0 to ImagePopupmenu.Items.Count-1 do
ImagePopupMenu.Items.Items[i].Enabled:=true;
end;
end;
procedure TForm1.TreePopupMenuPopup(Sender: TObject);
var
i:integer;
begin
if TreeView1.Selected=nil then
begin
for i:=0 to TreePopupMenu.Items.Count-1 do
TreePopupMenu.Items.Items[i].Enabled:=false;
exit;
end;
if TreeView1.Selected.ImageIndex=0 then
begin
NewMLPopupMenu.Enabled:=true;
NewSpMenu.Enabled:=false;
MLPassPMenu.Enabled:=false;
AddPicPMenu.Enabled:=false;
ImportPMenu.Enabled:=false;
SaveASPMenu.Enabled:=true;
BMPMenu.Enabled:=true;
ReNPMenu.Enabled:=true;
NotePopupMenu.Enabled:=true;
DelPopupMenu.Enabled:=true;
end else
begin
NewMLPopupMenu.Enabled:=true;
NewSpMenu.Enabled:=true;
MLPassPMenu.Enabled:=true;
AddPicPMenu.Enabled:=true;
ImportPMenu.Enabled:=true;
SaveASPMenu.Enabled:=false;
BMPMenu.Enabled:=false;
ReNPMenu.Enabled:=true;
NotePopupMenu.Enabled:=true;
DelPopupMenu.Enabled:=true;
end;
end;
procedure TForm1.TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
var
node:TTreeNode;
NBPixels:integer;
Info:Tscrollinfo;
begin
Accept:=True;
node:=Treeview1.GetNodeAt(x,y);
if node=nil then exit;
if (node.ImageIndex=1) and (not node.Expanded) then node.Expanded:=True;
GetScrollInfo(Treeview1.Handle,SB_VERT,Info) ;
if Info.nMin=Info.nMax then exit;
NBPixels:=abs(Treeview1.Font.Height);
if y<NBPixels then begin
TreeView1.Perform(WM_VSCROLL,SB_LINEUP,0);
Treeview1.Refresh;
end;
if (y>(TreeView1.Height-NBPixels-16)) then
begin
Treeview1.Perform(WM_VSCROLL,SB_LINEDOWN,0);
end;
end;
procedure TForm1.TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
tnode:TTreeNode;
snode:TTreeNode;
begin
iF TreeView1.Selected=nil then exit;
tnode:=TreeView1.GetNodeAt(x,y);
snode:=TreeView1.Selected;
if (tnode=nil) or (tnode.ImageIndex=0) or (tnode=snode.Parent) then exit;
snode.MoveTo(tnode,naAddChild);
ModifyParent(nodedata(snode.Data).ID,nodedata(tnode.Data).ID);
end;
procedure TForm1.ModifyParent(sourceID, ParentID: Integer);
var
query:TADOQuery;
begin
query:=TADOQuery.Create(self);
with query do begin
connection:=ADOConnection1;
close;
sql.Clear;
sql.Add('select * from PData where ID='+inttostr(sourceID));
Open;
edit;
FieldByName('PID').AsInteger:=ParentID;
POST;
Free;
end;
end;
procedure TForm1.WMDropFiles(var msg: TWMDROPFILES);
var
count :integer;
buffer :array[0..255]of char;
i :integer;
pnode :NodeData;
node :TTreeNode;
fn :string;
begin
//showmessage('进来啰!!');
if pageControl1.ActivePage<>TreeTab then PageControl1.ActivePage:=TreeTab;
if Treeview1.Selected=nil then
begin
messagedlg('必须先选择一个目录,以便添加图片!',mtWarning,[mbOK],0);
Exit;
end;
if TreeView1.Selected.ImageIndex=0 then TreeView1.Selected.Parent.Selected:=true;
count:=DragQueryFile(msg.Drop,$FFFFFFFF,buffer,255);
Screen.Cursor:=crHourGlass;
TreeView1.Items.BeginUpdate;
aviform:=Taviform.Create(self);
aviform.Button1.Enabled:=true;
aviform.Label1.Caption:='';
aviform.Label1.Visible:=true;
aviform.stop:=false;
AviForm.Caption:='正在添加图片,请等待...';
AviForm.Animate1.CommonAVI:=aviCopyFiles;
aviform.Animate1.Active:=true;
aviform.Show;
try
for i:=0 to count-1 do begin
application.ProcessMessages;
if aviform.stop then break;
DragQueryFile(msg.Drop,i,buffer,255);
fn:=StrPas(buffer);
if (LowerCase(ExtractFileExt(fn))='.jpg') or (LowerCase(ExtractFileExt(fn))='.bmp') then
begin
aviform.Label1.Caption:=ExtractFileName(fn);
new(pnode);
pnode.ID:=GetMaxID+1;
Pnode.Password:='';
pnode.Caption:=copy(ExtractFileName(fn),1,Length(ExtractFileName(fn))-4);
node:=TreeView1.Items.AddChildObject(TreeView1.Selected,pnode.Caption,pnode);
node.ImageIndex:=0;
node.SelectedIndex:=0;
savePicture(NodeData(TreeView1.Selected.Data).ID,node,fn) ;
end;
end;
DragFinish(msg.Drop);
aviform.Animate1.Active:=false;
AviForm.Close;
finally
Screen.Cursor:=crDefault;
TreeView1.Items.EndUpdate;
AviFORM.Free;
end;
Statusbar1.Panels[2].Text:=intToStr(GetPicOrFolderCount(1));
Statusbar1.Panels[4].Text:=intToStr(GetPicOrFolderCount(0));
end;
procedure TForm1.PrintPicture(Image: Timage;a:integer);
var
pstream:TmemoryStream;
begin
pstream:=TMemoryStream.Create;
image.Picture.Graphic.SaveToStream(pstream);
pstream.Position:=0;
try
case a of
1:begin
end;
2:begin
end;
3:begin
end;
end;
finally
pstream.Free;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -