特急!请教BCB中如何读出MainMenu中的所有菜单项目的名称到ListBox中? (100分)

  • 主题发起人 主题发起人 Fairys
  • 开始时间 开始时间
F

Fairys

Unregistered / Unconfirmed
GUEST, unregistred user!
特急!请教BCB中如何读出MainMenu中的所有菜单项目的名称到ListBox中?
 
应该按结构读到TreeView里。
procedure TForm1.AddItem(MenuItem: TMenuItem;
Node: TTreeNode);
var i: integer;
ChildNode: TTreeNode;
begin
ChildNode := TreeView1.Items.AddChild(Node, MenuItem.Caption);
for i := 0 to MenuItem.Count - 1do
AddItem(MenuItem.Items, ChildNode);
end;

procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
begin
for i := 0 to MainMenu1.Items.Count-1do
AddItem(MainMenu1.Items, nil);
end;

注意把读出的Caption中的'&'去掉。
 
这是一个递归调用
procedure TMainForm.AddMenuItem(AItem: TMenuItem);
var
I : Integer;
begin
ListBox1.Items.Add(AItem.Caption);
for I := 0 to AItem.Count-1do
AddMenuItem(AItem.Items);
end;

procedure TMainForm.ToolButton12Click(Sender: TObject);
var
I : Integer;
begin
for I := 0 to MainMenu1.Items.Count-1do
begin
AddMenuItem(MainMenu1.Items);
end;
end;
 
BCB应该差不多
 
两位高手,能举个BCB的例子吗?我很少用DELPHI
 
我的测试是这样的:
ShowMessage(IntToStr(MainMenu1->Items->Count));//这里得不到正确的项目总数
for (int i=0;i<MainMenu1->Items->Count-1;i++)
{
ListBox1->Items->Add(MainMenu1->Items.Caption);
}
//运行后ListBox没有数据加入。
 
你设个断点进去看看,我这儿没有BCB。
看你的代码应该没什么问题,不过不能得到子菜单项。
 
感谢楼上的答案,我已经搞定了,都怪自己没有看看BCB的HELP,以下是我的代码:
//------------------------------------------------------------
void TForm1::AddMenuItem(TMenuItem *AItem)
{
ListBox1->Items->Add(AItem->Caption);
for (int i=0;i<AItem->Count;i++) AddMenuItem(AItem->Items);
}
//-----------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
for (int i=0;i<Menu1->Items->Count;i++)
AddMenuItem(Menu1->Items->Items);
}
 
OK !分钱吧!
 
后退
顶部