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

📄 frame_right.~pas

📁 企业信息管理系统程序框架
💻 ~PAS
字号:
unit frame_right;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  frame_UtilFunc,ADODB,Adoxquery,Dialogs, frame_uTradeBase, dcfdes, ImgList, ComCtrls, ExtCtrls, ToolWin;

type
  PNodeInfo = ^TNodeInfo;
  TNodeInfo = record
    seqn:string;
    childflag:string;
  end;

  Tframe_frmRight = class(Tframe_frmTradeBase)
    tlb1: TToolBar;
    btn1: TToolButton;
    tvrole: TTreeView;
    spl1: TSplitter;
    tvtrade: TTreeView;
    ilUserImage: TImageList;
    ilRightImage: TImageList;
    procedure btn1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure tvroleCustomDrawItem(Sender: TCustomTreeView;
      Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
    procedure tvroleChange(Sender: TObject; Node: TTreeNode);
    procedure tvtradeChange(Sender: TObject; Node: TTreeNode);
    procedure tvtradeCustomDrawItem(Sender: TCustomTreeView;
      Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
    procedure tvtradeDblClick(Sender: TObject);
  private
    { Private declarations }
    procedure showtrades;
    procedure showRole;
    procedure addChildtrades(rnode:TTreeNode);
  public
    { Public declarations }
  end;

var
  frame_frmRight: Tframe_frmRight;

implementation

uses frame_uDM;

{$R *.dfm}

{ Tframe_frmRight }

procedure Tframe_frmRight.addChildtrades(rnode:TTreeNode);
var
  pnode,ptradeinfo:pnodeinfo;
  seqn:string;
  tmpnode:TTreeNode;
  myqry:Tadoxquery;
begin
  myQry:=Tadoxquery.create(Self);
  myqry.Connection:=TADOConnection(frame_DM.con);
  ptradeinfo:=rnode.Data;
  seqn:=ptradeinfo.seqn;
  OpenSQL(myqry,'select * from t_tradecode where uppertradeseqn=:p1 order by tradeid ',[seqn]);
  myqry.first;
  while not myqry.Eof DO
  begin
    New(pNode);
    pNode^.seqn:=myQry.fieldByName('tradeseqn').AsString;
    pNode^.childflag:='2';
    tmpnode:=tvtrade.Items.AddChildObject(rnode,myQry.fieldByName('tradename').AsString,pNode);{添加节点}
    tmpnode.ImageIndex := 2;
    tmpnode.SelectedIndex:=2;
    addChildtrades(tmpnode);
    myqry.Next;
  end;
  FreeAndNil(myqry);
end;

procedure Tframe_frmRight.showtrades;
var
  tmpnode:TTreeNode;
  pNode:PNodeInfo;
  i:integer;
begin
  New(pNode);
  pNode^.seqn:='0';
  pNode^.childflag:='1';
  tmpnode:=tvtrade.Items.AddChildObject(nil,'交易列表',pNode);{添加根节点}
  tmpnode.ImageIndex := 0;
  tmpnode.SelectedIndex := 0;
  addchildtrades(tmpnode);
  tmpnode.Expand(False);
  tmpNode.Selected :=true;
  Stat.Panels[1].Text := tmpNode.Text ;

end;

procedure Tframe_frmRight.btn1Click(Sender: TObject);
begin
  inherited;
  close;
end;

procedure Tframe_frmRight.FormCreate(Sender: TObject);
begin
  inherited;
  showtrades;
  showRole;
end;

procedure Tframe_frmRight.showRole;
var
  pNode:PNodeInfo;
  tmpnode,roletypenode:TTreeNode;
begin
  New(pNode);
  pNode^.seqn:='0';
  tmpNode := tvRole.Items.AddChildObject(nil,'角色树', pNode); { 添加跟节点 }
  tmpnode.ImageIndex := 0;
  tmpnode.SelectedIndex := 0;
  OpenSQL(GV_Qry,'select * from t_job order by jobseqn',[]);
  while not GV_Qry.Eof do
  begin
    New(pNode);
    pNode^.seqn:=gv_qry.fieldByname('jobseqn').asstring;
    RoleTypeNode:=tvRole.Items.AddChildObject(tmpNode, GV_Qry.fieldByNAme('jobname').asString, pNode); { 添加跟节点 }
    RoleTypeNode.ImageIndex := 1;
    RoleTypeNode.SelectedIndex :=1;

    GV_Qry.Next;
  end;
  tmpnode.Expand(False);
  tmpNode.Selected :=true;
  Stat.Panels[1].Text := tmpNode.Text ;

end;

procedure Tframe_frmRight.tvroleCustomDrawItem(Sender: TCustomTreeView;
  Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
  inherited;
  with Sender.Canvas do
  begin
    if node = Sender.Selected then
      font.Color := clFuchsia;
  end;

end;

procedure Tframe_frmRight.tvroleChange(Sender: TObject; Node: TTreeNode);
var
  pRoleNode,pTradeNode:PNodeInfo;
  level:string;
  i:integer;
begin
  prolenode:=nil;
  Level:='0';
  if (Node<>nil) then
  begin
    pRoleNode:=Node.Data;
  end
  else
  begin
    exit;
  end;
  begin
    // 选择具体角色,则显示权限,退出
    OpenSQL(GV_Qry,'Select * From T_Right Where jobseqn=:p1 ' ,[pRoleNode^.seqn]);
    for i:=0 to tvTrade.Items.Count-1 do
    begin
      pTradeNode:=tvTrade.Items[i].Data;
      if (pTradeNode.childflag='2') then
      begin
        tvTrade.Items[i].SelectedIndex:=2;
        tvTrade.Items[i].ImageIndex:=2;
        With GV_Qry do
        begin
          if Locate('Tradeseqn',pTradeNode^.seqn,[]) then
          begin
            if FieldByName('RightFlag').AsString='1' then
            begin
              tvTrade.Items[i].SelectedIndex:=3;
              tvTrade.Items[i].ImageIndex:=3;
            end;
          end;
        end;
      end;
    end;
  end;
  if tvTrade.Selected.ImageIndex=3 then
    Stat.Panels[2].Text := '有权限'
  else
    Stat.Panels[2].Text := '无权限';
  Stat.Panels[0].Text := Node.Text;

end;

procedure Tframe_frmRight.tvtradeChange(Sender: TObject; Node: TTreeNode);
begin
  inherited;
  Stat.Panels[1].Text := Node.Text;
end;

procedure Tframe_frmRight.tvtradeCustomDrawItem(Sender: TCustomTreeView;
  Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
  inherited;
  with Sender.Canvas do
  begin
    if node = Sender.Selected then
      font.Color := clFuchsia;
  end;

end;

procedure Tframe_frmRight.tvtradeDblClick(Sender: TObject);
var
  pRoleNode,pTradeNode:PNodeInfo;
  level:string;
begin
  // 没有选择角色则不处理
  prolenode:=nil;
  ptradenode:=nil;
  Level:='0';
  if (tvRole.Selected<>nil) then
  begin
    pRoleNOde:=tvRole.Selected.Data;
  end
  else
  begin
    exit;
  end;

  // 选则的是交易则进行处理
  Level:='0';
  if (tvTrade.Selected<>nil) then
  begin
    pTradeNOde:=tvTrade.Selected.Data;
    Level:=ptradeNode^.childflag;
  end;
  // 选择具体交易,则切换授权
  if (Level='2') then
  begin
    ExecuteSQL('Delete From T_Right Where (Tradeseqn=:p1) and '
         + '(jobseqn=:p2) ',[pTradeNode.seqn,pRoleNode^.seqn]);

    // 禁止权限
    if tvTrade.Selected.ImageIndex=3 then
    begin
      Stat.Panels[2].Text := '无权限';
      tvTrade.Selected.ImageIndex:=2;
      tvTrade.Selected.SelectedIndex:=2;
    end
    else
    begin
      ExecuteSQL('Insert Into  T_Right (Tradeseqn,jobseqn,Rightflag) Values(:TradeId,:RoleID,:Right) ',
        [pTradeNode^.seqn,pRoleNode^.seqn,'1']);
      tvTrade.Selected.ImageIndex:=3;
      tvtrade.Selected.SelectedIndex:=3;
      Stat.Panels[2].Text := '有权限'
    end;
  end

end;

end.

⌨️ 快捷键说明

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