GUIDE - Selecting textbox by iterations - get(handles.***,'String')
显示 更早的评论
Hi all, I was wondering if anyone knew of a more elegant way to get the values of a list of inputs. I have 10 (possibly more) edit box inputs and I want to populate a vector with their values IF there is a value present. I can do it this way:
speedVector = [];
timeVector = [];
for box = 1:10
switch box
case 1
speedVector(1) = str2double(get(handles.speed1,'String'));
timeVector(1) = str2double(get(handles.time1,'String'));
case 2
speedVector(2) = str2double(get(handles.speed2,'String'));
timeVector(2) = str2double(get(handles.time2,'String'));
case 3
speedVector(3) = str2double(get(handles.speed3,'String'));
timeVector(3) = str2double(get(handles.time3,'String'));
case 4
speedVector(4) = str2double(get(handles.speed4,'String'));
timeVector(4) = str2double(get(handles.time4,'String'));
case 5
speedVector(5) = str2double(get(handles.speed5,'String'));
timeVector(5) = str2double(get(handles.time5,'String'));
case 6
speedVector(6) = str2double(get(handles.speed6,'String'));
timeVector(6) = str2double(get(handles.time6,'String'));
case 7
speedVector(7) = str2double(get(handles.speed7,'String'));
timeVector(7) = str2double(get(handles.time7,'String'));
case 8
speedVector(8) = str2double(get(handles.speed8,'String'));
timeVector(8) = str2double(get(handles.time8,'String'));
case 9
speedVector(9) = str2double(get(handles.speed9,'String'));
timeVector(9) = str2double(get(handles.time9,'String'));
case 10
speedVector(10) = str2double(get(handles.speed10,'String'));
timeVector(10) = str2double(get(handles.time10,'String'));
end
if isnan(speedVector(box)) || isnan(timeVector(box))
speedVector(box) = [];
timeVector(box) = [];
break
end
end
but that is clearly not a very clean way to do it. I'd like to use a loop to systematically go to each box and get a value.
Thanks! - Jon
5 个评论
Jonathan
2013-4-11
Image Analyst
2013-4-11
I don't know what Mahdi means by "list." I don't know what a list is. If he means a listbox, or a popup (what MATLAB calls a drop-down list), neither one lets the user type in something, plus you can't put a text label in front of it nicely like you can with 20 edit fields. See my answer below.
Mahdi
2013-4-12
I meant listbox to select data values from. I wasn't aware that he wanted the user to input these values (but I guess that's what an editbox is for!). Out of curiosity, wouldn't a uitable work as well?
Image Analyst
2013-4-12
Like you said, with a listbox you can select prepopulated items from the list. The user cannot enter new items for speed and time, which is what Jonathan wanted to do, into a listbox.
You could enter data in a grid also - just depends on what kind of "look" you want your GUI to have.
采纳的回答
更多回答(0 个)
类别
在 帮助中心 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!