📄 main.pas
字号:
SQLStr := 'select Per_i,Per_Name,Per_dlmz,Per_dlmm from PMPerson ';
SQLStr := SQLStr + 'where not((Per_dlmz is null) or (Per_dlmz='''')) ';
SQLStr := SQLStr + 'order by Per_i';
ExecQuery(DM.DSetUser, SQLStr);
//FormatCDM.DSet( DM.DSet1 );
except
showErrMsg('数据库读写错误!');
end;
end;
procedure TFrmMain.ShowUserIncPost;
var
UserID:integer;
SQLStr: string;
begin
try
if not ( DM.DSetUser.Active and ( DM.DSetUser.RecordCount > 0 ) ) then
begin
DM.DSetUserIncPost.Active := False ;
Exit;
end;
UserID := DM.DSetUser.fieldbyName('Per_i').AsInteger ;
SQLStr := 'select a.* from PMjs a,PMryjs b '
+ 'where b.ryjs_ryi = ' + IntToStr(UserID) + ' and '
+ 'b.ryjs_jsi = a.js_i '
+ 'order by a.js_mc';
ExecQuery(DM.DSetUserIncPost, SQLStr);
except
showErrMsg('数据库读写错误!');
end;
end;
procedure TFrmMain.ShowUserExPost;
var
SQLStr: string;
UserID: Integer;
begin
try
if not ( DM.DSetUser.Active and ( DM.DSetUser.RecordCount > 0 ) ) then
begin
DM.DSetUserExPost.Active := False ;
Exit;
end;
UserID := DM.DSetUser.fieldbyName('Per_i').AsInteger ;
SQLStr := 'select * from PMjs where js_i not in '
+ ' (select a.js_i from PMjs a,PMryjs b'
+ ' where b.ryjs_ryi = ' + IntToStr(UserID) + ' and '
+ 'b.ryjs_jsi = a.js_i) '
+ 'order by js_mc';
ExecQuery(DM.DSetUserExPost, SQLStr);
except
showErrMsg('数据库读写错误!');
end;
end;
procedure TFrmMain.ShowUserIncPur;
var
TempDS: TADODataSet;
SQLStr,PurStr,tempStr: string;
i,j: Integer;
begin
TempDS := TADODataSet.Create(nil);
TempDS.Connection := DM.ADOConnection1 ;
try
if not ( DM.DSetUser.Active and ( DM.DSetUser.RecordCount > 0 ) ) then
begin
DM.DSetUserIncPur.Active := False ;
Exit;
end;
//查找用户包含的权限组
SQLStr := 'select distinct a.gnz_gn ';
SQLStr := SQLStr + 'from PMgnz a,PMjsgn b,PMryjs c ';
SQLStr := SQLStr + 'where c.ryjs_ryi = '
+ DM.DSetUser.FieldByName('Per_i').AsString + ' and ';
SQLStr := SQLStr + 'b.jsgn_gni = a.gnz_i and ';
SQLStr := SQLStr + 'c.ryjs_jsi = b.jsgn_jsi';
try
ExecQuery(TempDS, SQLStr);
except
showErrMsg('数据库读写错误!');
end;
//返回用户对应的权限字符
PurStr := '';
with TempDS do
begin
if Active and (RecordCount > 0) then
begin
First;
while not Eof do
begin
tempStr := fieldByName('gnz_gn').AsString ;
j := min(length(PurStr),length(tempStr));
for i := 1 to j do
begin
PurStr[i] := chr(ord(PurStr[i]) or ord(tempStr[i]));
end;
if j<Length(tempStr) then
begin
Purstr := PurStr + copy(tempStr,j+1,length(tempStr)-j);
end;
Next;
end;
end;
end;
ReadPurInStr(DM.DSetUserIncPur,PurStr);
finally
TempDS.Free;
end;
end;
procedure TFrmMain.UserAddPost;
var
sSQL: string;
i,recNo: Integer;
ArrayOfSQL : TStrings ;
begin
RecNo := DM.DSetUserExPost.RecNo ;
ArrayOfSQL := nil;
if DBGridUserExPost.Focused and (DM.DSetUserExPost.RecordCount > 0) then
begin
if DBGridUserExPost.SelectedRows.Count > 1 then
begin
try
ArrayOfSQL := TStringList.Create ;
for i := 0 to DBGridUserExPost.SelectedRows.Count - 1 do
begin
DBGridUserExPost.DataSource.DataSet.
GotoBookmark(pointer(DBGridUserExPost.SelectedRows.Items[i]));
sSQL := 'insert into PMryjs(ryjs_ryi,ryjs_jsi) values(';
sSQL := sSQL + DM.DSetUser.FieldByName('Per_i').AsString + ',';
sSQL := sSQL+DM.DSetUserExPost.FieldByName('js_i').AsString + ')';
ArrayOfSQL.Add(sSQL);
end;
try
BatchSQL(ArrayOfSQL);
except
showErrMsg('数据库读写错误!');
end;
finally
ArrayOfSQL.Free ;
end;
end
else
begin
sSQL := 'insert into PMryjs(ryjs_ryi,ryjs_jsi) values(';
sSQL := sSQL + DM.DSetUser.FieldByName('Per_i').AsString + ',';
sSQL := sSQL + DM.DSetUserExPost.FieldByName('js_i').AsString + ')';
try
ExecQuery2(sSQL);
except
showErrMsg('数据库读写错误!');
end;
end;
ShowUserIncPost;
ShowUserIncPur;
ShowUserExPost ;
if RecNo > DM.DSetUserExPost.RecordCount then dec(recNo);
if not DM.DSetUserExPost.IsEmpty then
DM.DSetUserExPost.RecNo := RecNo ;
end;
end;
procedure TFrmMain.UserDelPost;
var
sSQL: string;
i,recNo: Integer;
ArrayOfSQL : TStrings;
begin
RecNo := DM.DSetUserIncPost.RecNo ;
ArrayOfSQL := nil;
if DBGridUserIncPost.Focused and (DM.DSetUserIncPost.RecordCount > 0) then
begin
if DBGridUserIncPost.SelectedRows.Count > 1 then
begin
try
ArrayOfSQL := TStringList.Create;
for i := 0 to DBGridUserIncPost.SelectedRows.Count - 1 do
begin
DBGridUserIncPost.DataSource.DataSet.
GotoBookmark(pointer(DBGridUserIncPost.SelectedRows.Items[i]));
sSQL := 'delete from PMryjs where ryjs_ryi = ';
sSQL := sSQL + DM.DSetUser.FieldByName('Per_i').AsString
+ ' and ryjs_jsi = ';
sSQL := sSQL + DM.DSetUserIncPost.FieldByName('js_i').AsString;
ArrayOfSQL.Add(sSQL);
end;
try
BatchSQL(ArrayOfSQL);
except
showErrMsg('数据库读写错误!');
end;
finally
ArrayOfSQL.Free ;
end;
end
else
begin
sSQL := 'delete from PMryjs where ryjs_ryi = ';
sSQL := sSQL + DM.DSetUser.FieldByName('Per_i').AsString
+ ' and ryjs_jsi = ';
sSQL := sSQL + DM.DSetUserIncPost.FieldByName('js_i').AsString;
try
ExecQuery2(sSQL);
except
showErrMsg('数据库读写错误!');
end;
end;
ShowUserIncPost;
ShowUserIncPur;
ShowUserExPost ;
if RecNo > DM.DSetUserIncPost.RecordCount then dec(recNo);
if not DM.DSetUserIncPost.IsEmpty then
DM.DSetUserIncPost.RecNo := RecNo ;
end;
end;
procedure TFrmMain.DSLocalGroupDataChange(Sender: TObject;
Field: TField);
begin
if DM.DSetGroup.RecordCount > 0 then
begin
//显示权限组包含的权限
ShowGroupIncPur;
//显示权限组不包含的权限
ShowGroupExPur;
end;
end;
procedure TFrmMain.SpeedButton1Click(Sender: TObject);
begin
UserAddPost;
end;
procedure TFrmMain.SpeedButton2Click(Sender: TObject);
begin
UserDelPost;
end;
procedure TFrmMain.SpeedButton3Click(Sender: TObject);
begin
PostAddGroup;
end;
procedure TFrmMain.SpeedButton4Click(Sender: TObject);
begin
PostDelGroup;
end;
procedure TFrmMain.SpeedButton5Click(Sender: TObject);
begin
GroupAddPur;
end;
procedure TFrmMain.SpeedButton6Click(Sender: TObject);
begin
GroupDelPur;
end;
procedure TFrmMain.BtnNewUserClick(Sender: TObject);
begin
AddNewUser;
// ReadUserInfo;
end;
procedure TFrmMain.BtnDelUserClick(Sender: TObject);
begin
DelUser;
end;
procedure TFrmMain.BtnNewPostClick(Sender: TObject);
begin
AddNewPost;
end;
procedure TFrmMain.BtnDelPostClick(Sender: TObject);
begin
DelPost;
end;
procedure TFrmMain.BtnNewGroupClick(Sender: TObject);
begin
AddNewGroup;
ShowPostIncGroup;
ShowPostExGroup;
end;
procedure TFrmMain.BtnDelGroupClick(Sender: TObject);
begin
DelGroup(DM.DSetGroup.FieldByName('gnz_i').AsInteger);
end;
procedure TFrmMain.DBGridUserDblClick(Sender: TObject);
var
RecNo: Integer;
begin
if DM.DSetUser.RecordCount <= 0 then Exit;
RecNo := DM.DSetUser.RecNo;
UpdateUser;
ReadUserInfo;
DM.DSetUser.RecNo := RecNo;
end;
procedure TFrmMain.DBGridPostDblClick(Sender: TObject);
begin
if DM.DSetPost.RecordCount <= 0 then Exit;
UpdatePost;
end;
procedure TFrmMain.DBGridGroupDblClick(Sender: TObject);
begin
if DM.DSetGroup.RecordCount <= 0 then Exit;
UpdateGroup;
end;
procedure TFrmMain.DBGridUserIncPostDblClick(Sender: TObject);
begin
UserDelPost;
end;
procedure TFrmMain.DBGridUserExPostDblClick(Sender: TObject);
begin
UserAddPost;
end;
procedure TFrmMain.DBGridPostExGroupDblClick(Sender: TObject);
begin
PostAddGroup;
end;
procedure TFrmMain.DBGridPostIncGroupDblClick(Sender: TObject);
begin
PostDelGroup;
end;
procedure TFrmMain.DBGridGroupExPurDblClick(Sender: TObject);
begin
GroupAddPur;
end;
procedure TFrmMain.DBGridGroupIncPurDblClick(Sender: TObject);
begin
GroupDelPur;
end;
procedure TFrmMain.PageCtrlPurDrawTab(
Control: TCustomTabControl; TabIndex: Integer; const Rect: TRect;
Active: Boolean);
var
sTitle : string;
sControl : TControl;
x, y : Integer;
begin
if TabIndex > Control.ControlCount then
Exit;
sTitle := '';
sControl := TPageControl( Control ).Pages[TabIndex];
if sControl <> nil then
sTitle := TTabSheet( sControl ).Caption
else
Exit;
x := Control.Canvas.TextWidth( sTitle );
x := Round( ( Rect.Right - Rect.Left - x ) / 2 );
y := 4;
Control.Brush.Color := $00FFF5F0;
Control.Canvas.Font.Color := clNavy;
Control.Canvas.TextRect( Rect, Rect.Left + x, Rect.Top + y, sTitle );
end;
procedure TFrmMain.DBGridUserExPostKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
if (Key = VK_LEFT ) and ( Shift = [ssCtrl]) then UserAddPost;
end;
procedure TFrmMain.DBGridUserIncPostKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
if (Key = VK_RIGHT) and (Shift = [ssCtrl]) then UserDelPost;
end;
procedure TFrmMain.DBGridPostExGroupKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
if (Key = VK_LEFT) and (Shift = [ssCtrl]) then PostAddGroup;
end;
procedure TFrmMain.DBGridPostIncGroupKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
if (Key = VK_RIGHT) and (Shift = [ssCtrl]) then PostDelGroup;
end;
procedure TFrmMain.DBGridGroupExPurKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
if (Key = VK_LEFT) and (Shift = [ssCtrl]) then GroupAddPur;
end;
procedure TFrmMain.DBGridGroupIncPurKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
if (Key = VK_RIGHT) and (Shift = [ssCtrl]) then GroupDelPur;
end;
procedure TFrmMain.DBGridUserIncPostCellClick(Column: TColumn);
begin
DBGridUserExPost.SelectedRows.Clear;
end;
procedure TFrmMain.DBGridUserExPostCellClick(Column: TColumn);
begin
DBGridUserIncPost.SelectedRows.Clear;
end;
procedure TFrmMain.DBGridPostIncGroupCellClick(Column: TColumn);
begin
DBGridPostExGroup.SelectedRows.Clear;
end;
procedure TFrmMain.DBGridPostExGroupCellClick(Column: TColumn);
begin
DBGridPostIncGroup.SelectedRows.Clear;
end;
procedure TFrmMain.DBGridGroupIncPurCellClick(Column: TColumn);
begin
DBGridGroupExPur.SelectedRows.Clear;
end;
procedure TFrmMain.DBGridGroupExPurCellClick(Column: TColumn);
begin
DBGridGroupIncPur.SelectedRows.Clear;
end;
procedure TFrmMain.FormCreate(Sender: TObject);
begin
inherited;
FormShow(Sender);
end;
procedure TFrmMain.DSLocalPostDataChange(Sender: TObject;
Field: TField);
begin
if DM.DSetPost.RecordCount > 0 then
begin
//显示岗位包含的权限组
ShowPostIncGroup;
//显示岗位不包含的权限组
ShowPostExGroup;
//显示岗位包含的权限
ShowPostIncPur;
end;
inherited;
end;
procedure TFrmMain.DSLocalUserDataChange(Sender: TObject;
Field: TField);
begin
if DM.DSetUser.RecordCount > 0 then
begin
//显示岗位包含的权限组
ShowUserIncPost ;
//显示岗位不包含的权限组
ShowUserExPost ;
//显示岗位包含的权限
ShowUserIncPur;
end;
inherited;
end;
procedure TFrmMain.SpeedButton7Click(Sender: TObject);
begin
inherited;
Close;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -