?

解决方案 »

  1.   

    在进行Class编写的时候在拦截该消息的时候处理,你也可以提供事件属性不过VCL从TControl开始就已经开始提供DblClick,你可以从它或者它的子类继承,只需要override就行了~具体的实现细节,你可以参考一下TControl类中的相关代码
      

  2.   

    假设你已经做好了一个组件,组件单元为:MyTray
    那么新建一个单元,把它保存在组件单元的文件夹下,写下:
    unit AboutTray;interfaceuses
      SysUtils,Classes,DesignIntf,DesignEditors,Forms,
      MyTray;//引用你的组件单元type
     TTrayIconEditor = class (TComponentEditor)//继承组件编辑器类,并重载以下三个方法
        function GetVerbCount: Integer; override;
        function GetVerb(Index: Integer): string; override;
        procedure ExecuteVerb(Index: Integer); override;
      end;procedure Register;implementation///////TTrayIconEditor////////////////////////
    procedure TTrayIconEditor.ExecuteVerb(index:integer);
    begin
     case index of
    //当你双击,或右击快捷菜单第一项时,弹出这个对话框。这里你可以自己设计
     0: application.MessageBox('你好,这是风做的托盘组件!!','关于');
     end;
    end;function TTrayIconEditor.GetVerb(index:integer):String;
    begin
      case index of
        0:Result:='About MyTray';//快捷菜单自定义项的名字
      end;
    end;function TTrayIconEditor.GetVerbCount:integer;
    begin
      Result:=1;//Result返回的是组件快捷菜单的自定义项数,这里只有一项
    end;
    procedure Register;
    begin
      //这里有两个参数,每一个是你的组件类,第二个是组件编辑器类,看上去的类定义
      RegisterComponentEditor(TMyTray,TTrayIconEditor);
    end;end.做好之后,建一个包,把这两个单元包进去,编译,安装,成功。