我想让程序历遍所有的菜单项~~~要怎么写?就是mainmenu1.items.items[i].name=''可是这样程序只会循环主菜单,而不循环子菜单~~怎么回事?
解决方案 »
- 求一Sql语句
- 想组织个温州程序员协会,在温程序员愿意参加吗?
- 简单问题,在线给分,如何处理数据感知控件的更新问题?
- 為什麼弟三方組件按下ctrl點擊時不會跳到源碼呢???vcl是如何做到的呢
- [投票]如何培训一群乡级医生操作电脑上网?
- 在线等请问:一条类型转换的sql语句怎么写?
- 一个头痛问题。
- 从SQL SERVER2000 转换为Access数据库的一个问题
- Delphi 6 SOAP/ Web Service程序设计篇 有没有电子版?
- 各位前辈,请教关于用树形结构保存用户权限设置及根据控制菜单和工具条的问题。总分100分
- 如何把Delphi中用ADO 连 ODBC(ACCESS 数据库)单机版改为网络版。
- DELPHI已经被卖掉了,DELPHI程序如何找出路呢?
begin
MainMenu1.Items[i].Enabled:=False;
for j:=0 to MainMenu1.Items[i].Count-1 do
begin
//ShowMessage(MainMenu1.Items[i].Items[j].Caption+','+IntToStr(MainMenu1.Items[i].Items [j].Tag ) );
MainMenu1.Items[i].Items [j].Enabled:=False;
end;
end;
for i:=0 to MainMenu1.Items.Count-1 do
begin
if MainMenu1.Items[i].Tag=tagz then//判断是否具有使用权限-----
MainMenu1.Items[i].Enabled:=True;
for j:=0 to MainMenu1.Items[i].Count-1 do
begin
//ShowMessage(MainMenu1.Items[i].Items[j].Caption+','+IntToStr(MainMenu1.Items[i].Items [j].Tag ) );
if MainMenu1.Items[i].Items [j].Tag =tagz then
MainMenu1.Items[i].Items [j].Enabled:=True;
end;
end;
adoquery1.Close;
ADOQuery1.Parameters.ParamByName('user_name').Value:=user_name;
adoquery1.Open;
while not adoquery1.Eof do
begin
mode_id:=trim(adoquery1.FieldByName('mode_id').AsString);
if adoquery1.FieldByName('Examine_cadre').AsString='0' then //权限判断
begin
for i:=0 to MainMenu1.Items.Count-1 do
begin
MainMenu1.Items[i].Enabled:=true;
for j:=0 to MainMenu1.Items[i].Count-1 do
begin
if mainmenu1.items[i].items[j].name=mode_id then
MainMenu1.Items[i].Items [j].Enabled:=False;
end;
end;
end
else
begin
for i:=0 to MainMenu1.Items.Count-1 do
begin
MainMenu1.Items[i].Enabled:=true;
for j:=0 to MainMenu1.Items[i].Count-1 do
begin
if mainmenu1.items[i].items[j].name=mode_id then
MainMenu1.Items[i].Items [j].Enabled:=False;
end;
end;
end;
end;
adoquery1.Next;
end;
MainMenu1.Items[i].Enabled:=true;去掉则该程序不起作用
是不是和菜单名完全一样哦,如果一样的话,应该全部都为不可能
begin
MainMenu1.Items[i].Enabled:=False;
for j:=0 to MainMenu1.Items[i].Count-1 do
begin
MainMenu1.Items[i].Items [j].Enabled:=False;
end;
end;
把菜单名和数据库里存的对比,有的就设Enabled为True
ADQ.open
while not ADQ.Eof do
begin
tagz:=ADQ.FieldByName('FunctionNo').AsString ;
for i:=0 to MainMenu1.Items.Count-1 do
begin
if MainMenu1.Items[i].name=tagz then
MainMenu1.Items[i].Enabled:=True;
for j:=0 to MainMenu1.Items[i].Count-1 do
begin
if MainMenu1.Items[i].Items [j].name =tagz then
MainMenu1.Items[i].Items [j].Enabled:=True;
end;
end;
ADQ.Next;
end;
while not adoquery1.Eof do
begin
mode_id:=trim(adoquery1.FieldByName('mode_id').AsString);
for i:=0 to MainMenu1.Items.Count-1 do
begin
MainMenu1.Items[i].Enabled:=False;
for j:=0 to MainMenu1.Items[i].Count-1 do
begin
if mainmenu1.Items[i].Items[j].Name=mode_id then
begin
if adoquery1.FieldByName('Examine_cadre').AsString='0' then
MainMenu1.Items[i].Items [j].Enabled:=False
else
MainMenu1.Items[i].Items [j].Enabled:=true;
end;
end;
end;
end;
adoquery1.Next;
end;
你把这句去掉试试
adoquery1.Next;
位置写对没有。写成这样
while not adoquery1.Eof do
begin
mode_id:=trim(adoquery1.FieldByName('mode_id').AsString);
for i:=0 to MainMenu1.Items.Count-1 do
begin
MainMenu1.Items[i].Enabled:=False;
for j:=0 to MainMenu1.Items[i].Count-1 do
begin
if mainmenu1.Items[i].Items[j].Name=mode_id then
begin
if adoquery1.FieldByName('Examine_cadre').AsString='0' then
MainMenu1.Items[i].Items [j].Enabled:=False
else
MainMenu1.Items[i].Items [j].Enabled:=true;
end;
end;
end;
ADOQuery1.Next;
end;
end;
begin
mode_id:=trim(adoquery1.FieldByName('mode_id').AsString);
for i:=0 to MainMenu1.Items.Count-1 do
begin
for j:=0 to MainMenu1.Items[i].Count-1 do
begin
if mainmenu1.Items[i].Items[j].Name=mode_id then
begin
if adoquery1.FieldByName('Examine_cadre').AsString='0' then
MainMenu1.Items[i].Items [j].Enabled:=False
end;
end;
end;
ADOQuery1.Next;
end;
end;
if adoquery1.FieldByName('Examine_cadre').AsString='0' 的原因,因为表中该字段是boolean
类型的,改成.asboolean就可以判断了~~~