📄 frame_right.~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 + -