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

📄 dfm_groupinfo.pas

📁 仓库管理系统 仓库管理系统
💻 PAS
字号:
unit dfm_groupinfo;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ComCtrls, StdCtrls, Buttons, Mask, DBCtrls, ExtCtrls, Menus, Db, DBTables;

type
  Tdfmgroupinfo = class(TForm)
    Panel1: TPanel;
    GroupBox2: TGroupBox;
    TreeView2: TTreeView;
    Label3: TLabel;
    Panel2: TPanel;
    Label1: TLabel;
    DBEdit1: TDBEdit;
    Label2: TLabel;
    DBEdit2: TDBEdit;
    Label4: TLabel;
    DBEdit3: TDBEdit;
    BitBtn_add: TBitBtn;
    BitBtn_del: TBitBtn;
    BitBtn_edit: TBitBtn;
    BitBtn_ok: TBitBtn;
    BitBtn_cancel: TBitBtn;
    Label5: TLabel;
    Dsqryindex: TDataSource;
    qryindex: TQuery;
    Label6: TLabel;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormShow(Sender: TObject);
    procedure TreeView2MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure BitBtn_okClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure BitBtn_addClick(Sender: TObject);
    procedure BitBtn_delClick(Sender: TObject);
    procedure BitBtn_editClick(Sender: TObject);
    procedure BitBtn_cancelClick(Sender: TObject);
  private
    { Private declarations }
       procedure ShowMenuItems(Node: TTreeNode; Item: TMenuItem);
       procedure tblstachange;
  public
    { Public declarations }
  end;

var
  dfmgroupinfo: Tdfmgroupinfo;
  vfield:string;

implementation

uses dfm_team, Main;

{$R *.DFM}

procedure Tdfmgroupinfo.tblstachange;
begin
    case dfmteam.tbltrole.State of
      dsbrowse:
        begin
          dbedit1.enabled:=false;
          dbedit2.enabled:=false;
          dbedit3.enabled:=false;
          BitBtn_add.Enabled :=true;
          BitBtn_del.Enabled :=true;
          BitBtn_edit.Enabled :=true;
          BitBtn_ok.Enabled :=false;
          BitBtn_cancel.Enabled :=false;
          treeview2.Enabled :=false;
        end;
      dsinsert:
        begin
          dbedit1.enabled:=true;
          dbedit2.enabled:=true;
          dbedit3.enabled:=true;
          BitBtn_add.Enabled :=false;
          BitBtn_del.Enabled :=false;
          BitBtn_edit.Enabled :=false;
          BitBtn_ok.Enabled :=true;
          BitBtn_cancel.Enabled :=true;
          treeview2.Enabled :=false;
        end;
      dsedit:
        begin
          dbedit1.enabled:=false;
          dbedit2.enabled:=true;
          dbedit3.enabled:=true;
          BitBtn_add.Enabled :=false;
          BitBtn_del.Enabled :=false;
          BitBtn_edit.Enabled :=false;
          BitBtn_ok.Enabled :=true;
          BitBtn_cancel.Enabled :=true;
          treeview2.Enabled :=true;
        end;
    end;
end;



procedure Tdfmgroupinfo.ShowMenuItems(Node: TTreeNode; Item: TMenuItem);
//type
//pch=^string;
var
  //pstr:pch;
  str:String;
  nCnt: Integer;
  n: TTreeNode;
begin
  If Not dfmteam.tbltMenu.Active Then dfmteam.tbltMenu.Open;
  str:=Item.Caption;{+'='+Item.Name;}
//  dfmteam.tbltmenu.Append ;   {将数据项填入数据表}
//  dfmteam.tbltmenu.FieldByName ('cmenucap').asstring:=item.caption;  {将数据项填入数据表}
//  dfmteam.tbltmenu.fieldbyname ('cmenuname').asstring:=item.Name; {将数据项填入数据表}
//  dfmteam.tbltmenu.Post ; {提交}
  if Node = nil then
    n := Treeview2.Items.AddChild(node, '系统菜单项')
//    Treeview2.items.Itemid:=item.Name
  else
    with dfmteam.tbltmenu do
    begin
    indexfieldnames:='cmenuname';
//    first;
    if locate('cmenuname',item.name,[loPartialKey]) then
      if dfmteam.tbltmenu.fieldbyname('cmenuind').asstring='0' then
        if pos(vgroup+'1',fieldbyname('climit').asstring)>0 then
          begin
            n := Treeview2.Items.AddChild(Node,'√'+ str);
//            Node.stateIndex := Node.level;
          end
        else
          begin
            n := Treeview2.Items.AddChild(Node,'〤'+ str);
//            Node.stateIndex := Node.level;
          end
      else
        begin
//          treeview2.Items.
          n := Treeview2.Items.AddChild(Node, '〇'+str);
//          Node.stateIndex := Node.level;
        end;
    end;

//     n := Treeview2.Items.AddChild(Node, str);
         //. AddChildobject(Node, Item.Caption,pstr);
  //@ 第归调用,显示全部菜单结构
  for nCnt := 0 to Item.Count - 1 do
    ShowMenuItems(n, Item.Items[nCnt]);
end;


procedure Tdfmgroupinfo.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  action:=cafree;
end;

procedure Tdfmgroupinfo.FormShow(Sender: TObject);
begin
  TreeView2.Items.BeginUpdate;
     ShowMenuItems(nil,mainform.mmMainMenu.Items);
  TreeView2.Items.EndUpdate;
//  treeview2.AutoExpand:=true;
//  treeview2.Items:=true;
  treeview2.FullExpand;
  treeview2.refresh;
end;

procedure Tdfmgroupinfo.TreeView2MouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
//  AnItem: TTreeNode;
  MyHitTest : THitTests;
  fstr:string; {第一个字符}
  lstr:string; {后面的字符}
  wstr:Integer; {字符串的长度}
  iname:string; {item名}
  vname:string; {字符串}
  vlen:integer; {组编号的长度}
  ind:integer; {组编号在字符串中的位置}
begin
//  AnItem := TreeView1.GetNodeAt(X, Y);
  MyHitTest := TreeView2.GetHitTestInfoAt(X,Y);
  if htOnlabel in MyHitTest then
  begin
      If ( TreeView2.Selected <> nil ) Then
      begin
          iname:=treeview2.Selected.Text;
          wstr:=length(treeview2.Selected.Text);
          fstr:=copy(trim(treeview2.Selected.Text),0,2);
          lstr:=copy(trim(treeview2.selected.text),3,wstr);
          dfmteam.tbltmenu.IndexFieldNames:='cmenucap';
          if dfmteam.tbltmenu.locate('cmenucap',lstr,[loPartialKey]) then
          begin
            if '√'=fstr then
            begin
              treeview2.Selected.text:='〤'+lstr;
              vname:=dfmteam.tbltmenu.fieldbyname('climit').asstring;
              vlen:=length(vgroup)+2;
              ind:=pos(vgroup,vname);
              delete(vname,ind,vlen);
              insert(vgroup+'0'+',',vname,ind);
              dfmteam.tbltmenu.Edit;
              dfmteam.tbltmenu.fieldbyname('climit').asstring:=vname;
              dfmteam.tbltmenu.Post;
            end;
            if '〤'=fstr then
            begin
              treeview2.Selected.text:='√'+lstr;
              vname:=dfmteam.tbltmenu.fieldbyname('climit').asstring;
              vlen:=length(vgroup)+2;
              ind:=pos(vgroup,vname);
              delete(vname,ind,vlen);
              insert(vgroup+'1'+',',vname,ind);
              dfmteam.tbltmenu.Edit;
              dfmteam.tbltmenu.fieldbyname('climit').asstring:=vname;
              dfmteam.tbltmenu.Post;
            end;
          end;
      end;
  end;
end;

procedure Tdfmgroupinfo.BitBtn_okClick(Sender: TObject);
var
//  ListItem: TListItem;
  vsq:string;
begin
  vsq:='';
  vfield:=dbedit1.text;
    if (length(dbedit1.text)=3) and (dbedit2.Text<>'') then
    begin
      if dfmteam.tbltrole.State=dsedit then
      begin
        dfmteam.tbltrole.Post;
        tblstachange;
        self.close;
      end
      else
        begin
          dfmteam.tbltrole.Post;
          tblstachange;
          with dfmteam.tbltmenu do
          begin
            first;
            while not eof do
            begin
              edit;
              fieldbyname('climit').asstring:=fieldbyname('climit').asstring
                       +vfield+fieldbyname('cmenuind').asstring+',';
              next;
            end;
          end;
          self.close;
        end;
        dfmteam.showlistview1;
  end
  else
    showmessage('组编号为3位,组名称不能为空!');
end;

procedure Tdfmgroupinfo.FormCreate(Sender: TObject);
begin
  tblstachange;
end;

procedure Tdfmgroupinfo.BitBtn_addClick(Sender: TObject);
begin
  dfmteam.tbltrole.append;
  tblstachange;
end;

procedure Tdfmgroupinfo.BitBtn_delClick(Sender: TObject);
var
  vname:string;
  ind:integer;
  vlen:integer;
begin
  vfield:=dbedit1.Text;
  if trim(vfield)<>'MAS' then
  begin
    dfmteam.tbltrole.delete;
    dfmteam.tbltmenu.first;
    while not dfmteam.tbltmenu.eof do
    begin
      vname:=dfmteam.tbltmenu.fieldbyname('climit').asstring;
      ind:=pos(vfield,vname);
      vlen:=length(vfield)+2;
      delete(vname,ind,vlen);
      dfmteam.tbltmenu.edit;
      dfmteam.tbltmenu.fieldbyname('climit').asstring:=vname;
      dfmteam.tbltmenu.next;
    end;
    dfmteam.showlistview1;
  end
  else
    application.MessageBox ('不能删除管理员组!','提示信息',mb_ok);
end;


procedure Tdfmgroupinfo.BitBtn_editClick(Sender: TObject);
begin
  dfmteam.tbltrole.edit;
  tblstachange;
end;

procedure Tdfmgroupinfo.BitBtn_cancelClick(Sender: TObject);
begin
  dfmteam.tbltrole.cancel;
  tblstachange;
end;

end.

⌨️ 快捷键说明

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