2011-03-27 136 views
2

对于matlab中的一些对象,set(hobject, 'enable', 'inactive')命令将正常工作。
为他人,像工具栏按钮,只有set(hobject, 'enable', 'off')设置命令有两种设置属性值的可能性

是我的一套listObjects
是有什么样set(listObjects, 'enable', ['inactive'|'off'])在我的属性设置为“无效”,如果它是有效的,而“关”,如果它不是一个有效的财产?

回答

0

您可以先查看它们的'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') 
1

如果您只有两个需要检查的值,则可以使用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函数中使用它。