RT,又如何添加item里面的子item
好像是用popupmen1.add()或者popupmen1.insert(),但不知要哪些参数,
能否举个例子,我是想从数据库读出记录,从而动态的添加item

解决方案 »

  1.   

    比如有记录:a市,b市,c市,d市,
    读取这些数据库记录而动态生成items,点击不同item就把相应数据(如a市或c市等等)传递给函数进行处理,可以实现吗?如何解决
      

  2.   

    按照Memo1中的列表生成PopupMenu,这里设置了Item的hint,把内容通过hint传递。procedure TForm1.Button1Click(Sender: TObject);
    var
        i:integer;
        Item:TMenuItem;
    begin
        for i:=0 to Memo1.Lines.Count-1 do
        begin
            Item:=TMenuItem.Create(Owner);
            Item.Caption:=Memo1.Lines.Strings[i];
            Item.Hint:=Memo1.Lines.Strings[i];
            Item.OnClick:=MenuItemClick;
            PopupMenu1.Items.Add(Item);
        end;
    end;procedure TForm1.MenuItemClick(Sender:TObject);
    begin
        ShowMessage(TMenuItem(Sender).Hint);
    end;
      

  3.   

    procedure TForm1.FormContextPopup(Sender: TObject; MousePos: TPoint;
      var Handled: Boolean);
    var
       N1: TMenuItem;begin
       n1:=tmenuitem.Create(self);
       n1.Caption:='A市';
       popupmenu1.Items.Add(n1);
       popupmenu1.InsertComponent(pup);end;
    这我测试过了可行,
    你要点击item来传第数据的话,你就编写popupmenu1.Items.OnClick事件就可以了
      

  4.   

    popupmenu1.InsertComponent(pup);
    这一个语句去掉!!
      

  5.   

    procedure TForm1.AddButtonClick(Sender: TObject);
    var
      index: Integer;
      NewItem: TMenuItem;
    begin
      for index := 0 to 3 do
      begin
        NewItem := TMenuItem.Create(PopupMenu1); // create the new item
        PopupMenu1.Items.Add(NewItem);// add it to the Popupmenu
        NewItem.Caption := 'Menu Item ' + IntToStr(index);
        NewItem.Tag := index;
        NewItem.OnClick = PopupMenuItemsClick;// assign it an event handler
      end;end;procedure TForm1.PopupMenuItemsClick(Sender: TObject);
    begin
      with Sender as TMenuItem do
      begin
        case Tag of
          0:  ShowMessage('first item clicked');
          1:  ShowMessage('second item clicked');
          2:  ShowMessage('third item clicked');
          3:  ShowMessage('fourth item clicked');
        end;
      end;
    end;To edit or destroy an item, grab its pointer via the Items property.procedure TForm1.EditButtonClick(Sender: TObject);
    var
      ItemToEdit: TMenuItem;
    begin
      ItemToEdit := PopupMenu.Items[1];
      ItemToEdit.Caption := 'Changed Caption';
    }procedure TForm1.DestroyButtonClick(Sender: TObject);
    var
      ItemToDelete: TMenuItem;
    begin
      ItemToDelete := PopupMenu.Items[2];
      ItemToDelete.Free;
    end;
      

  6.   

    http://search.csdn.net/Expert/topic/1969/1969855.xml?temp=.4556696
      

  7.   

    如何用程序添加popupmenu1里面子菜单的子菜单?
      

  8.   

    var
        i:integer;
        Item:TMenuItem;
    begin
    ....
        begin
            Item:=TMenuItem.Create(Owner);
            Item.Caption:=Memo1.Lines.Strings[i];
            Item.Hint:=Memo1.Lines.Strings[i];
            Item.OnClick:=MenuItemClick;
            PopupMenu1.Items[i].Add(Item);//////////在PopupMenu的第i个子菜单里增加菜单。
        end;