怎样判断一个元件的属性是否可写 写一句:YourComponent.YourProperty := SomeValue;然后Ctrl+F9,没错的话,就是可写的啦 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 那就不清楚了,看看TypeInfo.pas那里有没有介绍 设属性类型为 TPropertyvar OldProperty,NewProperty: TProperty;begin OldProperty := YourComponent.Property; try YourComponent.Property :3D NewProperty; except YourComponent.Property :3D OldProperty; end;end;—————————————————————————————————MaximStr := '宠辱不惊,看庭前花开花落,去留无意; 毁誉由人,望天上云卷云舒,聚散任风。';if Not Assigned(I) then I := TI.Create(Nil);I.Maxim := MaximStr;————————————————————————————————— 设属性类型为 TPropertyvar OldProperty,NewProperty: TProperty;begin OldProperty := YourComponent.Property; try YourComponent.Property :3D NewProperty; except YourComponent.Property :3D OldProperty; end;end;—————————————————————————————————MaximStr := '宠辱不惊,看庭前花开花落,去留无意; 毁誉由人,望天上云卷云舒,聚散任风。';if Not Assigned(I) then I := TI.Create(Nil);I.Maxim := MaximStr;————————————————————————————————— -->lxpbuaa: 我多嘴一句,请勿见怪。:=) 如果属性是只读的,编译都不能通过。我也不知道正确的解是什么,不过可以贡献一些思路:1、用TPropInfo.SetProc判断,可以简单判断是否为nil,也可以参考TypInfo.pas中的汇编语句,当然找到相应的说明资料更好: MOV EDI,[ESI].TPropInfo.SetProc CMP [ESI].TPropInfo.SetProc.Byte[3],$FE JA @@isField JB @@isStaticMethod { SetProc is a virtual method } MOVSX EDI,DI ADD EDI,[EAX] CALL dword ptr [EDI] JMP @@exit原谅我没有耐心去分析了。2、如果1失败,你可以用TypInfo.pas中的SetXXXProp或SetPropValue过程来设置值,并且加上try...except以判断或防止失败。 如何获取用户用TXT编辑器打开.txt文件的路径 如何使DELPHI的接口方法做为其它函数的参数 求两个时间之间相差天数的问题? 在colorgrid中,如何自定义基本颜色! 如何向TMemoryStream中增加内容? 怎样知道,计算机A 与我的电脑是同一局域网, 而不是其它局域网的电脑(即Internet 上的电脑)?? 为什么读不出值? 关于DBGrid 关于MDIchild窗体关闭出错的问题 关于Richedit的一个简单而又无法解决的问题,菜鸟求教啊 Delphi的电子文档好多,有没有能把PDF转换成WORD文件的工具? 请告诉我Rxlib的下载地址?
OldProperty := YourComponent.Property;
try
YourComponent.Property :3D NewProperty;
except
YourComponent.Property :3D OldProperty;
end;
end;
—————————————————————————————————
MaximStr := '宠辱不惊,看庭前花开花落,去留无意;
毁誉由人,望天上云卷云舒,聚散任风。';
if Not Assigned(I) then
I := TI.Create(Nil);
I.Maxim := MaximStr;
—————————————————————————————————
OldProperty := YourComponent.Property;
try
YourComponent.Property :3D NewProperty;
except
YourComponent.Property :3D OldProperty;
end;
end;
—————————————————————————————————
MaximStr := '宠辱不惊,看庭前花开花落,去留无意;
毁誉由人,望天上云卷云舒,聚散任风。';
if Not Assigned(I) then
I := TI.Create(Nil);
I.Maxim := MaximStr;
—————————————————————————————————
1、用TPropInfo.SetProc判断,可以简单判断是否为nil,也可以参考TypInfo.pas中的汇编语句,当然找到相应的说明资料更好:
MOV EDI,[ESI].TPropInfo.SetProc
CMP [ESI].TPropInfo.SetProc.Byte[3],$FE
JA @@isField
JB @@isStaticMethod { SetProc is a virtual method }
MOVSX EDI,DI
ADD EDI,[EAX]
CALL dword ptr [EDI]
JMP @@exit
原谅我没有耐心去分析了。
2、如果1失败,你可以用TypInfo.pas中的SetXXXProp或SetPropValue过程来设置值,并且加上try...except以判断或防止失败。