怎样刷新Object Inspector的显示?或者用什么方法控制Object Inspector中属性的结点
阿发伯 2006-10-25 11:08:07 编写组件用TCollection编辑如下属性:
type
TBase = class end;
TClass1 = class(TBase) end;
TClass2 = class(TBase) end;
...
TClassType = (ctClass1, ctClass2, ...);
TClassItem = class(TCollectionItem)
private
FClassType: TClassType;
FItem: TBase;
procedure SetClassType(const Value: TClassType);
...
published
property ClassType: TClassType read FClassType write SetClassType;
property MyClass: TBase read FItem;
end;
...
procedure SetClassType(const Value: TClassType);
begin
if FClassType = Value then Exit;
FClassType = Value;
if Assigned(FItem) then FItem.Free;
case FClassType of
ctClass1: FItem := TClass1.Create;
ctClass2: FItem := TClass2.Create;
...
end;
end;
由于TClass1,TClass2等的属性个数和类型不一样,当改变FItem的类实例时,如果对应的类属性
MyClass在Object Inspector中已经展开,不能得到正确的显示,有时还会报错,必须在TCollectionItem编辑窗口移动后,或者将已经展开的属性收拢,显示才正确。
提问:怎样才能刷新Object Inspector的显示?或者用什么方法控制Object Inspector中属性的结点(展开和收拢)?或者其它方法解决该问题?
不知道问题说清楚没有,如果不明白意思请问我,本人在线等。问题一经解决立即结贴。