📄 mainunit.pas
字号:
if PageControl1.ActivePage<>TreeTab then PageControl1.ActivePage:=TreeTab;
if TreeView1.Selected=nil then begin
messagedlg('请选择一个目录,以便建立子目录!',mtInformation,[mbOK],0);
Exit;
end;
if TreeView1.Selected.ImageIndex=0 then
node:=TreeView1.Selected.Parent else
node:=TreeView1.Selected;
//nodeCaption:=Inputbox('新建','请输入新建子目录的名称:','子目录');
if not InputQuery('新建','子目录名称::',NodeCaption) then exit;
new(Pnode);
pnode.caption:=NodeCaption;
pnode.id:=GetMaxID+1;
pnode.Password:='';
SubNode:=TreeView1.Items.AddChildObject(Node,NodeCaption,pnode);
SubNode.ImageIndex:=1;
SubNode.SelectedIndex:=1;
SaveFolder(NodeData(node.Data).id,SubNode); //保存目录
SubNode.Selected:=true;
//dispose(Pnode);//??????????????????
Statusbar1.Panels[2].Text:=intToStr(GetPicOrFolderCount(1));
Statusbar1.Panels[4].Text:=intToStr(GetPicOrFolderCount(0));
end;
procedure TForm1.SaveFolder(parentID: Integer; node:TTreeNode); //保存目录
var
query :TADOQuery;
begin
query:=TADOQuery.Create(self);
try
query.Connection:=ADOConnection1;
query.Close;
query.SQL.Clear;
query.SQL.Add('Insert into PData values(');
query.SQL.Add(Inttostr(nodeData(node.Data).id)+','); //ID
query.SQL.Add(intToStr(ParentID)+','); //PID
Query.SQL.Add('"'+nodeData(node.Data).caption+'",'); //FName
query.SQL.Add('"",') ; //ext
query.SQL.Add('null,'); //pic
query.SQL.Add('1,'); //Folder
query.SQL.Add('false,') ; //BMark
query.SQL.Add('"'+nodeData(node.Data).Password+'",'); //pass
query.SQL.Add('"'+nodeData(node.Data).caption+'")'); //note
query.ExecSQL
finally
Query.Free;
end;
end;
procedure TForm1.SavePicture(ParentID: Integer; node: TTreeNode; //保存图片
fn: string);
var
query:TADOQuery;
begin
query:=TADOquery.Create(self);
try
with query do
begin
Connection:=ADOConnection1;
close;
sql.Clear;
sql.Add('select * from PData');
open;
Append;
FieldByName('ID').AsInteger:=nodeData(node.Data).id;
FieldByName('PID').AsInteger:=ParentID ;
FieldByName('FName').AsString:=nodeData(node.Data).caption;
FieldByName('Ext').AsString:=LowerCase(ExtractFileExt(fn));
TBlobField(FieldByName('Pic')).LoadFromFile(fn);
FieldByName('Folder').AsInteger:=0;
FieldByName('BMark').AsBoolean:=false;
FieldByName('Pass').AsString:='';
FieldByName('Note').AsString:=fn;
Post;
end;
finally
query.Free;
end;
end;
procedure TForm1.AddPicMenuClick(Sender: TObject);
var
i :integer;
PNode :NodeData;
Node :TTreeNode;
NodeCaption:string;
begin
if PageControl1.ActivePage<>TreeTab then PageControl1.ActivePage:=TreeTab;
if Treeview1.Selected=nil then begin
messagedlg('必须先选择一个目录,以便添加图片!',mtError,[mbOK],0);
Exit;
end;
if TreeView1.Selected.ImageIndex=0 then
TreeView1.Selected.Parent.Selected:=true;
Node:=nil;
OpenPictureDialog1.Title:='添加图片:';
openpictureDialog1.Options:=[ofHideReadOnly,ofAllowMultiSelect,ofPathMustExist,ofFileMustExist,ofEnableSizing,ofDontAddToRecent,ofForceShowHidden];
if not openpicturedialog1.Execute then exit;
AviForm:=TAviForm.Create(self);
AviForm.Caption:='正在添加图片,请等待...';
AviForm.Label1.Caption:='';
aviform.Label1.Visible:=true;
AviForm.Button1.Enabled:=True;
AviForm.stop:=false;
AviForm.Animate1.CommonAVI:=aviCopyFiles;
AviForm.Animate1.Active:=True;
AviForm.Show;
Screen.Cursor:=crHourGlass;
TreeView1.Items.BeginUpdate;
Try
for i:=0 to OpenPictureDialog1.Files.Count-1 do
begin
application.ProcessMessages;
if AviForm.stop then break;
NodeCaption:=ExtractFileName(OpenPictureDialog1.Files.Strings[i]);
AviForm.Label1.Caption:=NodeCaption;
NodeCaption:=Copy(NodeCaption,1,length(NodeCaption)-4);
new(PNode);
PNode.id:=GetMaxID+1;
PNode.caption:=NodeCaption;
Pnode.Password:='';
Node:=TreeView1.Items.AddChildObject(TreeView1.Selected,NodeCaption,PNode);
Node.SelectedIndex:=0;
Node.ImageIndex:=0;
SavePicture(NodeData(Node.Parent.Data).id,Node,OpenPictureDialog1.Files.Strings[i]);
end;
Node.Selected:=True;
//showPic(NodeData(Node.Data).id);
finally
TreeView1.Items.EndUpdate;
AviForm.Close;
AviForm.Free;
Screen.Cursor:=crDefault;
end;
Statusbar1.Panels[2].Text:=intToStr(GetPicOrFolderCount(1));
Statusbar1.Panels[4].Text:=intToStr(GetPicOrFolderCount(0));
end;
procedure TForm1.DelMenuClick(Sender: TObject);
begin
if PageControl1.ActivePage=TreeTab then begin
if Treeview1.Selected.ImageIndex=0 then
begin
if messagedlg('确认删除图片:'+TreeView1.Selected.Text+'吗?',mtInformation,[mbYES,mbNO],0)<>mrYes then exit;
end else
if messagedlg('确认删除目录:'+TreeView1.Selected.Text+#13+'及以下的所有内容吗?',mtInformation,[mbYES,mbNO],0)<>mrYes then exit;
DelNode(TreeView1.Selected);
DelRecord(NodeData(TreeView1.Selected.Data).id);
TreeView1.Selected.Delete;
Statusbar1.Panels[2].Text:=intToStr(GetPicOrFolderCount(1));
Statusbar1.Panels[4].Text:=intToStr(GetPicOrFolderCount(0));
end else if PageControl1.ActivePage=BMarkTab then begin //删除书签
If messagedlg('确认删除书签吗?',mtInformation,[mbYES,mbNO],0)<>mrYes then exit;
//owmessage(inttostr(NodeData(TreeView2.Selected.Data).ID)) ;
DelAddBookMark(NodeData(TreeView2.Selected.Data).ID,False);
TreeView2.Selected.Delete;
end;
end;
procedure TForm1.TreeView2Change(Sender: TObject; Node: TTreeNode);
begin
showPic(NodeData(Node.Data).id);
end;
procedure TForm1.TreeView3Change(Sender: TObject; Node: TTreeNode);
begin
showPic(NodeData(Node.Data).id);
end;
procedure TForm1.Image1DblClick(Sender: TObject);
begin
if PageControl1.ActivePage<>TreeTab then PageControl1.ActivePage:=TreeTab;
if (TreeView1.Selected=nil) or (TreeView1.Selected.ImageIndex<>0) then exit;
EditPic;
end;
procedure TForm1.EditPic;
begin
openpictureDialog1.Title:='更改图片';
openpictureDialog1.Options:=[ofHideReadOnly, ofPathMustExist, ofFileMustExist, ofEnableSizing, ofDontAddToRecent, ofForceShowHidden];
if not OpenPictureDialog1.Execute then exit;
ModifyPic(NodeData(TreeView1.Selected.Data).id,OpenPictureDialog1.FileName);
image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
end;
procedure TForm1.OldSizeMenuClick(Sender: TObject);
begin
//if (TreeView1.Selected=nil) or (TreeView1.Selected.ImageIndex<>0)
// or (TreeView2.Selected=nil) or (treeview3.Selected=nil) then exit;
ZoomOut:=1.0;
ZoomIn:=1.0;
Image2.Visible:=False;
Image2.Picture.Assign(nil);
image1.BringToFront;
image1.Visible:=true;
end;
procedure TForm1.ZoomPicture(Zoom:single); //图片缩放
var
DRect:TRect;
w,h :integer;
bitmap:TBitMap;
begin
w:=Round(Image1.Width*Zoom);
h:=Round(Image1.Height*Zoom);
DRect:=Rect(0,0,w,h);
Bitmap:=TBitmap.Create;
try
bitmap.Width:=w;
bitmap.Height:=h;
bitmap.Canvas.StretchDraw(DRect,Image1.Picture.Graphic);
Image2.Parent:=ScrollBox1;
//Image2.Left:=0;
//image2.Top:=0;
image2.Width:=w;
image2.Height:=h;
image2.BringToFront;
image2.Visible:=true;
image1.Visible:=false;
Image2.Picture.Assign(bitmap);
finally
BitMap.Free;
end;
end;
procedure TForm1.ZoomOutMenuClick(Sender: TObject);
begin
if not Assigned(Image1.Picture) Then exit;
if PageControl1.ActivePage=TreeTab then
if (TreeView1.Selected=nil) or (TreeView1.Selected.ImageIndex<>0) then exit;
if PageControl1.ActivePage=BMarkTab then
if TreeView2.Selected=nil then exit;
if PageControl1.ActivePage=SearchTab then
if TreeView3.Selected=nil then exit;
ZoomOut:=ZoomOut+0.1;
ZoomIn:=ZoomOut;
ZoomPicture(ZoomOut);
end;
procedure TForm1.ZoomInMenuClick(Sender: TObject);
begin
if not Assigned(image1.Picture) then exit;
if PageControl1.ActivePage=TreeTab then
if (TreeView1.Selected=nil) or (TreeView1.Selected.ImageIndex<>0) then exit;
if PageControl1.ActivePage=BMarkTab then
if TreeView2.Selected=nil then exit;
if PageControl1.ActivePage=SearchTab then
if TreeView3.Selected=nil then exit;
ZoomIn:=ZoomIn-0.1;
if zoomin<0.0 then zoomin:=0.0;
ZoomOut:=ZoomIn;
ZoomPicture(ZoomIn);
end;
procedure TForm1.RenameMenuClick(Sender: TObject); //重命名
var
NewName:string;
query:TADOQuery;
begin
if PageControl1.ActivePage<>TreeTab then PageControl1.ActivePage:=TreeTab;
if TreeView1.Selected=nil then exit;
if not InputQuery('重命名','输入新名称::',NewName) then exit;
if NewName='' then exit;
if NewName=NodeData(TreeView1.Selected.Data).caption then exit;
query:=TADOQuery.Create(self);
try
query.Connection:=ADOConnection1;
query.Close;
query.SQL.Clear;
query.SQL.Add('select * from PData where ID='+IntToStr(NodeData(Treeview1.Selected.Data).id));
query.Open;
query.First;
query.Edit;
query.FieldByName('FName').AsString:=NewName;
query.Post;
query.Close;
NodeData(TreeView1.Selected.Data).caption:=NewName;
TreeView1.Selected.Text:=NewName;
finally
query.Free;
end;
end;
procedure TForm1.NoteMenuClick(Sender: TObject); //更改注释
var
query:TADOquery;
begin
if PageControl1.ActivePage<>TreeTab then PageControl1.ActivePage:=TreeTab;
if TreeView1.Selected=nil then exit;
Form2:=TForm2.Create(self);
Form2.Memo1.Text:=memo1.Text;
Form2.Caption:=Form2.Caption+'--['+TreeView1.Selected.Text+']';
if Form2.ShowModal<>mrOK Then
begin
Form2.Free;
exit;
end;
query:=TADOQuery.Create(self);
try
query.Connection:=ADOConnection1;
query.Close;
query.SQL.Clear;
query.SQL.Add('select * from PData where ID='+IntToStr(NodeData(Treeview1.Selected.Data).id));
Query.Open;
query.First;
query.Edit;
query.FieldByName('Note').AsString:=Form2.Memo1.Text;
query.Post;
query.Close;
memo1.Text:=Form2.Memo1.Text;
finally
Form2.Free;
Query.Free
end;
end;
procedure TForm1.ShowNoteMenuClick(Sender: TObject);
begin
TMenuItem(sender).Checked:= not TMenuItem(sender).Checked;
If TMenuItem(sender).Checked then
begin
Panel6.Top:=self.Height-180;
panel6.Height:=180;
end else panel6.Height:=1;
end;
procedure TForm1.Splitter2Moved(Sender: TObject);
begin
if Panel6.Height<10 then ShowNoteMenu.Checked:=false else ShowNoteMenu.Checked:=true;
end;
procedure TForm1.SetPassMenuClick(Sender: TObject);
begin
if PageControl1.ActivePage<>TreeTab then PageControl1.ActivePage:=TreeTab;
if (TreeView1.Selected=nil) or (TreeView1.Selected.ImageIndex=0) then exit;
PassForm:=TPassForm.Create(self);
if PassForm.ShowModal<>mrOK Then begin
PassForm.Free;
exit;
end;
if PassForm.Edit1.Text<>NodeData(TreeView1.Selected.Data).Password then
begin
messagedlg('密码不正确!',mtError,[mbOK],0);
PassForm.Free;
exit;
end;
if PassForm.Edit2.Text<>PassForm.Edit3.Text then
begin
Messagedlg('新密码不匹配!',mtWarning,[mbOK],0);
PassForm.Free;
Exit;
end;
NodeData(TreeView1.Selected.Data).Password:=PassForm.Edit2.Text;
PassForm.Free;
if NodeData(TreeView1.Selected.Data).Password='' then
begin
Treeview1.Selected.ImageIndex:=1;
TreeView1.Selected.SelectedIndex:=1;
end else begin
Treeview1.Selected.ImageIndex:=2;
TreeView1.Selected.SelectedIndex:=2;
end;
ModifyFolderPass(NodeData(TreeView1.Selected.Data).ID,NodeData(TreeView1.Selected.Data).Password);
end;
procedure TForm1.ModifyFolderPass(ID: Integer; Password: String); //设定目录密码
var
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('Pass').AsString:=PassWord;
if PassWord='' then query.FieldByName('Folder').AsInteger:=1
else query.FieldByName('Folder').AsInteger:=2;
query.Post;
query.Close;
finally
query.Free;
end;
end;
procedure TForm1.TreeView1Expanding(Sender: TObject; Node: TTreeNode;
var AllowExpansion: Boolean);
begin
if Node.ImageIndex=2 then begin
LogonForm:=TLogonForm.Create(Self);
LogonForm.Caption:='访问';
AllowExpansion:=(LogonForm.ShowModal=mrOK) AND (LogonForm.Edit1.Text=NodeData(Node.Data).Password);
end;
end;
Function TForm1.ValiDatePass:Boolean; //登陆时的密码验证 //
var
query :TADOQuery;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -