关于递归遍历菜单

结构定义:

TMenuInfos=packed record
    MenuID      :Integer;
    MenuCaption :string[60];
  end;
  TMenuInfosArray=array[0..1999] of TMenuInfos;

例子中将遍历到菜单保存到结构体数组中:

递归函数:

//参数说明:AArray结构体数组,AMenuItem某菜单项

procedure GetMenuInfos(AArray: TMenuInfosArray; const AMenuItem: TMenuItem);
var
  i :Integer;
begin
  if AMenuItem.Count > 1 then
  begin
    for i:=0 to AMenuItem.Count - 1 do
      GetMenuInfos(AArray, AMenuItem.Items[i])
  end
  else
  begin
    AArray[AMenuItem.Command].MenuID      :=  AMenuItem.Command;//菜单项ID
    AArray[AMenuItem.Command].MenuCaption :=  AMenuItem.Caption;//菜单项caption
  end;
end;

 

 

遍历主菜单及弹出菜单:

定义:FMenuInfosArray :TMenuInfosArray;

procedure TForm1.Button2Click(Sender: TObject);
var
  i, j :Integer;
begin
  for i:=0 to form1.ComponentCount - 1 do
    if form1.Components[i] is TMenu then
    begin
      for j:=0 to (form1.Components[i] as TMenu).Items.Count - 1 do
        GetMenuInfos(FMenuInfosArray, (form1.Components[i] as TMenu).Items[j]);
    end
    else if form1.Components[i] is TPopupMenu then
    begin
      for j:= 0 to (form1.Components[i] as TPopupMenu).Items.Count - 1 do
        GetMenuInfos(FMenuInfosArray, (form1.Components[i] as TPopupMenu).Items[j]);
    end;
end;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值