如何判断某个控件是否有Canvas属性?(100分)

  • 主题发起人 主题发起人 fhb
  • 开始时间 开始时间
F

fhb

Unregistered / Unconfirmed
GUEST, unregistred user!
function HasACanvas(AComponent:TComponent):boolean;
begin
//应该如何写?
result:=( ACanvas in AComponent.Property );


end;
 
uses TypInfo;
.......
try
{a:=}GetPropValue(AComponent,'Caption');
result:=true;
except
result:=false;
end;

其中GetPropValue是用来动态按名访问控件属性的函数,必须先uses TypInfo
此单元在HELP中并没有列出来,TypInfo单元提供了一组动态访问RTTI的函数

PS:书上说:“不要经常使用TypInfo单元代替其他属性访问技术。首先要使用基于
类的属性访问,或在需要时使用安全的AS强制机制,将RTTI访问属性的方法保留为最后
的手段。使用TypInfo技术会使我们的代码速度变得非常慢,更复杂,更容易出错;它还
忽略了编译时的类型检测;而且它使得代码对未来的Delphi版本更缺乏兼容性”
 
就是这样了!
 
多人接受答案了。
 
后退
顶部