如何声明属性

沧-海-桑-田 2000-09-12 12:00:00
在delphi中
如下:
Ta=class(TComponent)
...
FPicture: TPicture;
published
...
property Picture: TPicture read FPicture write FPicture;
end;

Tb =class(TCustomControl)
...
Fc:Ta
published
...
property c:Ta read Fc write Fc;
end;

我的希望是(在设计期操作):
点击Tb的属性c,打开'+'号,然后设置c的属性FPicture
如上的程序却得不这样的效果
请问如何达到这样的效果(在AHM的控件中有)
请各位大侠指点,谢谢!
...全文
176 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
沧-海-桑-田 2000-09-12
  • 打赏
  • 举报
回复
我没有AHM的源码,哪里能得到呢?
简单类型的声明是没有问题的.
问题是:
Ta是TComponent类,声明后(Fc),Fc被当作一个整体来处理了,无法设置Fc的属性FPicture.
如果不能这样声明,请教一下如何用 "..." 形式打开一个窗口,然后设置的方法
请各位大侠指点,谢谢!
zcw 2000-09-12
  • 打赏
  • 举报
回复
如果要想属性带‘+’号,那么这个属性返回的一定是个集合。
你可以看AHM的控件的源代码。
举个例子,是DELPHI控件本身的属性;
TAnchorKind = (akLeft, akTop, akRight, akBottom);
TAnchors = set of TAnchorKind;

FAnchors: TAnchors;

property Anchors: TAnchors read FAnchors write SetAnchors stored IsAnchorsStored ]default [akLeft, akTop];


procedure SetAnchors(Value: TAnchors);
function IsAnchorsStored: Boolean;

function TControl.IsAnchorsStored: Boolean;
begin
Result := Anchors <> AnchorAlign[Align];
end;

procedure TControl.SetAnchors(Value: TAnchors);
begin
if FAnchors <> Value then
begin
FAnchors := Value;
UpdateAnchorRules;
end;
end;
dead_lee 2000-09-12
  • 打赏
  • 举报
回复
什么叫打开+号

4,164

社区成员

发帖
与我相关
我的任务
社区描述
Windows专区 一般软件使用
社区管理员
  • 一般软件使用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧