TMenuItem(frmMain.Components[I]).Name = Trim(FieldByName('moduleName').AsString)
是frmMain.Components[I]).Name???還是
frmMain.Components[I]).Caption,你自己確定一下
是frmMain.Components[I]).Name???還是
frmMain.Components[I]).Caption,你自己確定一下
解决方案 »
- 关于团队开发的问题
- 如何读取ini文件
- C/S程序怎么处理远程更新好?
- 高手救我!一些应用程序出错后,Delphi7马上运行调试?是怎么回事?请问如何解决?
- Delphi8 For .NET 的书现在有没有?
- 为什么改变窗体大小时,窗体上的控件会重叠起来?
- 同一个SQL SERVER存储过程序的问题,我问了四次,每次数100分,如果有人答对,将现在就给400分
- 请教多线程操作数据库冲突问题
- 请问如何读目录,扫描目录,把相应目录内容入数据库(access).
- 怎样不重复使用相同条件的case表达式?
- 菜鸟程序员论坛,招募菜鸟加入,是菜鸟的进来,来者有分~~
- 请教:为何ToolBar上的ToolBotton按钮会没有句柄,怎样才能得到它的句柄呢?
procedure TfrmMain.InitPower(DataSet: TDataSet);
var
I:Cardinal;
begin
DataSet.First;
for I:= 0 to ComponentCount-1 do
if Components[I] is TMenuItem then
begin
if TMenuItem(frmMain.Components[I]).Name = Trim(FieldByName('moduleName').AsString) then
TMenuItem(frmMain.Components[I]).Visible := true
else
TMenuItem(frmMain.Components[I]).Visible := false;
Next;
end;
end;
end;
我觉得你说的有道理。我在delphi6做了一个小程序,检测到确实有统一大小写的必要。
To: XZHHAI (星之瀚海)
比较是加上UpperCase或LowerCase试一下。
//设置子菜单
Procedure SetSubMenu(MItem:TMenuItem; QX:String);
Var I:Integer;
Begin
For I:=0 To MItem.Count-1 Do
Begin
If MItem[I].IsLine Then Continue;
If Not MItem[I].Visible Then Continue; If MItem[I].Count>0 Then
SetSubMenu(MItem[I],QX)
Else
MItem[I].Enabled:=(Pos('/'+MItem[I].Caption+'/',QX)>0);
End;
End;//根据用户权限设置菜单
Procedure ReSetMenu(AMenu:TMainMenu; QX:String);
Var I:Integer;
AMenuItem:TMenuItem;
Begin
For I:=0 To AMenu.Items.Count-1 Do
Begin
AMenuItem:=AMenu.Items[I]; If AMenuItem.Visible Then
Begin
If AMenuItem.Count>0 Then
SetSubMenu(AMenuItem,QX)
Else
AMenuItem.Enabled:=(Pos('/'+AMenuItem.Caption+'/',QX)>0);
End;
End;
End;
var
I:Cardinal;
begin
for I:= 0 to ComponentCount-1 do
if Components[I] is TMenuItem then
With DataSet do
begin
first;
while not Eof do
begin
// ShowMessage(TMenuItem(frmMain.Components[I]).Name );
if TMenuItem(frmMain.Components[I]).Name = Trim(FieldByName('moduleName').AsString) then
begin
TMenuItem(frmMain.Components[I]).Visible := true
exit; //找着了就应换下一菜单,不应再continue.
end
else
TMenuItem(frmMain.Components[I]).Visible := false;
Next;
end;
end
end;