⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainunit.pas

📁 一个简单的管理系统
💻 PAS
📖 第 1 页 / 共 5 页
字号:
       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 + -