当前位置:主页>销售管理软件> 列表

菜单显示问题

仓库管理软件版1楼: 我的思路是这样的,菜单权限是动态设置的,即先从数据库中取出数据,如果存在刚Visable为TRUE.否则为FALSE.现在的问题是所有的返回值是TRUE.但是主菜单不显示.
SetMenuVisib(MainMenu1, @P_MenuItem); //设置用户权限

2楼: 我的这个过程是公用单元.,其他窗口都可以操作,就是这个窗口不行,帮我想一下,是不是哪个什么设置的点得不对?
散分啦.这个好挣,划一个圈而已............... 如金蝶财务软件论坛

3楼: 把代码贴出来先

4楼: procedure SetMenuVisib(Menus: TMainMenu; PMenuItemList: TPMenuItemList);
var
i, j: Integer;
begin
//菜单权限处理
for i := 0 to Menus.Items.Count - 1 do
begin
Menus.Items[i].Visible := MenuItenIsUsing(Menus.Items[i].Name,
PMenuItemList);
if Menus.Items[i].Visible then
for j := 0 to Menus.Items[i].Count - 1 do
Menus.Items[i].Items[j].Visible :=
MenuItenIsUsing(Menus.Items[i].Items[j].Name, PMenuItemList);
end;
end;

//----------------------------------------------------------------------------
//----------------------------------------------------------------------------

function MenuItenIsUsing(MenuItemCode: string;
PMenuItemList: TPMenuItemList): Boolean;
var
i: Integer;
begin
Result := false;
for i := 0 to High(PMenuItemList^) do
if PMenuItemList^[i].Code = MenuItemCode then
begin
// if MenuItemCode=''voucher'' then ShowMessage('''');
Result := True;
Exit;
end;
end;

//----------------------------------------------------------------------------
//----------------------------------------------------------------------------

function Get_MenuItemList(UserID: string): TMenuItemList;
begin
Setlength(Result, 0);
with TQuery.Create(nil) do
try
try
DatabaseName := Session.Databases[0].DatabaseName;
SQL.Text := ''SELECT A.CODE,A.NAME,B.POSTID FROM MENU A,POSTMENU B '' +
'' WHERE B.MID = A.MID AND '' +
'' B.POSTID IN (SELECT POSTID FROM USERPOST '' +
'' WHERE USERID = '''''' + UserID + '''''' )'' +
'' ORDER BY POSTID '';
Open;

if not IsEmpty then
while not EOF do
begin
Setlength(Result, Length(Result) + 1);
Result[High(Result)].MenuItemName := Fields[1].AsString;
Result[High(Result)].Code := Fields[0].AsString;
Result[High(Result)].Post := Fields[2].AsString;
Next;
end;
except
;
end;
finally
Free;
end;
end;

5楼: 你因该首先确定从数据库读出的数据正确,
然后去检查是否为设置问题。
当然你的SetMenuVisib(MainMenu1, @P_MenuItem)一定要经得起考验。

6楼: 是对的,我都跟踪了,取出来的数据都是对的,而且我在另几个窗口中也是同样地的代码实现,那边可以操作的,是不是我这个窗口的哪些属性设置有误?

仓库管理软件版7楼: 主菜单或一级菜单Menus.Items[0]在数据表中缺项?


找不到

8楼: 可是我的MainMenu1.Items[0].Visable 的值也为True呀.