在同一个Panel上有很多个GroupBox,我想这些GroupBox共用一个右键菜单但是右键菜单弹出来的菜单是不一样的,这个怎么实现

解决方案 »

  1.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, Menus, StdCtrls, ExtCtrls;type
      TForm1 = class(TForm)
        Panel1: TPanel;
        GroupBox1: TGroupBox;
        GroupBox2: TGroupBox;
        PopupMenu1: TPopupMenu;
        N11: TMenuItem;
        N21: TMenuItem;
        procedure GroupBox1MouseDown(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
        procedure GroupBox2MouseDown(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.GroupBox1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
        if Button=mbRight then
        begin
            PopUpMenu1.Items[0].Enabled:=False;
            PopUpMenu1.Items[1].Enabled:=True;
        end;
    end;procedure TForm1.GroupBox2MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
        if Button=mbRight then
        begin
            PopUpMenu1.Items[1].Enabled:=False;
            PopUpMenu1.Items[0].Enabled:=True;
        end;
    end;end.
    -----------------两个groupbox都用popupmenu1,但是弹出的菜单不一样
      

  2.   

    GroupBox.Click绑定同一个事件,然后处理,弹不同菜单。
      

  3.   

    摁住shift全选,然后再事件里面双击,生成的实践就是同一个事件了~~
    比如全选后你修改popmemu属性为memu1;那么所有组件的popmemu都是menu1了~