解决方案 »
- 菜鸟弱问:弹出菜单之前如何播放食品????????
- 如何在程序中复制IE临时目录下的文件(如:C:\Documents and Settings\myname\Local Settings\Temporary Internet Files)
- 小数能用 十进制表示吗????????????????????????
- try..except..end;各位老大,请说一下你们通常的用法,
- 图片透明的问题,分不够可以加
- 请教各位delphi高手
- 请教一个小问题!!
- 关于DELPHI里的帮助问题???
- 我已经给这一小段代码搞得头都大了。help!!(各位上次说的都行不通了)
- 主窗体调用DLL非模式窗口,得到窗口的全部的焦点
- 一个简单问题
- 有经验的大侠讨论,Delphi的多层应用。
优点:代码容易写,循环遍历就可以搞定;程序修改的时候只需重新生成权限库,不需要修改程序和tag
缺点:MenuItem.Caption重复就不准了
>>优点:代码容易写,循环遍历就可以搞定;程序修改的时候只需重新生成权限库,不需要修改程序和tag
>>缺点:MenuItem.Caption重复就不准了
那不如用MenuItem.Name来做,只不过多了一重MenuItem.Name对应MenuItem.Caption的手续罢了
下面是我的全部权限控制单元代码了
但是很遗憾,我的DLL找不到了
--------------------------
//其中的checkbox的个数代表你操作的个数
//根据你的程序自己修改
//在其他地方,就用CanDo函数,根据操作代号去做检测就可以了
//我的数据库只有一个字段ControlName(integer)--取0或者1
unit UserManageUnit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, DB, ADODB;type
TUserManageForm = class(TForm)
Bevel3: TBevel;
Label1: TLabel;
Button1: TButton;
Button2: TButton;
Label2: TLabel;
GroupBox1: TGroupBox;
CheckBox1: TCheckBox;
CheckBox2: TCheckBox;
CheckBox3: TCheckBox;
GroupBox2: TGroupBox;
CheckBox4: TCheckBox;
CheckBox5: TCheckBox;
CheckBox6: TCheckBox;
GroupBox3: TGroupBox;
CheckBox10: TCheckBox;
CheckBox11: TCheckBox;
CheckBox12: TCheckBox;
GroupBox4: TGroupBox;
CheckBox8: TCheckBox;
CheckBox9: TCheckBox;
GroupBox5: TGroupBox;
CheckBox7: TCheckBox;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
ADOQuery1: TADOQuery;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
UserManageForm: TUserManageForm;implementation
uses LogUnit,SystemSetUnit;
{$R *.dfm}
//
function DeleteAllControl(ADOQuery1:TADOQuery):boolean;far external 'UserManage.dll';
function UpdateUser(ADOQuery1:TADOQuery;C:integer):boolean;far external 'UserManage.dll';
function CanDo(ADOQuery1:TADOQuery;C:integer):boolean;far external 'UserManage.dll'
//
procedure TUserManageForm.Button1Click(Sender: TObject);
begin
Close;
end;procedure TUserManageForm.Button2Click(Sender: TObject);
//修改权限
begin
if Application.MessageBox('你确定要更改普通用户操作权限吗?','权限设置',MB_YESNO+MB_ICONQUESTION) = IDNO then
begin
Self.OnShow(Sender);
Exit;
end;
DeleteAllControl(Self.ADOQuery1);
if(Self.CheckBox1.Checked = true) then
UpdateUser(Self.ADOQuery1,1);
if(Self.CheckBox2.Checked = true) then
UpdateUser(Self.ADOQuery1,2);
if(Self.CheckBox3.Checked = true) then
UpdateUser(Self.ADOQuery1,3);
if(Self.CheckBox4.Checked = true) then
UpdateUser(Self.ADOQuery1,4);
if(Self.CheckBox5.Checked = true) then
UpdateUser(Self.ADOQuery1,5);
if(Self.CheckBox6.Checked = true) then
UpdateUser(Self.ADOQuery1,6);
if(Self.CheckBox7.Checked = true) then
UpdateUser(Self.ADOQuery1,7);
if(Self.CheckBox8.Checked = true) then
UpdateUser(Self.ADOQuery1,8);
if(Self.CheckBox9.Checked = true) then
UpdateUser(Self.ADOQuery1,9);
if(Self.CheckBox10.Checked = true) then
UpdateUser(Self.ADOQuery1,10);
if(Self.CheckBox11.Checked = true) then
UpdateUser(Self.ADOQuery1,11);
if(Self.CheckBox12.Checked = true) then
UpdateUser(Self.ADOQuery1,12);
Application.MessageBox('系统设置成功,请继续操作','权限设置',MB_OK+MB_ICONINFORMATION);
Close;
end;procedure TUserManageForm.FormShow(Sender: TObject);
//显示已经设置的权限
begin
Self.CheckBox1.Checked := false;
Self.CheckBox2.Checked := false;
Self.CheckBox3.Checked := false;
Self.CheckBox4.Checked := false;
Self.CheckBox5.Checked := false;
Self.CheckBox6.Checked := false;
Self.CheckBox7.Checked := false;
Self.CheckBox8.Checked := false;
Self.CheckBox9.Checked := false;
Self.CheckBox10.Checked := false;
Self.CheckBox11.Checked := false;
Self.CheckBox12.Checked := false;
if CanDo(Self.ADOQuery1,1) = true then
Self.CheckBox1.Checked := true;
if CanDo(Self.ADOQuery1,2) = true then
Self.CheckBox2.Checked := true;
if CanDo(Self.ADOQuery1,3) = true then
Self.CheckBox3.Checked := true;
if CanDo(Self.ADOQuery1,4) = true then
Self.CheckBox4.Checked := true;
if CanDo(Self.ADOQuery1,5) = true then
Self.CheckBox5.Checked := true;
if CanDo(Self.ADOQuery1,6) = true then
Self.CheckBox6.Checked := true;
if CanDo(Self.ADOQuery1,7) = true then
Self.CheckBox7.Checked := true;
if CanDo(Self.ADOQuery1,8) = true then
Self.CheckBox8.Checked := true;
if CanDo(Self.ADOQuery1,9) = true then
Self.CheckBox9.Checked := true;
if CanDo(Self.ADOQuery1,10) = true then
Self.CheckBox10.Checked := true;
if CanDo(Self.ADOQuery1,11) = true then
Self.CheckBox11.Checked := true;
if CanDo(Self.ADOQuery1,12) = true then
Self.CheckBox12.Checked := true;
end;end.
如果需要,可以发email给我,友情提供给你做参考。
[email protected]