Board logo

Subject: 控件注册运行期问题, 有点急有点急.... [Print This Page]

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

有一个这样的问题, 我写一个新控件, 新控件有一个属性为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,还是不行
大虾指点一下

Image Attachment: [aa] aa.bmp (2010-11-15 09:22, 218.2 K) / Download count 35
http://bbs.cnpack.org/attachment.php?aid=784


Author: jhsgcigi    Time: 2010-11-15 09:28     Subject: 附加

还有如果我用 一个类来管理它,做值的中转则就没有问题了.
如我用如下
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 帮忙。。。

[ 本帖最后由 jhsgcigi 于 2010-11-15 09:30 编辑 ]
Author: jhsgcigi    Time: 2010-11-15 13:14     Subject: 已经解决

FMEMO要加上 FMEMO.SETSUBCOMPOENT(TRUE)




Welcome to CnPack Forum (http://bbs.cnpack.org/) Powered by Discuz! 5.0.0