如题,扩展的功能只是在DBGridEh上加一个右键功能,点右键会弹出来一个菜单(由我来设计具体的功能),我要把它做成一个控件,然后安装到delphi里面,在组件板上有个小图标,怎么做呀?我现在的进度已经到了:component中new component,配好了选项,并且自动生成了代码!如下:
unit DBGridEhHw;interfaceuses
  Windows, Messages, SysUtils, Classes, Controls, Grids, DBGridEh;type
  TDBGridEhHw = class(Tdbgrideh)
  private
    { Private declarations }
  protected
    { Protected declarations }
  public
    { Public declarations }
  published
    { Published declarations }
  end;procedure Register;implementationprocedure Register;
begin
  RegisterComponents('ehlib', [TDBGridEhHw]);
end;end.
下面就不知道怎么做了!
应该怎么写呀!现在我要在里面加一个TPopupMenu,好让DBGridEh有右键功能,怎么做呀,大家帮帮我!帮我把代码完善一下,谢谢!

解决方案 »

  1.   

    动态创建DBGridEh的右键菜单var
      PopupMenu:TPopupMenu;
      MenuItem: TMenuItem;
      MenuItemLine: TMenuItem;
    begin  if not (csDesigning in self.ComponentState)then
      begin    if FDBGridEh.PopupMenu=nil then
        begin
          PopupMenu:=TPopupMenu.Create(self); //创建快捷菜单
          FDBGridEh.PopupMenu:=PopupMenu;
        end;    MenuItem:=TMenuItem.Create(self);     //创建菜单项
        MenuItem.OnClick:=MemuItemOnClick;    //自己在上面声明一个OnClick过程,具体要完成的功能写在里面
        MenuItem.Caption:='设置...';
        MenuItemLine:=TMenuItem.Create(self);  //创建菜单项
        MenuItemLine.Caption:='-';
        FDBGridEh.PopupMenu.Items.Insert(0,MenuItemLine);//菜单项位置
        FDBGridEh.PopupMenu.Items.Insert(0,MenuItem);
      end;
      

  2.   

    我这个是通过一个独立的控件,关联到DBGridEh控件的.
    你可以把这些写到OnCreate事件中.
      

  3.   

    先,做个FRAME岂不更快更方便?
      

  4.   

    我这样写的,帮我看看,有没有问题:
    unit DBGridEhHw;interfaceuses
      Windows, Messages, SysUtils, Classes, Controls, Grids, DBGridEh;type
      TDBGridEhHw = class(Tdbgrideh)
      private
        { Private declarations }
      protected
        { Protected declarations }
      public
        { Public declarations }
        constructor Create(AOwner: Tdbgrideh); override;
      published
        { Published declarations }
      end;procedure Register;implementationconstructor TDBGridEhHw.Create(AOwner: Tdbgrideh);
    var
      PopupMenu: TPopupMenu;
      MenuItem: TMenuItem;
      MenuItemLine: TMenuItem;
      procedure PrintOnClick;
      begin
        showmessage('print');
      end;
    begin
      inherited Create(AOwner);
      if not (csDesigning in self.ComponentState) then
      begin
        if AOwner.PopupMenu = nil then
        begin
          PopupMenu := TPopupMenu.Create(self); //创建快捷菜单
          AOwner.PopupMenu := PopupMenu;
        end;    MenuItem := TMenuItem.Create(self); //创建菜单项
        MenuItem.OnClick := PrintOnClick; //自己在上面声明一个OnClick过程,具体要完成的功能写在里面
        MenuItem.Caption := '设置...';
        MenuItemLine := TMenuItem.Create(self); //创建菜单项
        MenuItemLine.Caption := '-';
        AOwner.PopupMenu.Items.Insert(0, MenuItemLine); //菜单项位置
        AOwner.PopupMenu.Items.Insert(0, MenuItem);
      end;
    end;procedure Register;
    begin
      RegisterComponents('ehlib', [TDBGridEhHw]);
    end;
    end.
      

  5.   

    unit DBGridEhHw;interfaceuses
      Windows, Messages, SysUtils, Classes, Controls, Grids, DBGridEh;type
      TDBGridEhHw = class(Tdbgrideh)
      private
        { Private declarations }
      protected
        { Protected declarations }
        procedure PrintOnClick(Sender:TObject);
      public
        { Public declarations }
        constructor Create(AOwner: TObject); override;
      published
        { Published declarations }
      end;procedure Register;implementationprocedure TDBGridEhHw.PrintOnClick(Sender:TObject);
    begin
        showmessage('print');
    end;constructor TDBGridEhHw.Create(AOwner: Tdbgrideh);
    var
      PopupMenu: TPopupMenu;
      MenuItem: TMenuItem;
      MenuItemLine: TMenuItem;
    begin
      inherited Create(AOwner);
      if not (csDesigning in self.ComponentState) then
      begin
        if self.PopupMenu = nil then
        begin
          PopupMenu := TPopupMenu.Create(self); //创建快捷菜单
          self.PopupMenu := PopupMenu;
        end;    MenuItem := TMenuItem.Create(self); //创建菜单项
        MenuItem.OnClick := PrintOnClick; //
        MenuItem.Caption := '打印...';
        MenuItemLine := TMenuItem.Create(self); //创建菜单项
        MenuItemLine.Caption := '-';
        self.PopupMenu.Items.Insert(0, MenuItemLine); //菜单项位置
        self.PopupMenu.Items.Insert(0, MenuItem);
      end;
    end;procedure Register;
    begin
      RegisterComponents('ehlib', [TDBGridEhHw]);
    end;
    end.
      

  6.   

    上面的Create都成这样:
    constructor Create(AOwner: TComponent); override;