2017-11-10 7 views
0

"TcxEditButtons"タイプのコレクション "Buttons"を拡張しようとしています。目的は、従来のTcxButtonEditコンポーネントのすべてのボタンに "OnClick"イベントと "Shortcut"プロパティを追加することです。問題はやや明らかである私は、この ...Delphi VCLの "TcxButtonEdit"の "Buttons"コレクションからアイテムを拡張する

type 
     TMycxDBButtonEdit = class(TcxCustomButtonEdit) 
    FProperties: TMycxDBButtonEditProperties; 
    published 
    property Properties: TMycxDBButtonEditProperties read FProperties write SetProperties; 

を行う私のコンポーネントで ...

type 
    TMycxDBButtonEditProperties = class(TcxCustomButtonEditProperties) 
    private 
    FButtons: TMycxEditButtons; 
    procedure SetButtons(const Value: TMycxEditButtons); 
    function GetButtons: TMycxEditButtons; 
    public 
     constructor Create(AOwner: TPersistent); override; 
     procedure AfterConstruction; override; 
    published 
     property Buttons: TMycxEditButtons read GetButtons write SetButtons; 
    end; 

:コレクション私は以下のコードで「プロパティ」プロパティを上書きすることで開始しました編集可能ですが、実際の祖先のプロパティ「ボタン」は反映されていません。質問は:私のコレクションをコンポーネントのボタンに影響させるにはどうすればいいですか?

は、私が理解し、Devのエクスプレスのサポート以下のリンクに記載されているものに適用しようとしましたが、成功せずに(無能)

https://www.devexpress.com/Support/Center/Question/Details/Q136143/creating-custom-tcxbuttonedit

https://www.devexpress.com/Support/Center/Question/Details/Q35461/do-you-have-information-on-creating-own-tcxcustomedit-descendant

https://www.devexpress.com/Support/Center/Question/Details/A483/how-to-hide-default-button-s-in-a-dropdown-editor-or-add-extra-buttons

+0

私は自分のクエリへのリンクを追加しました。エディタでは、同じコレクションエディタを使用したいと思います。各アイテムは新しいプロパティで拡張された「TcxEditButton」です。 – AnselmoMS

+0

あなたのDevExバージョンに 'class function GetButtonsClass:TcxEditButtonsClass;がありますか?クラス 'TcxCustomEditProperties'のユニットcxEdit? – nil

+0

はい、私のバージョンは15.2.2であり、このクラスの機能を持っています – AnselmoMS

答えて

1

ベース@nilのコメントでは、私は期待された結果を得ました。以下は、同じ種類のニーズを持つユーザーのコードスニペットです。

type 
     TZcxEditButton = class (TcxEditButton) 
    ... 
    published 
    property Shortcut: TShortCut read FShortcut write SetShortcut; 
    property OnClick: TNotifyEvent read FOnClick write SetOnClick; 
    end; 

    type 
     TZcxEditButtons = class(TcxEditButtons) 
    public  
    class function GetButtonClass: TcxEditButtonClass; override; 
    end; 

    type 
     TZcxButtonEditProperties = class(TcxButtonEditProperties) 
     public 
     class function GetButtonsClass: TcxEditButtonsClass; override; 
    end; 

    type 
     TZcxButtonEdit = class(TcxButtonEdit) 
     public 
     class function GetPropertiesClass: TcxCustomEditPropertiesClass; override; 
     end; 

implementation 

    class function TZcxEditButtons.GetButtonClass: TcxEditButtonClass; 
    begin 
     Result := TZcxEditButton; 
    end; 

    class function TZcxButtonEditProperties.GetButtonsClass: TcxEditButtonsClass; 
    begin 
     Result := TZcxEditButtons; 
    end; 

class function TZcxButtonEdit.GetPropertiesClass: TcxCustomEditPropertiesClass; 
begin 
    Result := TZcxButtonEditProperties; 
end; 

注:私はあなたがメインクラスTcxEditButtonから新しいクラスを拡張する必要があります改善

+1

あなたが将来の読者の利益のためにこれを投稿して良かった。 +1 – MartynA

-1

のための提案を受け入れます。 プロパティクラスTcxCustomButtonEditPropertiesを拡張するのは良い方法ではありません。 TcxEditButtonから拡張した新しいクラスを作成し、新しいMethodspropertyを追加します。

+1

これは他の回答に何が追加されますか? – MartynA

+0

_プロパティクラスTcxCustomButtonEditProperties _ @ aqilを拡張するのは良い方法ではありません。私が掲示したDev Expressのサポートページのリンクを読んだことがありますか? – AnselmoMS

+0

はい、あなたは正しいです、私はそのノートを読んでいます。そのメモと保護された財産のために、私たちはこの解決法を使うべきです。しかし、私はこの解決策を一般的なソリューションとデルファイコンポーネントの開発に書いていました。 – Aqil

関連する問題