Create contents of popup menu dynamically

2 visualizaciones (últimos 30 días)
Luffy
Luffy el 4 de Jul. de 2012
Comentada: Samuel Hirsbrunner el 23 de Jul. de 2016
I want to create a popup menu with contents dynamically,based on value of a variable n in my code.
Example:- If n is 2,the contents should be Data1,Data2.
If n is 3,the contents should be Data1,Data2,Data3.
...................................................
If n is x,the contents should be Data1,Data2,......Datax
  2 comentarios
Jan
Jan el 4 de Jul. de 2012
Ok. What have you tried so far and what problems occurred? Did you read "doc uicontrol" already?
Luffy
Luffy el 5 de Jul. de 2012
Yeah I know about uicontrol,I tried this:
v = evalin('base','n'); % n is variable i explained in question.
switch v
Case 1
uicontrol('Style', 'popupmenu', ...
'String', {'Data1'}, ...
'Units', 'pixels', ...
'Position', [370, 60, 95, 21]);
Case 2
uicontrol('Style', 'popupmenu', ...
'String', {'Data1','Data2'}, ...
'Units', 'pixels', ...
'Position', [370, 60, 95, 21]);
Case 3
uicontrol('Style', 'popupmenu', ...
'String', {'Data1','Data2','Data3'}, ...
'Units', 'pixels', ...
'Position', [370, 60, 95, 21]);
end
But what if value of n is 100,I can't go on writing switch cases.

Iniciar sesión para comentar.

Respuesta aceptada

Mark Whirdy
Mark Whirdy el 4 de Jul. de 2012
Hi Luffy
Not 100% sure I understand the degree of dynamism you're going for but stick the code below underneath whereever n changes (assuming handles is in scope there). Here you specify the menu contents cell array explicity in each case - does this fit your use-case?
switch n case 1 set(handles.popupmenu1,'String',{'Data1';'Data2'},'Value',1); case 2 set(handles.popupmenu1,'String',{'Data1';'Data2';'Data3'},'Value',1); end
Alternatively, if for some reason you're defining the contents to be a cellaray of 'Data#' whose length = n, then the code below should do it
n = 4; myarray = strcat('Data',cellfun(@num2str,num2cell((1:n)'),'UniformOutput',false)) set(handles.popupmenu1,'String',myarray,'Value',1);
All the best Mark
  2 comentarios
Luffy
Luffy el 5 de Jul. de 2012
@Mark:thank you,but could you tell me that 'Value',1 in
set(handles.popupmenu1,'String',myarray,'Value',1) mean
Jan
Jan el 5 de Jul. de 2012
Please read "doc uicontrol". The 'Value' is the initially selected item.

Iniciar sesión para comentar.

Más respuestas (1)

Jan
Jan el 5 de Jul. de 2012
String = sprintf('Data%d#', 1:n);
String(end) = [];
CString = regexp(String, '#', 'split');
uicontrol('Style', 'popupmenu', ...
'String', String, ...
'Units', 'pixels', ...
'Position', [370, 60, 95, 21]);
  3 comentarios
Mus'ab Ahmad
Mus'ab Ahmad el 18 de Ag. de 2015
Thanks Jan
Samuel Hirsbrunner
Samuel Hirsbrunner el 23 de Jul. de 2016
finde this on my researches... I may shorten the code again:
String = sprintf('Data%d\n',1:size(Data))
by adding "\n" it made a new line on each value. so no need for the regesp() at least i think this works...

Iniciar sesión para comentar.

Categorías

Más información sobre Migrate GUIDE Apps en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by