📄 mainunit.pas
字号:
panels[6].Width:=110;
panels[5].Width:=60;
panels[4].Width:=80;
panels[3].Width:=50;
panels[2].Width:=60;
panels[1].Width:=50;
panels[0].Width:=StatusBar1.Width-Panels[7].Width-Panels[6].Width-Panels[5].Width-panels[4].Width-panels[3].Width-panels[2].Width-panels[1].Width;
end;
end;
procedure TForm1.FormResize(Sender: TObject);
begin
InitializeStatusBar;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
StatusBar1.Panels[6].Text:=DateTimeToStr(now);
end;
procedure TForm1.ExitMenuClick(Sender: TObject);
begin
close;
end;
procedure TForm1.HelpMenuClick(Sender: TObject);
begin
messagedlg('不好意思,没有帮助!!',mtInformation,[mbOK],0);
end;
procedure TForm1.AboutMenuClick(Sender: TObject);
begin
AboutBox:=TaboutBox.Create(self);
AboutBox.ShowModal;
AboutBox.Free;
end;
procedure TForm1.VFmenuClick(Sender: TObject);
begin
pagecontrol1.ActivePage:=treetab;
VFmenu.Checked:=true;
if panel1.Width<=20 then panel1.Width:=185;
if TreeView1.Selected=nil then
begin
Image1.Picture.Assign(nil);
Memo1.Clear;
exit;
end;
showPic(NodeData(Treeview1.Selected.Data).id);
end;
procedure TForm1.BMarkMenuClick(Sender: TObject);
begin
pagecontrol1.ActivePage:=BMarkTab;
BMarkMenu.Checked:=true;
if panel1.Width<=20 then panel1.Width:=185;
if TreeView2.Selected=nil then
begin
Image1.Picture.Assign(nil);
Memo1.Clear;
exit;
end;
showPic(NodeData(Treeview2.Selected.Data).id);
end;
procedure TForm1.SearchMenuClick(Sender: TObject);
begin
pagecontrol1.ActivePage:=SearchTab;
SearchMenu.Checked:=True;
edit1.SetFocus;
if panel1.Width<=20 then panel1.Width:=185;
if TreeView3.Selected=nil then
begin
Image1.Picture.Assign(nil);
Memo1.Clear;
exit;
end;
showPic(NodeData(Treeview3.Selected.Data).id);
end;
procedure TForm1.CompressDataMenuClick(Sender: TObject);
begin
ADOConnection1.Connected:=false;
AviForm:=TAviForm.Create(self);
AviForm.Caption:='正在压缩数据库,请等待...';
AviForm.Label1.Caption:='';
AviForm.Label1.Visible:=false;
AviForm.Button1.Enabled:=false;
AviForm.Animate1.CommonAVI:=aviDeleteFile;
AviForm.Animate1.Active:=true;
AviForm.Show;
application.ProcessMessages;
if CompressRepairMDB then messageDlg('数据库压缩修复成功!!',mtInformation,[mbOK],0);
AviForm.Animate1.Active:=false;
AviForm.Close;
AviForm.Free;
ADOConnection1.Connected:=true;
end;
function TForm1.CompressRepairMDB: Boolean;
var
dao :OLEVariant;
TempDB :String;
begin
result:=true;
screen.Cursor:=crHourGlass;
TempDB:=ChangeFileExt(DataFile,'.$$$');
if fileExists(TempDB) THEN DeleteFile(TempDB);
Dao:=CreateOLEObject('DAO.DBEngine.36');
try
try
dao.compactDatabase(DataFile,TempDB,'',0,';pwd=dltjy.lf');
deletefile(DataFile);
renamefile(TempDB,DataFile) ;
except
on e:Exception do begin
MessageDlg('数据库压缩修复失败!!'+#13+#13+e.Message,mtError,[mbOK],0);
result:=false;
end;
end;
finally
dao:=Unassigned;
screen.Cursor:=crDefault;
end;
end;
procedure TForm1.FillTreeView(selfID: Integer; ParentNode: TTreeNode); //填允TREEVIEW1
var
query :TADOQuery;
Node :TTreeNode;
Pnode :NodeData;
begin
query:=TADOQuery.Create(self);
try
query.Connection:=ADOConnection1;
query.Close;
query.SQL.Clear;
query.SQL.Add('select * from PData where PID='+IntToStr(selfID));
Query.Open;
query.First;
while not query.Eof do begin
new(pnode);
pnode.id:=query.fieldbyname('ID').AsInteger;
Pnode.caption:=query.fieldbyname('FName').AsString;
Pnode.Password:=Query.fieldByName('Pass').AsString;
node:=Treeview1.Items.AddChildObject(parentNode,pnode.caption,pnode); //目录页
node.ImageIndex:=query.fieldbyname('Folder').AsInteger;
node.SelectedIndex:=query.fieldbyname('Folder').AsInteger;
if query.FieldByName('BMark').AsBoolean then //如果是书签则加入TreeView2;
begin
Treeview2.Items.AddChildObject(nil,pnode.caption,pnode);
end;
fillTreeView(query.fieldbyname('ID').AsInteger,node); //递归调用
query.Next ;
end;
query.Close;
finally
query.Free;
end;
end;
procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
showpic(NodeData(Node.Data).id);
end;
procedure TForm1.FillClass;
begin
screen.Cursor:=crHourGlass;
treeview1.Items.BeginUpdate;
TreeView2.Items.BeginUpdate;
TreeView2.Items.Clear;
treeview1.Items.Clear;
fillTreeView(0,nil);
//TreeView2.CustomSort(@MyCustomSortProc,0);
TreeView1.CustomSort(@MyCustomSortProc,0);
TreeView2.Items.EndUpdate;
TreeView1.Items.EndUpdate;
Screen.Cursor:=crDefault;
end;
function TForm1.GetMaxID: integer;
var
query :TADOQuery;
begin
result:=0;
query:=TADOQuery.Create(self);
try
query.Connection:=ADOConnection1;
query.Close;
query.SQL.Clear;
query.SQL.Add('select ID From PData');
query.Open;
query.First;
while not query.Eof do
begin
if result<query.FieldByName('ID').AsInteger then
result:=query.FieldByName('ID').AsInteger;
query.Next;
end;
Query.Close;
finally
Query.Free;
end;
end;
procedure TForm1.showPic(ID: Integer); //显示图片
var
query :TADOQuery;
jpg :TJPEGImage;
bmp :TBitmap;
ext :string;
stream :TMemorystream;
begin
Image2.Visible:=false;
ZoomOut:=1.0;
ZoomIn:=1.0;
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;
if query.RecordCount=0 then begin
query.Close;
query.Free;
messagedlg('没有图片可显示!',mtWarning,[mbOK],0);
Exit;
end;
memo1.Text:=query.fieldByName('Note').AsString; //文件夹或文件注释
if query.FieldByName('Folder').AsInteger=0 then
begin // 如查是文件 0为文件,1,2为文件夹
ext:=query.fieldByName('Ext').AsString;
ext:=lowercase(ext);
stream:=TMemoryStream.Create;
try
TBlobField(query.FieldByName('pic')).SaveToStream(stream);
Stream.Position:=0;
if ext='.bmp' then begin
bmp:=TBitmap.Create;
try
bmp.LoadFromStream(stream);
//image1.Picture.Graphic.LoadFromStream(stream);
Image1.Stretch:=false;
//image1.Left:=0;
//image1.Top:=0;
image1.Height:=bmp.Height;
image1.Width:=bmp.Width;
image1.Picture.Assign(bmp);
Image1.BringToFront;
image1.Visible:=true;
finally
bmp.Free;
end;
end else if ext='.jpg' then begin
jpg:=TJPEGImage.Create;
try
jpg.LoadFromStream(stream);
image1.Stretch:=false;
//image1.Left:=0;
//image1.Top:=0;
image1.Height:=jpg.Height;
image1.Width:=jpg.Width;
image1.Picture.Assign(jpg);
image1.BringToFront;
image1.Visible:=true;
finally
jpg.Free;
end;
end;
finally
stream.Free;
end;
end else Image1.Picture.Assign(nil);
query.Close;
finally
query.Free;
end;
end;
procedure TForm1.Delrecord(ID: Integer); //删除记录
var
query:TADOQuery;
begin
query:=TADOQuery.Create(self);
try
query.Connection:=ADOConnection1;
query.Close;
query.SQL.Clear;
query.SQL.Add('delete from PData where ID='+IntToStr(ID));
Query.ExecSQL;
finally
query.Free;
end;
end;
procedure TForm1.DelNode(Node:TTreeNode);
var
vnode: TTreenode;
begin
vnode:=Node.getFirstChild;
while vnode<>nil do begin
DelNode(vnode); //递归查找
Delrecord(nodeData(vnode.Data).id); //删除记录
vnode:=node.GetNextChild(vnode);
end;
end;
procedure TForm1.ModifyPic(ID: Integer; fn: string); //图片修改
var
query:TADOQuery;
ext :string;
begin
ext:=ExtractFileExt(fn);
ext:=lowerCase(ext);
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.Edit;
TBlobField(query.FieldByName('Pic')).LoadFromFile(fn);
query.FieldByName('Ext').AsString:=ext;
//query['Ext']:=ext;
query.Post;
query.Close;
finally
query.Free;
end;
end;
procedure TForm1.SaveAsPic(ID: Integer); //图片另存
var
query :TADOQuery ;
ext :string;
fn :string;
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;
ext:=Query.fieldbyname('Ext').AsString;
savepicturedialog1.Title:='图片另存为:';
savepicturedialog1.Filter:='*'+ext+'|*'+ext;
savepicturedialog1.FilterIndex:=1;
if savepicturedialog1.Execute then
begin
fn:=savepicturedialog1.FileName+ext;
TBlobField(Query.FieldByName('Pic')).SaveToFile(fn);
end;
query.Close;
finally
query.Free;
end;
end;
procedure TForm1.SaveAsMenuClick(Sender: TObject); //图片另存
begin
if PageControl1.ActivePage<>TreeTab then PageControl1.ActivePage:=TreeTab;
if (TreeView1.Selected=nil) or (treeview1.Selected.ImageIndex<>0) then exit; //不是图处则退出
screen.Cursor:=crHourGlass;
SaveAsPic(NodeData(Treeview1.Selected.Data).id);
screen.Cursor:=crDefault;
end;
procedure TForm1.PFolderMenuClick(Sender: TObject); //新建根目录
var
node :TTreeNode;
nodeCaption :string;
Pnode :NodeData;
begin
if PageControl1.ActivePage<>TreeTab then PageControl1.ActivePage:=TreeTab;
if not InputQuery('新建','根目录名称::',NodeCaption) then exit;
new(pnode);
pnode.caption:=nodeCaption;
pnode.id:=GetMaxID+1;
Pnode.Password:='';
Node:=TreeView1.Items.AddChildObject(nil,nodeCaption,pnode);
node.ImageIndex:=1;
node.SelectedIndex:=1;
saveFolder(0,node);
node.Selected:=true;
Statusbar1.Panels[2].Text:=intToStr(GetPicOrFolderCount(1));
Statusbar1.Panels[4].Text:=intToStr(GetPicOrFolderCount(0));
//dispose(pnode);
end;
procedure TForm1.SFolderMenuClick(Sender: TObject); //新建子目录
var
node :TTreeNode;
subNode :TTreeNode;
nodeCaption :String;
Pnode :NodeData;
begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -