F
freesoft
Unregistered / Unconfirmed
GUEST, unregistred user!
我一直为好的权限控制所困惑。
当然包括控制和授权两方面。
看到一些国外的程序员编写的权限空程序,真的是太漂亮了。可是。。。
其实每个差不多每个程序都要用到权限控制,为什么大家不静下心来讨论,分析一下!
使我们的程序变的更完美呢?
下面是我的权限控制程序代码,希望抛砖引玉。procedure Tdrf.BitBtn1Click(Sender: TObject);
var Con:String;
begin
fileName:=ExtractFilePath(ParamStr(0))+'ConS.ini';
if FileExists(FileName) then
begin
SL:=TStringList.Create;
SL.LoadFromFile(FileName);
Con:=SL.Text;
try
dataf.qb.Connected:=false;
dataf.qb.ConnectionString:=Con;
dataf.qb.Connected:=true;
except
begin
showmessage('数据库初始化错误,无法找到数据库'+#13+Con);
SL.Text:=PromptDataSource(Application.Handle,dataf.qb.ConnectionString);
IntINI;
end;
end;
end;
if (drf.Edit1.text='') or (drf.edit2.text='') then
showmessage('请输入完整信息')
else
begin
with dataf.adoquery1 do
begin
close;
sql.clear;
sql.add('select * from uerall where pass='+''''+edit2.text+'''');
sql.add('and id='+''''+edit1.text+'''');
open;
if dataf.adoquery1.RecordCount<>1 then
begin
//APPLICATION.messagebox('该用户不存在,请联系管理员','错误',MB_ICONINFORMATION+MB_OK)
drf.modalresult:=0;
end
else
begin
n:=dataf.adoquery1.fields[0].asstring;
m:=dataf.adoquery1.fields[1].asstring;
drf.modalresult:=1;
end;
end;
end;
end;
//以上是登陆窗口的确定。
以下是主窗口的formcreat
procedure Tmain.FormCreate(Sender: TObject);
var j:integer;
temp:boolean;
Con:String;
begin
fileName:=ExtractFilePath(ParamStr(0))+'ConS.ini';
if FileExists(FileName) then
begin
SL:=TStringList.Create;
SL.LoadFromFile(FileName);
Con:=SL.Text;
try
dataf.qb.Connected:=false;
dataf.qb.ConnectionString:=Con;
dataf.qb.Connected:=true;
except
showmessage('数据库初始化错误,无法找到数据库'+#13+Con);
end;
end;
//main.StatusBar1.panels[0].text:='时间: '+datetimetostr(date);
main.StatusBar1.Panels[1].text:='操作员:';
main.StatusBar1.Panels[2].text:=n;
with dataf.ADOQuery2 do
begin
close;
sql.clear;
sql.add('select * from rig where id='+''''+n+'''');
//sql.add('and actioncap='+''''+taction(actionlist1.Actions[j]).caption+'''');
open;
for j:=0 to actionlist1.ActionCount-1 do
if dataf.ADOQuery2.LOCATE('actioncap',TAction(actionlist1.Actions[j]).caption,[loPartialKey]) then
taction(actionlist1.Actions[j]).enabled:=true
else
taction(actionlist1.Actions[j]).enabled:=false;
end;
当然包括控制和授权两方面。
看到一些国外的程序员编写的权限空程序,真的是太漂亮了。可是。。。
其实每个差不多每个程序都要用到权限控制,为什么大家不静下心来讨论,分析一下!
使我们的程序变的更完美呢?
下面是我的权限控制程序代码,希望抛砖引玉。procedure Tdrf.BitBtn1Click(Sender: TObject);
var Con:String;
begin
fileName:=ExtractFilePath(ParamStr(0))+'ConS.ini';
if FileExists(FileName) then
begin
SL:=TStringList.Create;
SL.LoadFromFile(FileName);
Con:=SL.Text;
try
dataf.qb.Connected:=false;
dataf.qb.ConnectionString:=Con;
dataf.qb.Connected:=true;
except
begin
showmessage('数据库初始化错误,无法找到数据库'+#13+Con);
SL.Text:=PromptDataSource(Application.Handle,dataf.qb.ConnectionString);
IntINI;
end;
end;
end;
if (drf.Edit1.text='') or (drf.edit2.text='') then
showmessage('请输入完整信息')
else
begin
with dataf.adoquery1 do
begin
close;
sql.clear;
sql.add('select * from uerall where pass='+''''+edit2.text+'''');
sql.add('and id='+''''+edit1.text+'''');
open;
if dataf.adoquery1.RecordCount<>1 then
begin
//APPLICATION.messagebox('该用户不存在,请联系管理员','错误',MB_ICONINFORMATION+MB_OK)
drf.modalresult:=0;
end
else
begin
n:=dataf.adoquery1.fields[0].asstring;
m:=dataf.adoquery1.fields[1].asstring;
drf.modalresult:=1;
end;
end;
end;
end;
//以上是登陆窗口的确定。
以下是主窗口的formcreat
procedure Tmain.FormCreate(Sender: TObject);
var j:integer;
temp:boolean;
Con:String;
begin
fileName:=ExtractFilePath(ParamStr(0))+'ConS.ini';
if FileExists(FileName) then
begin
SL:=TStringList.Create;
SL.LoadFromFile(FileName);
Con:=SL.Text;
try
dataf.qb.Connected:=false;
dataf.qb.ConnectionString:=Con;
dataf.qb.Connected:=true;
except
showmessage('数据库初始化错误,无法找到数据库'+#13+Con);
end;
end;
//main.StatusBar1.panels[0].text:='时间: '+datetimetostr(date);
main.StatusBar1.Panels[1].text:='操作员:';
main.StatusBar1.Panels[2].text:=n;
with dataf.ADOQuery2 do
begin
close;
sql.clear;
sql.add('select * from rig where id='+''''+n+'''');
//sql.add('and actioncap='+''''+taction(actionlist1.Actions[j]).caption+'''');
open;
for j:=0 to actionlist1.ActionCount-1 do
if dataf.ADOQuery2.LOCATE('actioncap',TAction(actionlist1.Actions[j]).caption,[loPartialKey]) then
taction(actionlist1.Actions[j]).enabled:=true
else
taction(actionlist1.Actions[j]).enabled:=false;
end;