可以拦截WM_RBUTTONDOWN和WM_RBUTTONUP消息

解决方案 »

  1.   

    直接在WM_RBUTTONDOWN消息过程中写上你的东西就行了
      

  2.   

    你说的就是组件编辑器吧,方法如下:
    TMyComponentEditor = class(TComponentEditor)
    public
      procedure ExecuteVerb(Index: Integer); override;
      function GetVerb(Index: Integer): string; override;
      function GetVerbCount: Integer; override;
    end;{TMyComponentEditor }
    procedure TMyComponentEditor .ExecuteVerb(Index: Integer);
    begin
      case Index of  //执行你所要做的事,index为你点击的菜单项
        0: ;    
      end;
    end;function TMyComponentEditor .GetVerb(Index: Integer): string;
    begin
      case Index of
        0: Result := 'Edit Items';  //指定右键菜单项的caption
      end;
    end;function TMyComponentEditor .GetVerbCount: Integer;
    begin
      Result := 1;  //返回你在右键所加的菜单项的个数
    end;
    然后用如下方法注册:
    RegisterComponentEditor(TMyComponent, TMyComponentEditor );
    //TMyComponent 为你所写的组件
      

  3.   

    看不懂,不能用
    我的Delphi6好像没有TComponentEditor
      

  4.   

    我创建新的组件
    new component的那个类里输入TComponentEditor,但好像没有,强行给它加上去但运行时就会出错,找不到。
    没有其它办法了????
      

  5.   

    其实 shuszj(想见你) 想说的是在编辑阶段时的右击控件,而截获鼠标消息一般是用在运行时,你想把组件属性的编辑也放到运行吗?happyjoe(尘土飞扬)说的是对的,这方面涉及到组件编辑器的编写,这方面帮助几乎没有说明,包括OpenTools API,你可在<Delphi>\Source\ToolsAPI目录中找到相应的单元。TComponentEditor定义在DesignEditors单元中,你需要USES它。(Delphi并没有编译好的dcu文件,所以需要你自己编译)推荐的书籍有:《Delphi高级开发指南》(Delphi Developer's Guide),它是《Delphi X从入门到精通》(Mastering Delphi X)的后续篇,讲了不少组件和属性编辑器编程方面的东西。
    另外,我最想看的一本书好象没有译过来,原版也没见着。<Delphi Hidden Path>,专门讲解OpenTools API的编程,如果哪位见着了,请通知我一声,不胜感激。agui.csdn @ 263.net
      

  6.   

    是不是真的
    DesignEditors这个单元也没有呀,看了一下帮助,好像是这么定义的
    TMyComponentEditor = class(TComponentEditor)
    但我使终找不到这个类,这个单元。你们怎么会有呢?
      

  7.   

    基本同意agui的解法,不过TComponentEditor应该定义在<Delphi>\Source\ToolsAPI\DsgnIntf.pas单元里面。.dcu文件要自己编译才能获得。
      

  8.   

    我是Delphi6,因为我看shuszj说的是Delphi6。在Delphi6以前的版本中,确实是在dsgnintf.pas单元中。不知我的Delphi6是不是与众不同。:=)