K
kongjieabc
Unregistered / Unconfirmed
GUEST, unregistred user!
表结构:
权限明细表:
qxid 权限号(字符串型)
cdid 菜单号(数字型)
qx 具体权限(数字型,0表示变亮、1变灰)
动态菜单项代码:
var
NewDS : TADODataSet;
NewItem : TMenuItem;
begin
NewItem := TMenuItem.Create(self);
NewItem.name := 'A'+inttostr(NewDS.Recordset.Fields[0].Value);
NewItem.Caption := NewDS.Recordset.Fields[1].Value;
NewItem.Hint := NewDS.Recordset.Fields[3].Value;
NewItem.OnClick := AddMenuClick;
...
end;
NewDS是从菜单目录中取的菜单记录,第0列是不重复的数字型的(菜单编号)
动态授权代码:
procedure ...
var
SQL:string;
m:string;
MyCom:TComponent;
begin
try
SQL:='select cdid,qx from xt_qxmx where qxid='+quotedstr(权限类型全局变量);
ds.Close;
ds.Recordset:=conn.Execute(SQL);
while not ds.Eof do
begin
m:='A'+ inttostr(ds.Recordset.Fields[0].Value);
MyCom:=FindComponent(m);
if (not( MyCom is TMenuItem)) or (MyCom=nil) then
begin
ShowMessage('出错了!没有这个菜单');
exit;
end;
if ds.Recordset.Fields[1].Value=0 then
TMenuItem(MyCom).Enabled:=true
else
TMenuItem(MyCom).Enabled:=false;
ds.Recordset.MoveNext;
end;
ds.Close;
except
end;
end;
问题如题目,固定写在菜单控件中的项目,按项目名就能将之变灰或变亮,而动态生成的菜单项,就说找不到名称,我用showmessage显示,都显示出来了,但一到MyCom:=FindComponent(m);这步就找不到了,真是要愁死人了。。。。。。。
头一次发帖,大家帮忙啊!
权限明细表:
qxid 权限号(字符串型)
cdid 菜单号(数字型)
qx 具体权限(数字型,0表示变亮、1变灰)
动态菜单项代码:
var
NewDS : TADODataSet;
NewItem : TMenuItem;
begin
NewItem := TMenuItem.Create(self);
NewItem.name := 'A'+inttostr(NewDS.Recordset.Fields[0].Value);
NewItem.Caption := NewDS.Recordset.Fields[1].Value;
NewItem.Hint := NewDS.Recordset.Fields[3].Value;
NewItem.OnClick := AddMenuClick;
...
end;
NewDS是从菜单目录中取的菜单记录,第0列是不重复的数字型的(菜单编号)
动态授权代码:
procedure ...
var
SQL:string;
m:string;
MyCom:TComponent;
begin
try
SQL:='select cdid,qx from xt_qxmx where qxid='+quotedstr(权限类型全局变量);
ds.Close;
ds.Recordset:=conn.Execute(SQL);
while not ds.Eof do
begin
m:='A'+ inttostr(ds.Recordset.Fields[0].Value);
MyCom:=FindComponent(m);
if (not( MyCom is TMenuItem)) or (MyCom=nil) then
begin
ShowMessage('出错了!没有这个菜单');
exit;
end;
if ds.Recordset.Fields[1].Value=0 then
TMenuItem(MyCom).Enabled:=true
else
TMenuItem(MyCom).Enabled:=false;
ds.Recordset.MoveNext;
end;
ds.Close;
except
end;
end;
问题如题目,固定写在菜单控件中的项目,按项目名就能将之变灰或变亮,而动态生成的菜单项,就说找不到名称,我用showmessage显示,都显示出来了,但一到MyCom:=FindComponent(m);这步就找不到了,真是要愁死人了。。。。。。。
头一次发帖,大家帮忙啊!