设置命令有两种设置属性值的可能性
问题描述:
对于matlab中的一些对象,set(hobject, 'enable', 'inactive')
命令将正常工作。
为他人,像工具栏按钮,只有set(hobject, 'enable', 'off')
。设置命令有两种设置属性值的可能性
是我的一套listObjects
,
是有什么样set(listObjects, 'enable', ['inactive'|'off'])
在我的属性设置为“无效”,如果它是有效的,而“关”,如果它不是一个有效的财产?
答
您可以先查看它们的'enable'
属性,查看对象的“类型”。
enableStatus = get(listOfObjects,'enable');
%# identify who is active and who is on
activeObjects = listOfObjects(strcmp(enableStatus,'active'));
onObjects = listOfObjects(strcmp(enableStatus,'on'));
%# set proper status
set(activeObjects,'enable','inactive')
set(onObjects,'enable','off')
答
如果您只有两个需要检查的值,则可以使用try/catch
块。
try
set(hobject,'enable','inactive');
catch exception
if strcmp(exception.identifier,'MATLAB:hg:propswch:FindObjFailed')
set(hobject,'enable','off');
else
throw(exception)
end
end
这样,它会检查您第一次尝试设置值,如果它是可以接受的。如果不是,它会尝试下一个选择。如果错误是由于其他原因(例如,您输入了无效的属性名称),则会将错误引发至屏幕。
顺便说一句,错误标识符:MATLAB:hg:propswch:FindObjFailed
是我在我的机器上,当我试图设置一个属性不会接受的值。虽然我怀疑它应该是相同的,但你可能想看看你在你的机器上得到了什么,并在strcmp
函数中使用它。