如何publish 一个 array(100分)

  • 主题发起人 主题发起人 CJ
  • 开始时间 开始时间
C

CJ

Unregistered / Unconfirmed
GUEST, unregistred user!
fData: array of TMyRecord;//Tmyrecord is a record
...
published
property Data:array of TMyRecord read fData....//err
 
记录型而且还是不定数组,这给人家用你程序的怎么办,参数怎么用?
再说编译时地址也不好办吧。

我觉得还是以普通数据类型入属性比较好。
对于你这个数组可以用指定下标和值的函数或者过程处理。
 
...
可我的元素不定啊?我知道不允许PUBLISH,所以才问怎么办嘛
 
不试试链表吗?
 
property Items[Index: Integer]: Pointer read Get write Put
default;

function Get(Index: Integer): Pointer;
明白了?
 
为什么非要published属性,public的不行吗?

public支持array呀
 
mikedeakins is right
 
mikedeakins的方法我知道,不过,问题是这样我不是用起来很不双?

TMyRecord(MyComponent(Index)).Property...
 
>>TMyRecord(MyComponent(Index)).Property...
你要这样用,为什么一定要publish呢?
publish是要放在属性编辑器中的,你连调用都嫌麻烦,属性编辑器还能支持?
(我怀疑你只是想定义一个数组类型的property??)
 
温柔一刀:我当然知道要放在属性编辑器用,不过,我不见得只在属性编辑器用吧?
还是要RUN TIME用的。我是想写个控件,呵呵。现在RECORD成了CLASS...
 
放在public里用好了。
 
to CJ:
问题就在这里呀,这样做不行的原因首先是属性编辑器里面根本没法用,
可是你却用TMyRecord(MyComponent(Index)).Property来表示这样不好,
所以自然让人认为你根本是只想public。
 
public:
property Color[i:integer]:TColor read GetColor write SetColor;
放在PUBLIC中就行,放在published中不行,我也头痛呀。
 
温兄所言甚对,可我该怎么办啊?
如果只要public,我还要提这么个问题?faint...
 
答案很简单,改弦更张
--属性编辑器里用数组,想想都觉得荒唐,
我就是仔细想都想不出有这种做法的需求是怎么来的...:-)

 
唉,偷懒用动态数组嘛...现在用了TLIST...
 
算了,早放弃了
 
后退
顶部