📄 rc_powerassignmanage.pas
字号:
unit RC_PowerAssignManage;
{
代码单元名称:通用权限分配工具功能资源权限分配窗口
从属软件:大连资金清算中心打码机管理信息系统
开发单位:大连理工大学计算机技术研究所软件工程研究室
作者:王树润
时间:2001,1,30
}
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Mask, DBCtrls, ExtCtrls, ComCtrls, ToolWin, ImgList, db, dbTables,
Grids, DBGrids, ADOdb, Buttons, Variants;
type
TRC_DfmPowerAssignManage = class(TForm)
CoolBar1: TCoolBar;
ToolBar1: TToolBar;
ToolButton1: TToolButton;
CloseToolButton: TToolButton;
Imagilist1: TImageList;
DBGrid1: TDBGrid;
FunctionResourceToolButton: TToolButton;
GroupBox1: TGroupBox;
AddSpeedButton: TSpeedButton;
DeleteSpeedButton: TSpeedButton;
Label2: TLabel;
Label3: TLabel;
ListBox1: TListBox;
ListBox2: TListBox;
GroupBox2: TGroupBox;
Label1: TLabel;
Label4: TLabel;
ConfirmToolButton: TToolButton;
UserOrUserGroupName: TDBEdit;
UserOrUserGroupIdentify: TDBEdit;
DBNavigator1: TDBNavigator;
procedure FormShow(Sender: TObject);
procedure CloseToolButtonClick(Sender: TObject);
procedure FunctionResourceToolButtonClick(Sender: TObject);
procedure AddSpeedButtonClick(Sender: TObject);
procedure DeleteSpeedButtonClick(Sender: TObject);
procedure ConfirmToolButtonClick(Sender: TObject);
procedure DBGrid1CellClick(Column: TColumn);
procedure DBNavigator1Click(Sender: TObject; Button: TNavigateBtn);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
function OpenPowerAssignQuery: Boolean;
function OpenFunctionResourceQuery: Boolean;
procedure PowerBrowse;
procedure SsFunc(strFunc: string; Ssfunc: TStrings);
public
{ Public declarations }
UserToShow, UserGroupToShow: boolean;
UserOrUserGroupDBGrid: TDBGrid;
constructor Create(Owner: Tcomponent; AUserOrUserGroupDBGrid: TDBGrid);
overload;
end;
implementation
uses RC_FunctionResourceManage, RC_DataModule1;
{$R *.DFM}
//构造函数----------------------------------------------------------------------
constructor TRC_DfmPowerAssignManage.Create(Owner: Tcomponent;
AUserOrUserGroupDBGrid: TDBGrid);
begin
inherited Create(Owner);
UserOrUserGroupDBGrid := AUserOrUserGroupDBGrid;
end;
//窗体--------------------------------------------------------------------------
procedure TRC_DfmPowerAssignManage.FormShow(Sender: TObject);
var
UserOrUserGroupFunctionResourceString, SubString: string;
begin
OpenPowerAssignQuery;
OpenFunctionResourceQuery;
//确认使用者------------------------------------------------------------------
UserOrUserGroupName.Text := UserOrUserGroupDBGrid.Fields[0].AsString;
if Trim(UserOrUserGroupDBGrid.Fields[0].DisplayLabel) = '用户名称' then
UserOrUserGroupIdentify.Text := '用户'
else
UserOrUserGroupIdentify.Text := '用户组';
//汉化字段名称----------------------------------------------------------------
RC_DfmDataModule1.DPowerAssignQuery.First;
while not RC_DfmDataModule1.DPowerAssignQuery.Eof do
begin
RC_DfmDataModule1.PowerAssignQuery.FieldByName(Trim(RC_DfmDataModule1.DPowerAssignQuery.FieldByName('FieldNameE').AsString)).DisplayLabel :=
RC_DfmDataModule1.DPowerAssignQuery.FieldByName('FieldNameC').AsString;
RC_DfmDataModule1.DPowerAssignQuery.Next;
end;
RC_DfmDataModule1.PowerAssignQuery.Fields[0].Visible := False;
DBGrid1.DataSource := RC_DfmDataModule1.PowerAssignDataSource;
DBNavigator1.DataSource := RC_DfmDataModule1.PowerAssignDataSource;
//向列表框中输入功能名称------------------------------------------------------
while not RC_DfmDataModule1.FunctionResourceQuery.Eof do
begin
ListBox2.Items.Add(RC_DfmDataModule1.FunctionResourceQuery.Fields[1].AsString);
RC_DfmDataModule1.FunctionResourceQuery.Next;
end;
RC_DfmDataModule1.FunctionResourceQuery.First;
//----------------------------------------------------------------------------
if not RC_DfmDataModule1.PowerAssignQuery.Locate('UOrUGName;UOrUGIden',
VarArrayOf([UserOrUserGroupName.Text, UserOrUserGroupIdentify.Text]), [])
then
Exit;
UserOrUserGroupFunctionResourceString :=
RC_DfmDataModule1.PowerAssignQuery.Fields[3].AsString;
while pos(',', UserOrUserGroupFunctionResourceString) <> 0 do
begin
SubString := copy(UserOrUserGroupFunctionResourceString, 1, pos(',',
UserOrUserGroupFunctionResourceString) - 1);
ListBox1.Items.Add(Trim(SubString));
UserOrUserGroupFunctionResourceString :=
copy(UserOrUserGroupFunctionResourceString, pos(',',
UserOrUserGroupFunctionResourceString) + 1, 400);
end;
SubString := copy(UserOrUserGroupFunctionResourceString, 1, 400);
if SubString <> '' then
ListBox1.Items.Add(Trim(SubString));
end;
//按钮--------------------------------------------------------------------------
procedure TRC_DfmPowerAssignManage.CloseToolButtonClick(Sender: TObject);
begin
Close;
end;
//调整资源======================================================================
procedure TRC_DfmPowerAssignManage.AddSpeedButtonClick(Sender: TObject);
begin
if ListBox2.ItemIndex = -1 then
Exit;
if ListBox1.Items.IndexOf(ListBox2.Items[ListBox2.ItemIndex]) = -1 then
ListBox1.Items.Add(ListBox2.Items[ListBox2.ItemIndex]);
end;
procedure TRC_DfmPowerAssignManage.DeleteSpeedButtonClick(Sender: TObject);
begin
if ListBox1.ItemIndex = -1 then
Exit;
ListBox1.Items.Delete(ListBox1.ItemIndex);
end;
//将分配结果写回----------------------------------------------------------------
procedure TRC_DfmPowerAssignManage.ConfirmToolButtonClick(Sender: TObject);
var
ModifyUserOrUserGroupFunctionResourceString: string;
i: integer;
begin
{ TempQuery :=TADOQuery.Create(Self);
with TempQuery do
begin
Connection :=RC_DfmDataModule1.ADOConnection1 ;
Sql.Add('delete from TPowerAssign where UorUGname='+QuotedStr(UserOrUserGroupName.Text));
Try execsql;
except
showmessage('error');
end;
Close ;
Free ;
end;}
for i := 0 to ListBox1.Items.Count - 1 do
ModifyUserOrUserGroupFunctionResourceString :=
Trim(ModifyUserOrUserGroupFunctionResourceString + ListBox1.Items[i]) +
',';
ModifyUserOrUserGroupFunctionResourceString :=
Copy(ModifyUserOrUserGroupFunctionResourceString, 1,
Length(ModifyUserOrUserGroupFunctionResourceString) - 1);
if RC_DfmDataModule1.PowerAssignQuery.Locate('UOrUGName;UOrUGIden',
VarArrayOf([UserOrUserGroupName.Text, UserOrUserGroupIdentify.Text]), [])
then
begin
RC_DfmDataModule1.PowerAssignQuery.Edit;
RC_DfmDataModule1.PowerAssignQuery.FieldByName('FunResName').AsString :=
ModifyUserOrUserGroupFunctionResourceString;
RC_DfmDataModule1.PowerAssignQuery.Post;
end;
Close;
end;
//调用功能资源管理==================================================================
procedure TRC_DfmPowerAssignManage.FunctionResourceToolButtonClick(
Sender: TObject);
var
DfmFunctionResouirceManage: TRC_DfmFunctionResouirceManage;
begin
DfmFunctionResouirceManage := TRC_DfmFunctionResouirceManage.Create(Self);
DfmFunctionResouirceManage.ShowModal;
DfmFunctionResouirceManage.Free;
end;
function TRC_DfmPowerAssignManage.OpenPowerAssignQuery: Boolean;
begin
Result := False;
//打开功能权限分配表----------------------------------------------------------------
with RC_DfmDataModule1.PowerAssignQuery do
begin
if Active then
Close;
Sql.Clear;
if UserToShow then
Sql.Add('Select * From TPowerAssign where UOrUGIden=' + QuotedStr('用户'))
else if UserGroupToShow then
Sql.add('Select * From TPowerAssign where UOrUGIden=' +
QuotedStr('用户组'));
try
Open;
except
ShowMessage('无法打开库表!');
Exit;
end;
end;
RC_DfmDataModule1.PowerAssignQuery.FieldByName('PAId').Alignment :=
taLeftJustify;
with RC_DfmDataModule1.DPowerAssignQuery do
begin
if Active then
Close;
Sql.Clear;
Sql.Add('Select * From DPowerAssign');
try
Open;
except
ShowMessage('无法打开库表!');
Exit;
end;
end;
Result := True;
end;
function TRC_DfmPowerAssignManage.OpenFunctionResourceQuery: Boolean;
begin
Result := False;
with RC_DfmDataModule1.FunctionResourceQuery do
begin
Close;
Sql.Clear;
Sql.Add('Select * From TFunctionResource');
try
Open;
except
ShowMessage('无法打开库表!');
Exit;
end;
end;
RC_DfmDataModule1.FunctionResourceQuery.FieldByName('FunResId').Alignment :=
taLeftJustify;
with RC_DfmDataModule1.DFunctionResourceQuery do
begin
Close;
Sql.Clear;
Sql.Add('Select * From DFunctionResource');
try
Open;
except
ShowMessage('无法打开库表!');
Exit;
end;
end;
Result := True;
end;
procedure TRC_DfmPowerAssignManage.DBGrid1CellClick(Column: TColumn);
begin
PowerBrowse;
end;
procedure TRC_DfmPowerAssignManage.DBNavigator1Click(Sender: TObject;
Button: TNavigateBtn);
begin
PowerBrowse;
end;
procedure TRC_DfmPowerAssignManage.PowerBrowse;
var
Func: TStrings;
strFunc: string;
begin
if (DBGrid1.DataSource.DataSet is TADOTable) then
begin
UserOrUserGroupName.Text := (DBGrid1.DataSource.DataSet as
TADOTable).FieldByName('UOrUGName').AsString;
UserOrUserGroupIdentify.Text := (DBGrid1.DataSource.DataSet as
TADOTable).FieldByName('UOrUGIden').AsString;
end;
if (DBGrid1.DataSource.DataSet is TADOQuery) then
begin
UserOrUserGroupName.Text := (DBGrid1.DataSource.DataSet as
TADOQuery).FieldByName('UOrUGName').AsString;
UserOrUserGroupIdentify.Text := (DBGrid1.DataSource.DataSet as
TADOQuery).FieldByName('UOrUGIden').AsString;
end;
Func := TStringList.Create;
strFunc := (DBGrid1.DataSource.DataSet as
TADOQuery).FieldByName('FunResName').AsString;
SsFunc(strFunc, Func);
ListBox1.Items.Assign(Func);
Func.Free;
end;
procedure TRC_DfmPowerAssignManage.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action := caFree;
end;
procedure TRC_DfmPowerAssignManage.SsFunc(strFunc: string; Ssfunc: TStrings);
var
sFunc: string;
begin
if Trim(strFunc) = ' ' then
Exit;
while Pos(',', strFunc) <> 0 do
begin
sFunc := Copy(strFunc, 1, Pos(',', strFunc) - 1);
StrFunc := Copy(strFunc, Pos(',', strFunc) + 1, Length(strFunc) - Pos(',',
strFunc));
Ssfunc.Add(sFunc);
end;
SsFunc.add(strFunc);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -