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

📄 mainunit.pas

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