2012-12-06 1 views
2

Проблема заключается в том:при выборе строки в uitable, Он говорит: «Попытка ссылки на поле не-структуры массива»

мне нужно, когда Pushbottom нажата, следующая строка будет выбран соответствующий код :

function pushbutton11_Callback(hObject, eventdata, handles) 
    global mtable; 
    jScroll = findjobj(mtable); 
    jtable=jScroll.getViewport.getView; 
    row = jtable.getSelectedRow ; 
    jtable.setRowSelectionInterval(row+1,row+1); 
    jtable.setColumnSelectionInterval(0,99); %the number of mtable columns is 100 

и в openningFunction I mtable как ниже:

mtable = uitable('parent',gcf,'Units','normalized','Data',data); 
set(mtable,'columnName',cname); 
set(mtable,'Position',[0.17 0.2 0.75 0.75]); 

ответ

1

Вполне возможно jScroll пуст, когда findjobj неудачу s. И это может случиться, потому что вы используете глобальные переменные!

Прошу, пожалуйста, за любовь ко всему, что хорошо и свято, не используйте глобальные переменные; они вызывают экспоненциальную боль больше, чем когда-либо смогут предотвратить.

Во всяком случае, попробуйте удалить точку с запятой в конце этой линии

jScroll = findjobj(mtable) 

и посмотреть, что выход при возникновении ошибки. Если то, что я говорю, это действительно так, вы можете обойти это что-то вроде

jScroll = findjobj(mtable); 
if ishandle(jScroll) %// <-- add this line 
    jtable=jScroll.getViewport.getView; 
    row = jtable.getSelectedRow ; 
    jtable.setRowSelectionInterval(row+1,row+1); 
    jtable.setColumnSelectionInterval(0,99); 
end %// <-- and this one 

(который в любом случае хорошая prcatice ни с чем, что это должен быть ручкой

ли эта помощь на всех?