📄 untbaseright.pas
字号:
unit UntBaseRight;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, ToolWin, ImgList, ExtDlgs, Menus, StdCtrls, ExtCtrls,Db,DBTables,
Buttons;
type
TfrmBaseRight = class(TForm)
pnlLeft: TPanel;
tvRight: TTreeView;
pnlRight: TPanel;
Panel1: TPanel;
lblName: TLabel;
lblPassword: TLabel;
lblLogon: TLabel;
edtRightName: TEdit;
stcRightCode: TStaticText;
redtRgihtMemo: TRichEdit;
tbAdd: TBitBtn;
tbEdit: TBitBtn;
tbDelete: TBitBtn;
tbRefresh: TBitBtn;
tbSave: TBitBtn;
tbCancel: TBitBtn;
imlUser: TImageList;
bbtnExit: TBitBtn;
procedure FormShow(Sender: TObject);
procedure tbAdd1Click(Sender: TObject);
procedure edtRightNameChange(Sender: TObject);
procedure tbSave1Click(Sender: TObject);
procedure tvRightChange(Sender: TObject; Node: TTreeNode);
procedure tbCancel1Click(Sender: TObject);
procedure tbEdit1Click(Sender: TObject);
procedure tbDelete1Click(Sender: TObject);
procedure tbRefresh1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure tbSaveClick(Sender: TObject);
procedure tbAddClick(Sender: TObject);
procedure tbEditClick(Sender: TObject);
procedure tbDeleteClick(Sender: TObject);
procedure tbRefreshClick(Sender: TObject);
procedure tbCancelClick(Sender: TObject);
procedure bbtnExitClick(Sender: TObject);
private
{ Private declarations }
TempQuery:Tquery;
procedure CreateRightTree;
function GetNextRightCode(sRightCode:string): string;
function ConnectDatabase:boolean;
public
{ Public declarations }
gQuery:TQuery;
end;
var
frmBaseRight: TfrmBaseRight;
implementation
uses UnitDataModul,UntPub;
{$R *.dfm}
function TfrmBaseRight.ConnectDatabase: boolean;
begin
try
gQuery:= TQuery.Create(nil);
gQuery.DatabaseName:='LYDB';
TempQuery:=TQuery.create(nil);
TempQuery.DatabaseName:= 'LYDB';
Result:= True;
except
On E: Exception Do
begin
Result:= False;
// MessageBox(pchar('连接数据库有误'),pchar('连接错误'),MB_ICONINFORMATION);
end;
end;
end;
procedure TfrmBaseRight.CreateRightTree;
var
TreeNode,TempNode1,TempNode2: TTreeNode;
sTempCode:string;
begin
Try
tvRight.Items.Clear;
With gQuery Do
begin
SQl.Clear;
Unprepare;
SQL.Add('select * from Ent_sys_Rights where substring(PermCode,3,2)=''00'' order by PermCode');
Prepare;
Active:= True;
//加入用户组结点
TreeNode:= tvRight.Items.AddFirst(nil,'所有权限');
TreeNode.ImageIndex:= 6;
TreeNode.SelectedIndex:= 6;
TreeNode.StateIndex:=6;
first;
While Not Eof Do
begin
TempNode1:= tvright.Items.AddChild(TreeNode,FieldbyName('PermName').AsString);
TempNode1.ImageIndex:= 8;
TempNode1.SelectedIndex:= 8;
TempNode1.StateIndex:=strtoint(FieldbyName('PermCode').AsString);
sTempCode:=copy(FieldbyName('PermCode').AsString,1,2);
//加入用户角色结点
With TempQuery Do
begin
SQL.Clear;
SQL.Add('select * from Ent_sys_Rights where substring(PermCode,1,2)='''+sTempCode+''' and substring(PermCode,3,2)<>''00'' order by PermCode');
Prepare;
Active:= True;
First;
While Not Eof Do
Begin
TempNode2:= tvRight.Items.AddChild(TempNode1,Fieldbyname('PermName').Asstring);
TempNode2.ImageIndex:= 9;
TempNode2.SelectedIndex:= 9;
TempNode2.StateIndex:=strtoint(FieldbyName('PermCode').AsString);
sTempCode:=copy(FieldbyName('PermCode').AsString,1,2);
//加入用户结点
Next;
End;
Active:= False;
end;
next;
end;
Active:= False;
end;
Except
//MsgBox('无法在树型控件中显示数据库中的数据!','显示',MB_ICONINFORMATION);
end;
end;
procedure TfrmBaseRight.FormShow(Sender: TObject);
begin
if not ConnectDatabase then
Application.MessageBox('连接数据库出错!', Pchar(_sAppTitle), MB_ICONERROR + MB_OK);
CreateRightTree;
edtRightName.Enabled:=false;
redtRgihtMemo.Enabled:=false;
tbSave.enabled:=false;
tbCancel.enabled:=false;
stcRightCode.Caption:='';
edtRightName.Text:='';
redtRgihtMemo.Text:='';
end;
function TfrmBaseRight.GetNextRightCode(sRightCode:string): string;
var
sStr,sTemp:string;
iTemp:integer;
begin
//得到下一个权限类别的代码
if sRightCode='' then
begin
With gQuery Do
begin
SQl.Clear;
Unprepare;
SQL.Add('select isnull(Max(PermCode),''00000000'') as MaxPermCode from Ent_sys_Rights ');
Prepare;
Active:= True;
sStr:=fieldbyname('MaxPermCode').AsString;
end;
sStr:='00'+inttostr(strtoint(Copy(sStr,1,2))+1)+'000000';
iTemp:=Length(sstr)-8+1;
result:=copy(sStr,iTemp,8);
end
else
begin
With gQuery Do
begin
SQl.Clear;
Unprepare;
sTemp:=copy(sRightCode,1,2);
SQL.Add('select Max(PermCode) as MaxPermCode from Ent_sys_Rights where substring(PermCode,1,2)='''+sTemp+'''');
Prepare;
Active:= True;
sStr:=fieldbyname('MaxPermCode').AsString;
end;
sTemp:=copy(sStr,1,2);
sStr:='00'+inttostr(strtoint(Copy(sStr,3,2))+1)+'0000';
iTemp:=Length(sstr)-6+1;
sStr:=sTemp+copy(sStr,iTemp,6);
result:=sStr;
end;
end;
procedure TfrmBaseRight.tbAdd1Click(Sender: TObject);
var
newNode:Ttreenode;
sCode,sRightCode:string;
begin
if tvRight.Selected.Level=0 then
begin
tbAdd.enabled:= False;
tbEdit.enabled:= False;
tbDelete.enabled:= False;
tbRefresh.enabled:= False;
tbSave.enabled:=true;
tbCancel.enabled:=true;
//清空编辑框
edtRightName.Clear;
redtRgihtMemo.Clear;
newNode:=tvright.Items.AddChild(tvright.Selected,'');
newNode.ImageIndex:= 8;
newNode.SelectedIndex:= 8;
newNode.Selected:=true;
edtRightName.Enabled:=true;
redtRgihtMemo.Enabled:=true;
tbSave.Tag:= 1;
stcRightCode.caption:=GetNextRightCode('');
newNode.StateIndex:=strtoint(stcRightCode.caption);
edtRightName.SetFocus;
end
else if tvRight.Selected.Level=1 then
begin
tbAdd.enabled:= False;
tbEdit.enabled:= False;
tbDelete.enabled:= False;
tbRefresh.enabled:= False;
tbSave.enabled:=true;
tbCancel.enabled:=true;
//清空编辑框
edtRightName.Clear;
redtRgihtMemo.Clear;
sCode:='00'+inttostr(tvRight.Selected.StateIndex);
sRightCode:=copy(sCode,length(sCode)-8+1,8);
newNode:=tvright.Items.AddChild(tvright.Selected,'');
newNode.Selected:=true;
newNode.ImageIndex:= 9;
newNode.SelectedIndex:= 9;
edtRightName.Enabled:=true;
redtRgihtMemo.Enabled:=true;
tbSave.Tag:= 2;
stcRightCode.caption:=GetNextRightCode(sRightCode);
newnode.StateIndex:=strtoint(stcRightCode.caption);
edtRightName.SetFocus;
end;
end;
procedure TfrmBaseRight.edtRightNameChange(Sender: TObject);
begin
if tbSave.Tag<>0 then Tvright.Selected.Text:=edtRightName.Text;
end;
procedure TfrmBaseRight.tbSave1Click(Sender: TObject);
begin
if (tbSave.Tag=1) or (tbSave.tag=2 )then
begin
With gQuery Do
begin
SQl.Clear;
Unprepare;
SQL.Add('insert Ent_sys_Rights(PermName,PermDesc,PermCode) values ('''
+edtRightName.Text+''','''+redtRgihtMemo.Text+''','''+stcRightCode.Caption+''') ');
Prepare;
ExecSQL;
end;
edtRightName.Enabled:=false;
redtRgihtMemo.Enabled:=false;
end;
if (tbSave.Tag=3) then
begin
With gQuery Do
begin
SQl.Clear;
Unprepare;
SQL.Add('update Ent_sys_Rights set PermName='''+edtRightName.Text+''',PermDesc='''+redtRgihtMemo.Text+''' where PermCode='''+stcRightCode.Caption+'''');
Prepare;
ExecSQL;
end;
edtRightName.Enabled:=false;
redtRgihtMemo.Enabled:=false;
end;
tbSave.Tag:= 0;
tbAdd.enabled:= true;
tbEdit.enabled:= true;
tbDelete.enabled:= true;
tbRefresh.enabled:= true;
tbSave.enabled:=false;
tbCancel.enabled:=false;
end;
procedure TfrmBaseRight.tvRightChange(Sender: TObject; Node: TTreeNode);
var
sPermCode,sTemp:string;
begin
if tvRight.Tag=0 then
begin
if (tvright.Selected.Level=1) or (tvright.selected.Level=2) then
begin
sTemp:='00'+inttostr(tvright.Selected.stateindex);
sPermCode:=copy(sTemp,Length(sTemp)-8+1,8);
With gQuery Do
begin
SQl.Clear;
Unprepare;
SQL.Add('select * from Ent_sys_Rights where PermCode = '''+sPermCode+'''');
Prepare;
active:=true;
end;
stcRightCode.Caption:=gQuery.fieldbyname('PermCode').AsString;
edtRightName.Text:=gQuery.fieldbyname('PermName').AsString;
redtRgihtMemo.Text:=gQuery.fieldbyname('PermDesc').AsString;
end;
if (tvright.Selected.Level=0) then
begin
tbAdd.Enabled:=true;
tbedit.Enabled:=false;
tbdelete.Enabled:=false;
stcRightCode.Caption:='';
edtRightName.Text:='';
redtRgihtMemo.Text:='';
end
else if (tvright.Selected.Level=1) then
begin
tbAdd.Enabled:=true;
tbedit.Enabled:=true;
tbdelete.Enabled:=true;
end
else if (tvright.Selected.Level=2) then
begin
tbAdd.Enabled:=false;
tbedit.Enabled:=true;
tbdelete.Enabled:=true;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -