加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 在设计时更改自定义组件中的属性类

发布时间:2020-12-15 09:12:09 所属栏目:大数据 来源:网络整理
导读:我正在编写简单的组件.我想要实现的是我的MethodOptions将根据方法I选择在Object Inspector中更改. 像这样的东西: 到目前为止我编码: TmyMethod = (cmFirst,cmSecond); TmyMethodOptions = class(TPersistent) published property SomethingInBase: boolea
我正在编写简单的组件.我想要实现的是我的MethodOptions将根据方法I选择在Object Inspector中更改.

像这样的东西:

到目前为止我编码:

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),我没有任何起点可以搜索合适的知识来实现??这一点.

解决方法

如果我理解正确,我相信这是Developer Express在其Quantum Grid组件中实现的相同技术,用于动态显示网格中各种字段类型的不同属性.这里有机制的解释: Technology of the QuantumGrid

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读