我的窗体上有几个popmenu,分别为p1,p2,p3.
我把这些菜单的名称信息存放在一个表中的字段中,数据类型为字符串。
窗体上放置一个toolbutton,现在点击toolbutton 在不同条件下弹出不同的popmenu.
菜单的名称从表中可以取出,请问如何对toolbutton的popmenu进行动态赋值(p1,p2,p3)呢?

解决方案 »

  1.   

    可以重载LOADED函数,来完成对各个控件的赋值
      

  2.   

    p1.Items[0].Caption:='A';
    p1.Items[1].Caption:='B';
    ... ...
      

  3.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, Menus, StdCtrls;type
      TForm1 = class(TForm)
        p1: TPopupMenu;
        p2: TPopupMenu;
        p3: TPopupMenu;
        Button1: TButton;
        p11: TMenuItem;
        p21: TMenuItem;
        p31: TMenuItem;
        procedure FormCreate(Sender: TObject);
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;
      List: TList;
    implementation{$R *.dfm}procedure LoadMenuByName(MenuName: string);
    var
      i: integer;
      idx: integer;
    begin
      idx:=-1;
      for i:=0 to List.Count-1 do
        if MenuName=TPopupMenu(List.Items[i]).Name then idx:=i;
      if idx<>-1 then TPopupMenu(List.Items[idx]).Popup(100,100);
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      List:=TList.Create;
      List.Add(p1);
      List.Add(p2);
      List.Add(p3);
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      LoadMenuByName('p1');
    end;end.