我正在使用TEdit的后代并使用TagObject来存储对象。我正在使用Firemonkey。
简而言之,我正在使用另一个对象,并希望将该对象的属性分配给我的TMyEdit,这样每当我加载对象时,文本都会更新,当我更改文本时,对象会更新。
所以我这样做:
Edit1 : TMyEdit;
MyElement:TMyProperty;
...
Edit1.TagObject:=TMyTextProperty(MyElement);
(出于其他原因,必须进行类型转换。我提到它只是为了它是相关的。)
当MyElement不是nil时,代码可以正常工作。如果MyElement为nil,MyEdit会自动创建一个新的TMyTextProperty实例并将其分配给tagObject。
procedure TMyEdit.MyOnChange(Sender : TObject);
begin
if tagObject=nil then TagObject:=TMyTextProperty.Create('');
TMyTextProperty(TagObject).value:=text;
end;
我假设因为tagObject是一个指针而我将其指向MyElement,所以myElement也会更新。但它不是。
Edit1.TagObject包含我的值,但MyElement是stil nil。 我需要MyElement作为新创建的对象。
我做错了什么?我怎样才能确保每当创建TagObject时,MyElement指向新对象?
非常感谢