【问题标题】:Delphi: How to create an extra design-time menu for a custom component?Delphi:如何为自定义组件创建额外的设计时菜单?
【发布时间】:2012-11-22 13:57:17
【问题描述】:

我最近重新编译了 TDBGrid 组件,以实现几个自定义功能,尽管我注意到额外的设计时上下文菜单项“列编辑器”的功能现在已经消失了。

我没有找到任何在原始Vcl.DBGrids 单元中创建此菜单的代码,并且在网上寻找有关如何执行此操作的解决方案时运气不佳。

这也适用于双击。以前调用 Columns Editor,现在只创建 OnCellClick 事件。

【问题讨论】:

    标签: delphi menu ide delphi-xe2


    【解决方案1】:

    在组件的设计时包中,实现组件编辑器:

    type
      TMyComponentEditor = class(TComponentEditor)
        procedure ExecuteVerb(Index: Integer); override;
        function GetVerb(Index: Integer): string; override;
        function GetVerbCount: Integer; override;
      end;
    
    procedure TMyComponentEditor.ExecuteVerb(Index: Integer);
    begin
      case Index of
      0:
        Beep;
      end;
    end;
    
    function TMyComponentEditor.GetVerb(Index: Integer): string;
    begin
      Result := 'Beep';
    end;
    
    function TMyComponentEditor.GetVerbCount: Integer;
    begin
      Result := 1;
    end;
    

    您还需要注册此组件编辑器。在您的 Register 过程中调用 RegisterComponentEditor 以执行此操作:

    RegisterComponentEditor(TMyComponent, TMyComponentEditor);
    

    【讨论】:

    • @Uli 我猜这会很困难,因为它没有来源。
    • codeforge.com/read/158059/CMoneyDBGridEd6.pas__html 这个链接帮助我创建了列编辑器。不确定它是否是原始代码,但到目前为止它工作得很好。以防其他人会寻找它。
    猜你喜欢
    • 2023-03-15
    • 2018-01-24
    • 2011-07-10
    • 1970-01-01
    • 1970-01-01
    • 2011-05-12
    • 2015-06-03
    • 1970-01-01
    • 2013-05-21
    相关资源
    最近更新 更多