2011-03-27 128 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函數中使用它。