GUIDE - Selecting textbox by iterations - get(handles.***,'String')
Show older comments
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 Comments
Jonathan
on 11 Apr 2013
Image Analyst
on 11 Apr 2013
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
on 12 Apr 2013
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
on 12 Apr 2013
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.
Accepted Answer
More Answers (0)
Categories
Find more on Loops and Conditional Statements in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!