CnPack Forum » CnVCL 组件包 » 控件注册运行期问题, 有点急有点急....


2010-11-15 09:22 jhsgcigi
控件注册运行期问题, 有点急有点急....

有一个这样的问题, 我写一个新控件, 新控件有一个属性为TMEMO类型的, 类如下图
TsnCodeEdit = class(TPanel)  
  private
    FMemo: TMemo;
    FCCDDA: TAABBB;
    procedure SetMemo(Value: TMemo);
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  published
    property Memo: TMemo read FMemo write SetMemo stored True;
  end;

constructor TsnCodeEdit.Create(AOwner: TComponent);
begin
  inherited;
  FMemo := TMemo.Create(Self);
  FMemo.Parent := Self;
  FMemo.Align := alClient;
end;

procedure TsnCodeEdit.SetMemo(Value: TMemo);
begin
  if Value<>nil then  FMemo.Assign(Value);
end;

我在属性观察器中可以看到MEMO, 如图

关键无论我如何设置MEMO, 设计期没有问题,一运行就变成原样了, 这是怎么回事,原以为是SetMemo出了问题, 后改成直接FMEMO.COLOR=VALUE.COLOR,还是不行
大虾指点一下

2010-11-15 09:28 jhsgcigi
附加

还有如果我用 一个类来管理它,做值的中转则就没有问题了.
如我用如下
TAABBB = class(TPersistent)
  private
    FMemo: TMemo;
    FColor: TColor;
    procedure SetColor(Value: TColor);
  public
    constructor Create;
    destructor Destroy;
  published
    property Color: TColor read FColor write SetColor;
  end;

SetColor:  Fmemo.Color=Value;

然后在TsnCodeEdit中加个这个TAABBB的一实例, 并把TSNCODEEDIT中的FMEMO附值给这个实例的FMEMO就可以  哎不晓得是这怎么回事,  LIUXIAO 帮忙。。。

[[i] 本帖最后由 jhsgcigi 于 2010-11-15 09:30 编辑 [/i]]

2010-11-15 13:14 jhsgcigi
已经解决

FMEMO要加上 FMEMO.SETSUBCOMPOENT(TRUE)

页: [1]


Powered by Discuz! Archiver 5.0.0  © 2001-2006 Comsenz Inc.