可能是小问题,但我一时想不出来,请大家帮忙!!(10分)

  • 主题发起人 主题发起人 破剑式
  • 开始时间 开始时间

破剑式

Unregistered / Unconfirmed
GUEST, unregistred user!
我在写一个程序,要控制菜单的激活状态,可是我如何将菜单名用变量传递呢?
如 frm_main.N1.enabled := True ;如何用变量代替N1呢??
 
MainMenu1.Items[1].enabled:=false;
 
不对呀,items好象是指向菜单的第一行,而下拉菜单里的细项怎么办呢?
 
用数组好了
 
请具体说明,我的程序写不下去了
 
//假设你有三个菜单项,tag分别为18,19,20
procedure TForm1.Button2Click(Sender: TObject);
var i:integer;
begin
for I:=0 to form1.ComponentCount-1do
if Components is TmenuItem then
if TmenuItem(Components).tag in [18,19,20] then
TmenuItem(Components).enabled:=false;
end;
 
我觉得你应该用actionlist那样控制起来会好很多。
 
procedure TForm1.SetMenuItemState(pItemName :string;pState :Boolean);
var iIndex :integer;
begin
for iIndex :=0 to Form1.ComponentCount-1do
begin
if Form1.Components[iIndex] is TMenuItem then
begin
ShowMessage((Form1.Components[iIndex] as TMenuItem).Caption);
if (Form1.Components[iIndex] as TMenuItem).Caption = pItemName then
begin
(Form1.Components[iIndex] as TMenuItem).Enabled :=pState;
end;
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
SetMenuItemState(Edit1.text,false);
end;
//但必须保证 frm_main.AutoLineReduction :=maManual;
 
补一句:frm_main.AutoHotkeys :=maManual;
 
遍历控件中的classtype为‘TMenuItem’,可以根据caption来判断是哪个
 
同意楼上的说法!
 
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
493
import
I
后退
顶部