如何动态的添加popup菜单,并且添加其子菜单。

void __fastcall TForm1::Button1Click(TObject *Sender)
{
TPopupMenu *pmenu = new TPopupMenu(this);
Button1->PopupMenu = pmenu;

TMenuItem *item = new TMenuItem(this);
item->Caption="aaa";
item->OnClick=
...
pmenu->Items->Add(item);
...

TPopupMenu * pop = new TPopupMenu(this);
this->PopupMenu = pop; //将菜单付给窗体
for(int i=0;i<10;i++){ //动态添加子菜单
TMenuItem * item = new TMenuItem(this);
item->Caption = i;
item->Tag = i;
item->OnClick = MyClick; //给其Click事件赋值
pop->Items->Add(item);
}

void __fastcall TForm1::MyClick(TObject *Sender)
{
TMenuItem * item = dynamic_cast<TMenuItem*>(Sender);
if(item==NULL) return;
ShowMessage(item->Tag);
}

void __fastcall TForm1::Button1Click(TObject *Sender)
{
TPopupMenu *pmenu = new TPopupMenu(this);

TMenuItem *MenuItem = new TMenuItem(this);
MenuItem->Caption = "Open(&O)...";
MenuItem->OnClick = Button2Click;
pmenu->Items->Add(MenuItem);
Form1->PopupMenu = pmenu;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{
ShowMessage("hello");
}