📄 userright.pas
字号:
//模块名称:用户权限
unit userright;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, basewin, Menus, ActnList, ImgList, ExtCtrls, ComCtrls, ToolWin,
TFlatCheckBoxUnit, TFlatGroupBoxUnit, StdCtrls, TFlatEditUnit, Buttons,
fcTreeView, XPMenu, TFlatButtonUnit, TFlatSpeedButtonUnit;
type
Tuseradmin_frm = class(Tbasewin_frm)
Panel2: TPanel;
Splitter1: TSplitter;
Exit_but: TAction;
ImageList2: TImageList;
Add_user: TAction;
Del_user: TAction;
N2: TMenuItem;
N3: TMenuItem;
Save_but: TAction;
Panel3: TPanel;
Splitter2: TSplitter;
Panel4: TPanel;
fcTreeView1: TfcTreeView;
fcTreeView3: TfcTreeView;
Modi_user: TAction;
fcTreeView2: TfcTreeView;
MainMenu1: TMainMenu;
useradmin_menu: TMenuItem;
a21: TMenuItem;
a31: TMenuItem;
adduser_submenu: TMenuItem;
modifyuser_submenu: TMenuItem;
deluser_submenu: TMenuItem;
save_submenu: TMenuItem;
N7: TMenuItem;
N1: TMenuItem;
help_but: TAction;
N4: TMenuItem;
Panel5: TPanel;
Panel6: TPanel;
FlatSpeedButton1: TFlatSpeedButton;
FlatSpeedButton2: TFlatSpeedButton;
FlatSpeedButton3: TFlatSpeedButton;
FlatSpeedButton4: TFlatSpeedButton;
{procedure Exit_butExecute(Sender: TObject);
procedure Add_userExecute(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Del_userExecute(Sender: TObject);
procedure Save_butExecute(Sender: TObject);
procedure TreeView1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Modi_userExecute(Sender: TObject);
procedure fcTreeView1ToggleCheckbox(TreeView: TfcCustomTreeView;
Node: TfcTreeNode);
procedure fcTreeView2Click(Sender: TObject);
procedure ListNode(L,H,id:integer;item:TfcTreeNode);
procedure InitTree(Tree:TfcTreeView;Sour:String;const flag:boolean);
procedure fcTreeView3ToggleCheckbox(TreeView: TfcCustomTreeView;
Node: TfcTreeNode);
procedure SetNode(item:TfctreeNode;state:boolean);
procedure help_butExecute(Sender: TObject); }
private
{ Private declarations }
public
end;
type
TOrganization=record
parentid:integer; //父节点编码
id:integer; //机构编码
name:string; //机构名称
disptype:integer; //显示类型:1-单位 2-部门
end;
var
useradmin_frm: Tuseradmin_frm;
Oper_type:Char;
TreeItem,UnitItem:TfcTreeNode;
Organ:array of TOrganization;
implementation
uses datashare, useroption, main, hh; // hh_funcs,
{$R *.dfm}
{
procedure Tuseradmin_form.Exit_butExecute(Sender: TObject);
begin
inherited;
//退出当前模块
if Application.MessageBox('您真的要退出当前操作吗?','退出确认',MB_OKCancel+MB_DEFBUTTON1+MB_IconQuestion+MB_SystemModal)=IdOk then
close;
end;
procedure Tuseradmin_form.Add_userExecute(Sender: TObject);
var
str:string;
begin
inherited;
with datashare_form.Query1 do
begin
close;
sql.Clear;
str:='select OPMANG from users where OPERID=:p1';
sql.add(str);
params[0].AsInteger:=main_form.user.OPERID;
prepare;
open;
if fieldbyname('opmang').AsString='0' then
begin
application.MessageBox('普通用户不能进行操作人员添加!','恩普软件',MB_OK+MB_IconStop+MB_SystemModal);
exit;
end;
end;
try
Oper_type:='0';
useroption_form:=Tuseroption_form.create(application);
useroption_form.showmodal;
finally
useroption_form.free;
end;
end;
procedure Tuseradmin_form.FormCreate(Sender: TObject);
var
Str:string;
NewItem,fcNewItem:TfcTreeNode;
p,k,i:integer;
begin
inherited;
modifyuser_submenu.Enabled:=false;
deluser_submenu.Enabled:=false;
save_submenu.Enabled:=false;
modifyuser_button.Enabled:=false;
deleteuser_button.Enabled:=false;
save_button.Enabled:=false;
try //初始化用户列表
with datashare_form.Query1 do
begin
close;
sql.Clear;
Str:='select OPERID,OPNAME,OPMANG from USERS where OPSTAT=:para1 order by OPNAME,OPMANG';
sql.Add(Str);
params[0].AsString:='0';
prepare;
open;
while not eof do
begin
NewItem:=fcTreeView2.Items.AddChild(fcTreeView2.Items.GetFirstNode,trim(fieldbyname('OPNAME').AsString));
NewItem.CheckboxType:=tvctRadioGroup;
NewItem.StringData:=fieldbyname('OPERID').AsString;
NewItem.StringData2:=fieldbyname('OPMANG').AsString;
NewItem.ImageIndex:=1;
NewItem.SelectedIndex:=1;
NewItem.StateIndex:=1;
next;
end;
params.Clear;
close;
end;
except
on e:exception do
application.MessageBox(pchar(e.Message),'恩普软件',MB_OK+MB_IconStop+MB_SystemModal);
end;
try //权限项目列表
with datashare_form.Query1 do
begin
close;
sql.Clear;
str:='where ITEMNO in (select ITEMNO from VERSION where VER='+#39+ESIIS_VERSION+#39+')';
str:='select * from RIGHTCORT '+str+' order by GROUPNO,NODENO,ORDNO';
sql.Add(str);
prepare;
open;
while not eof do
begin
if fieldbyname('NODENO').AsString='0' then
begin
fcNewItem:=fcTreeView1.Items.Add(nil,fieldbyname('ITEMNAME').AsString);
p:=fcNewItem.AbsoluteIndex;
end
else
fcNewItem:=fcTreeView1.Items.AddChild(fcTreeView1.Items.Item[p],fieldbyname('ITEMNAME').AsString);
fcNewItem.CheckboxType:=tvctCheckbox;
fcNewItem.StringData:=fieldbyname('ITEMNO').AsString;
next;
end;
end;
except
on e:exception do
application.MessageBox(pchar(e.Message),'恩普软件',MB_OK+MB_IconStop+MB_SystemModal);
end;
try //列出单位部门
with datashare_form.Query1 do
begin
close;
sql.Clear;
str:='select parentid,id,name,disptype from organization order by parentid,id';
sql.Add(str);
prepare;
open;
setlength(Organ,recordcount);
k:=0;
while not eof do //将组织结构存入结构体数组
begin
Organ[k].parentid:=fieldbyname('parentid').AsInteger;
Organ[k].id:=fieldbyname('id').AsInteger;
Organ[k].name:=fieldbyname('name').AsString;
Organ[k].disptype:=fieldbyname('disptype').AsInteger;
inc(k);
next;
end;
end;
except
on e:exception do
application.MessageBox(pchar(e.Message),'恩普软件',MB_OK+MB_IconStop+MB_SystemModal);
end;
for i:=low(Organ) to high(Organ) do
begin
if Organ[i].parentid=0 then
begin
UnitItem:=fcTreeView3.Items.AddChild(Nil,Organ[i].name);
UnitItem.CheckboxType:=tvctCheckbox;
UnitItem.StringData:=inttostr(Organ[i].id);
UnitItem.StringData2:=inttostr(Organ[i].parentid);
ListNode(i,High(Organ),Organ[i].id,UnitItem);
end;
end;
fcTreeView2.FullExpand;
fcTreeView3.FullExpand;
end;
procedure Tuseradmin_form.ListNode(L,H,id:integer;item:TfcTreeNode);
var
i:integer;
NewItem:TfcTreeNode;
begin
for i:=L to H do
begin
if Organ[i].parentid=id then
begin
NewItem:=fcTreeView3.Items.AddChild(item,Organ[i].name);
NewItem.CheckboxType:=tvctCheckbox;
NewItem.StringData:=inttostr(Organ[i].id);
NewItem.StringData2:=inttostr(Organ[i].parentid);
ListNode(i,H,organ[i].id,NewItem);
end;
end;
end;
procedure Tuseradmin_form.Del_userExecute(Sender: TObject);
var
Str:string;
begin
inherited;
if (strtoint(fctreeview2.Selected.StringData)=main_form.user.OPERID) then
begin
application.MessageBox('删除用户不能为当前系统用户!','恩普软件',MB_OK+MB_IconStop+MB_SystemModal);
exit;
end;
if Application.MessageBox('您真的要当前选择用户进行删除操作吗?','退出确认',MB_OKCancel+MB_DEFBUTTON1+MB_IconQuestion+MB_SystemModal)=IdOk then
begin
datashare_form.Dbs.StartTransaction;
try
with datashare_form.Query1 do
begin
close;
sql.Clear;
Str:='delete from USERRIGHT where OPERID=:p1';
sql.Add(Str);
params[0].AsInteger:=strtoint(fctreeview2.Selected.StringData);
execsql;
close;
sql.Clear;
Str:='delete from UNITRIGHT where OPERID=:p1';
sql.Add(Str);
params[0].AsInteger:=strtoint(fctreeview2.Selected.StringData);
execsql;
close;
sql.Clear;
str:='delete from USERS where OPERID=:p1';
sql.Add(Str);
params[0].AsInteger:=strtoint(fctreeview2.Selected.StringData);
execsql;
end;
datashare_form.Dbs.Commit;
fcTreeView2.Selected.Delete;
except
on e:exception do
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -