multiple ui edit field clear using a callback

Is it possible to change the value of 100 edit field(4 are text 96 are numeric) UI objects without having to write code for each one of them to clear their contents. I'm using the default names EditField_1 to 100.

1 comentario

Stephen23
Stephen23 el 25 de Oct. de 2018
Editada: Stephen23 el 25 de Oct. de 2018
" I'm using the default names EditField_1 to 100."
Ugh, this is such bad code design (not your fault, apparently this is just how appDesigner and GUIDE work). If you had simply written your own code (which I would recommend doing), then you could have just put all of those handles into one array H, and then all you would need is one set call:
set(H,'String','')
set even lets you set each object to a different value, read its help for more information.

Iniciar sesión para comentar.

 Respuesta aceptada

Jan
Jan el 24 de Oct. de 2018
for k = 1:100
H = handles.(sprintf('EditField_%d', k));
set(H, 'String', sprintf('%g', rand));
end
I guessed you are working with GUIDE. It is not clear, which strings you want to insert. What is a "text" or "numeric" edit field? All these fields contain characters.

4 comentarios

In appdesigner you can choose between numeric and text edit Fields. They both use uieditfield, which can be set to numeric.
fig = uifigure;
edt = uieditfield(fig,'numeric');
Numeric edit fields do not accept strings as input and have a default value of 0 (they can not be empty). I think text fields are left-aligned and numeric fields are right-aligned. There might be more differences that i am not aware of. Personally i prefer to use only text edit fields.
Jan's approach will work for uieditfields aswell, however you need to change 'String' to 'Value'.
John Mark Odongo
John Mark Odongo el 25 de Oct. de 2018
I should have mentioned i'm using appdesigner. When creating a UI one of the avvailable components is an Edit Field component with which acts as data a input or displayed. The line of code: H =handles.(sprintf('EditField_%d', k)); returns the error undefined variable "handles" or class "handles.EditField_1". I assume this would have worked with GUIDE.
in appdesigner your handles are stored in app rather than in handles.
for k=1:100
H=app.(sprintf('EditField_%d',k)); %is there really a _ ?
if strcmp(get(H,'Type'),'uieditfield')
set(H,'Value','hi')
else
set(H,'Value',2)
end
end
Check the name of your first edit field, it might be EditField rather than EditField_1.
John Mark Odongo
John Mark Odongo el 25 de Oct. de 2018
Thanks this worked.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Productos

Versión

R2018b

Preguntada:

el 24 de Oct. de 2018

Comentada:

el 25 de Oct. de 2018

Community Treasure Hunt

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

Start Hunting!

Translated by