4

私は単純なコンポーネントを書いています。私が達成したいのは、選択したメソッドに応じて Object Inspector で MethodOptions が変更されることです。

このようなもの:

DevExpress cxGrid から

これまでのところ、次のようにコーディングしました。

  TmyMethod = (cmFirst, cmSecond);

   TmyMethodOptions = class(TPersistent)    
    published
        property SomethingInBase: boolean;
   end;

   TmyMethodOptionsFirst = class(TmyMethodOptions)
    published
        property SomethingInFirst: boolean;
   end;

   TmyMethodOptionsSecond = class(TmyTMethodOptions)
    published
        property SomethingInSecond: boolean;
   end;

  TmyComponent = class(TComponent)
    private
      fMethod: TmyMethod;
      fMethodOptions: TmyMethodOptions;
      procedure ChangeMethod(const Value: TmyMethod);
    public
      constructor Create(AOwner: TComponent); override;
      destructor Destroy; override;
    published
      property Method: TmyMethod read fMethod write ChangeMethod default cmFirst;
      property MethodOptions: TmyMethodOptions read fMethodOptions 
        write fMethodOptions;  
  end;

implementation

procedure TmyComponent.ChangeMethod(const Value: TmyMethod);
begin
  fMethod := Value;

  fMethodOptions.Free;
  // case...
  if Value = cmFirst then
    fMethodOptions := TmyMethodOptionsFirst.Create
  else
    fMethodOptions := TmyMethodOptionsSecond.Create;

//  fMethodOptions.Update;
end;

constructor TmyComponent.Create(AOwner: TComponent);
begin
  inherited;
  fMethodOptions := TmyMethodOptions.Create;

  fMethod := cmFirst;
end;

destructor TmyComponent.Destroy;
begin
  fMethodOptions.Free;

  inherited;
end;

もちろん、それはほとんど何もしません (ハングする IDE を除いて)、これを達成するための適切な知識を検索する出発点がありません。

4

1 に答える 1

1

私の理解が正しければ、これは、グリッド内のさまざまなフィールド タイプのさまざまなプロパティを動的に表示するために、Developer Express が Quantum Grid コンポーネントに実装したのと同じ手法だと思います。ここにメカニズムの説明があります: Technology of the QuantumGrid

于 2012-05-21T21:12:14.253 に答える