void __fastcall TForm1::MenuItemClick(TObject *Sender)
{
TControl* control;
TMenuItem* mi = dynamic_cast<TMenuItem*>(Sender);
control = dynamic_cast<TControl*>(FindComponent(Components[mi->Tag]->Name));
control->Enabled = !control->Enabled;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int Cnt = PopupMenu1->Items->Count;
char *buff[] = {"Test1", "Test2", "Test3"};

PopupMenu1->Items->Clear();

for (int i = 0; i < Cnt; i++) {
TMenuItem* mi = new TMenuItem(this);
mi->Caption = buff[i];
mi->OnClick = MenuItemClick;
PopupMenu1->Items->Add(mi);

こんな感じでしょ
ちゃんと切り詰められて表示されるよ
}
}