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

📄 upermiss.pas

📁 这是一个三层的进销存系统
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit upermiss;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, MDIbase, ComCtrls, Grids, DBGridEh, ToolWin, DB, DBClient,
  ImgList, Menus, ActnList;

Type
  pnodeData=^TnodeData;
  TnodeData=Record
    userid:integer;
    usercode:string;
    username:string;
  end;

  PnodeData2=^TnodeData2;
  TnodeData2=Record
    formid:integer;
    formcode:string;
    formname:string;
  end;  

type
  Tfrmpermiss = class(TfrmMDIbase)
    ToolBar1: TToolBar;
    Grid: TDBGridEh;
    treeuser: TTreeView;
    treeform: TTreeView;
    ActionList: TActionList;
    a01: TAction;
    a02: TAction;
    a03: TAction;
    a04: TAction;
    a05: TAction;
    PopupMenu1: TPopupMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    N6: TMenuItem;
    N7: TMenuItem;
    N8: TMenuItem;
    N9: TMenuItem;
    ImageListuser: TImageList;
    CDSuser: TClientDataSet;
    DSuser: TDataSource;
    CDSuser2: TClientDataSet;
    CDSform: TClientDataSet;
    CDSform2: TClientDataSet;
    ImageListform: TImageList;
    CDSgrid: TClientDataSet;
    DSgrid: TDataSource;
    ActionListtoolbar: TActionList;
    acopen: TAction;
    acadd: TAction;
    acmodify: TAction;
    acdelete: TAction;
    acprint: TAction;
    accounteract: TAction;
    acfinish: TAction;
    acconfirm: TAction;
    acall: TAction;
    acclear: TAction;
    acsave: TAction;
    ToolButton1: TToolButton;
    ToolButton2: TToolButton;
    ToolButton3: TToolButton;
    ToolButton4: TToolButton;
    ToolButton5: TToolButton;
    ToolButton6: TToolButton;
    ToolButton7: TToolButton;
    ToolButton8: TToolButton;
    ToolButton9: TToolButton;
    ToolButton10: TToolButton;
    ToolButton11: TToolButton;
    CDSuserfid: TAutoIncField;
    CDSuserfusercode: TWideStringField;
    CDSuserfusername: TWideStringField;
    CDSuserfpassword: TWideStringField;
    CDSuserfadmin: TBooleanField;
    CDSuserfgroupid: TWordField;
    CDSuserfgroupname: TWideStringField;
    CDSgridfid: TAutoIncField;
    CDSgridfusercode: TWideStringField;
    CDSgridfformcode: TWideStringField;
    CDSgridfuserid: TIntegerField;
    CDSgridfformid: TIntegerField;
    CDSgridfopen: TBooleanField;
    CDSgridfadd: TBooleanField;
    CDSgridfmodify: TBooleanField;
    CDSgridfdelete: TBooleanField;
    CDSgridfprint: TBooleanField;
    CDSgridfconfirm: TBooleanField;
    CDSgridffinish: TBooleanField;
    CDSgridfcounteract: TBooleanField;
    procedure FormCreate(Sender: TObject);
    procedure treeuserChange(Sender: TObject; Node: TTreeNode);
    procedure treeformChange(Sender: TObject; Node: TTreeNode);
    procedure acopenExecute(Sender: TObject);
    procedure acaddExecute(Sender: TObject);
    procedure acmodifyExecute(Sender: TObject);
    procedure acdeleteExecute(Sender: TObject);
    procedure acprintExecute(Sender: TObject);
    procedure accounteractExecute(Sender: TObject);
    procedure acfinishExecute(Sender: TObject);
    procedure acconfirmExecute(Sender: TObject);
    procedure acallExecute(Sender: TObject);
    procedure acclearExecute(Sender: TObject);
    procedure acsaveExecute(Sender: TObject);
    procedure a01Execute(Sender: TObject);
    procedure a02Execute(Sender: TObject);
    procedure a03Execute(Sender: TObject);
    procedure a05Execute(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    procedure addusercode;
    procedure addformnode;
    procedure getgriddata;
    function getuserid:integer;
    function getformid:integer;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmpermiss: Tfrmpermiss;

implementation

uses common, Global, uuser_m, ugroup;

{$R *.dfm}

procedure Tfrmpermiss.addformnode;
var
  pnode:pnodedata2;
  RootNode,Rootnode1,Rootnode2:Ttreenode;
  formid:integer;
  formcode:string;
  formname:string;
  cclass:string;
begin
  treeform.Items.Clear;
  treeform.Items.BeginUpdate;
  Rootnode:=treeform.Items.AddChild(nil,'表单资料');
  Rootnode.ImageIndex:=0;
  Rootnode.SelectedIndex:=1;
  GetsqlData(CDSform,'Vform','fid','fid in (select max(fid) from Vform group by ftype)',20);
  CDSform.First;
  while not CDSform.Eof do
    begin
      cclass:=CDSform.fieldbyname('ftype').AsString;
      Rootnode1:=treeform.Items.AddChild(Rootnode,cclass);
      Rootnode1.ImageIndex:=0;
      Rootnode1.SelectedIndex:=1;
      Getsqldata(CDSform2,'Vform','fid','ftype='+Quotedstr(cclass),20);
      CDSform2.First;
      while not CDSform2.Eof do
        begin
          new(pnode);
          formid:=CDSform2.fieldbyname('fid').AsInteger;
          formcode:=CDSform2.fieldbyname('Fcode').AsString;
          formname:=CDSform2.fieldbyname('fname').AsString;
          pnode^.formid:=formid;
          pnode^.formcode:=formcode;
          pnode^.formname:=formname;
          Rootnode2:=treeform.Items.AddChildObject(Rootnode1,formname,pnode);
          Rootnode2.ImageIndex:=0;
          Rootnode2.SelectedIndex:=1;
          CDSform2.Next;
        end;
        CDSform.Next;
    end;
    treeform.Items.EndUpdate;
    treeform.FullExpand;
end;

procedure Tfrmpermiss.addusercode;
var
  pnode:pnodeData;
  Rootnode,Rootnode1,Rootnode2:Ttreenode;
  userid:integer;
  usercode:string;
  username:string;
  fgroup:string;
begin
  treeuser.Items.Clear;
  treeuser.Items.BeginUpdate;
  Rootnode:=treeuser.Items.AddChild(nil,'用户资料');
  Rootnode.ImageIndex:=0;
  Rootnode.SelectedIndex:=0;
  GetsqlData(CDSuser,'Vusergroup','fid','fid in (select max(fid) from vusergroup group by fgroupid)',20);
  CDSuser.First;
  while not CDSuser.Eof do
    begin
      fgroup:=cdsuser.fieldbyname('fgroupname').AsString;
      Rootnode1:=treeuser.Items.AddChild(Rootnode,fgroup);
      Rootnode1.ImageIndex:=0;
      Rootnode1.SelectedIndex:=1;
      Getsqldata(CDSuser2,'Vusergroup','fid','fgroupname='+Quotedstr(fgroup),20);
      CDSuser2.First;
      while not CDSuser2.Eof do
        begin
          new(pnode);
          userid:=CDSuser2.fieldbyname('fid').AsInteger;
          usercode:=CDSuser2.fieldbyname('fusercode').AsString;
          username:=CDSuser2.fieldbyname('fusername').AsString;
          pnode^.userid:=userid;
          pnode^.usercode:=usercode;
          pnode^.username:=username;
          Rootnode2:=treeuser.Items.AddChildObject(Rootnode1,username,pnode);
          Rootnode2.ImageIndex:=0;
          Rootnode2.SelectedIndex:=1;
          CDSuser2.Next;
        end;
        CDSuser.Next;
    end;
    treeuser.Items.EndUpdate;
    treeuser.FullExpand; 
end;

function Tfrmpermiss.getformid: integer;
var
  gsformid:Pnodedata2;
begin
  try
    new(gsformid);
    gsformid:=treeform.Selected.Data;
    Result:=gsformid.formid;
    gsformid:=nil;
  except
    Result:=0;
  end;
end;

procedure Tfrmpermiss.getgriddata;
var
  userid:integer;
  formid:integer;
begin
  userid:=getuserid;
  formid:=getformid;
  if (userid>0) and (formid>0) then
    begin
      Getsqldata(CDSGrid,'Vpermiss','Fid',
          'fuserid='+inttostr(userid)+' and fformid='+inttostr(formid),20);
      if CDSgrid.RecordCount=0 then
        begin
          Execsql('Insert into tpermiss(fuserid,fformid) values('+
            inttostr(userid)+','+inttostr(formid)+')');
          Getsqldata(CDSGrid,'Vpermiss','Fid',
            'fuserid='+inttostr(userid)+' and fformid='+inttostr(formid),20);
        end;
    end;
end;


function Tfrmpermiss.getuserid: integer;
var
  gsuserid:pnodedata;
begin
  try
    new(gsuserid);
    gsuserid:=treeuser.Selected.Data;
    Result:=gsuserid.userid;
    gsuserid:=nil;
  except
    Result:=0;
  end;
end;

procedure Tfrmpermiss.FormCreate(Sender: TObject);
begin
  inherited;
  addusercode;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -