TStrings类型的属性!请指教!(100分)

  • 主题发起人 主题发起人 ahpei
  • 开始时间 开始时间
A

ahpei

Unregistered / Unconfirmed
GUEST, unregistred user!
自己写一个组件的一个属性如下:
private
FBody:TStrings;
...
procedure SetBody(MyBody:TStrings);
published
...
property Body:TStrings read FBody write SetBody;


注册好这个组件,放一个到窗体上,这时在属性编辑器窗口中点一下Body这个属性,
弹出Cannot assign a nil to a TRichEditStrings的错误。
请问怎样使用TStrings类型的属性??????????
 
你没有在控件的Construct 中写入
FBody:=TStringList.Create();
 
同意楼上,是Constructor
 
在Constructor TXXXX.Create;中是:
Body:=TStringList.Create
还是
FBody:=TStringList.Create;

如果是FBody:=TStringList.Create;的话那我已经做了。可以会出现所说的错误!
 
可你点的时候,参数是什么。
一般是弹出一个字符串表的编辑窗口(在这个窗口中创建了 TStrings 的实例)。
去看看 TListBox TComBobox 的做法 。
 
我需要的是在设计期能够编辑那个TStrings属性.
就是说可以在属性编辑器中直接编辑TStrings类型的那个属性!
 
SetBody过程要写对
里面写FBody.Assign(参数)

其实让body成为只读属性都可以,用户可读取和修改的是body中的内容,而不是body本身。
 
花了我半个小时
RegisterPropertyEditor(TypeInfo(TLs), TLS, 'LS', !~~~!);
以上运行不了。
不过你得为你的控件添加属性编辑器,由函数RegisterPropertyEditor来实现
我不知道最后一个参数应该填什么。
 
死定,还要自己添加属性编辑器啊!!
我们说个简单点的:
有个组件属性如下:
TMyClass=class(TComponent)
private
FPort:Integer;
procedure SetPort(Value:Integer);
published
property Port:Integer read FPort write SetPort;
public
Constructor create;
....
Constructor TMyClass.Create;
begin
FPort:=5050;
....
end;
按装好这个组件之后,拖一个放到窗体上,然后看看属性编辑器中的Port并不是5050
而是0.而我的目的是把它放在窗体上的时候port自动=5050.thanks!
 
property Port:Integer read FPort write SetPort default 5050;
 
Adnil,
不行,安装上放一个窗体上自动默认为0了
 
在Construct Create中加
FBody := TStringList.Create();
 
不是Constructor create;

是constructor Create(AOwner: TComponent); override;
 
多人接受答案了。
 
后退
顶部