MATLAB Answers


Cycle trough handles on GUI

Asked by Lorenzo on 6 Nov 2013
Latest activity Commented on by Lorenzo on 6 Nov 2013

Dear all, this is probably a stupid question and it was probably asked a thousand times before… Anyway… I have a GUI with a lot of tables. Every table's content is held by a handle called handle.table1, handle.table2 and so forth.

I would like to be able to change the content of the tables automatically with a for cycle.

So far I'm doing this: set(handle.table1, 'PropertyName', PropertyValue) set(handle.table3, 'PropertyName', PropertyValue) set(handle.table2, 'PropertyName', PropertyValue)

And I would like to do this:

for N=1:20

set(handle.tableN, 'PropertyName', PropertyValue)


But… how can I do it? I would like not to change the structure of the handle as that would be a messy solution since I have 4000 lines of code and would require a big rework of the whole GUI…

Thanks a lot!



Log in to comment.

2 Answers

Answer by Lorenzo on 6 Nov 2013
 Accepted Answer

That's great, thanks! I guess I'll ty and use eval in order to do that… That's something I've already done in the past but I wasn't sure if I could do that with handles as well…


You should not use the eval() option for what you want. Use the dynamic structure field name option.

for N=1:20
  set(handle.(sprintf('table%d',N)), 'PropertyName', PropertyValue)

Or if you are setting the same thing for all of them, no loop is needed if you use

set([handle.table1, handle.table2, handle.table3, .....], 'PropertyName', 'Value');

I'm not setting the same thing for all of them. The first option you proposed (dynamic field) seems great! I'll test that!

Thanks for your help!

Log in to comment.

Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

MATLAB Academy

New to MATLAB?

Learn MATLAB today!