MATLAB Answers

GUIDE - Selecting textbox by iterations - get(handle​s.***,'Str​ing')

43 views (last 30 days)
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
Image Analyst
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.

Sign in to comment.

Accepted Answer

Image Analyst
Image Analyst on 11 Apr 2013
Why have a loop and switch statement? I see no need for either one at all. Just get every one, which you're doing anyway, without any loop!
  4 Comments
Image Analyst
Image Analyst on 11 Apr 2013
Yes, but you'd have to either have the max number and hide the ones you don't want/need, or you'd have to create them dynamically with uicontrol().

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!