Create contents of popup menu dynamically

2 Ansichten (letzte 30 Tage)
Luffy
Luffy am 4 Jul. 2012
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 Kommentare
Jan
Jan am 4 Jul. 2012
Ok. What have you tried so far and what problems occurred? Did you read "doc uicontrol" already?
Luffy
Luffy am 5 Jul. 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.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Mark Whirdy
Mark Whirdy am 4 Jul. 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 Kommentare
Luffy
Luffy am 5 Jul. 2012
@Mark:thank you,but could you tell me that 'Value',1 in
set(handles.popupmenu1,'String',myarray,'Value',1) mean
Jan
Jan am 5 Jul. 2012
Please read "doc uicontrol". The 'Value' is the initially selected item.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Jan
Jan am 5 Jul. 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 Kommentare
Mus'ab Ahmad
Mus'ab Ahmad am 18 Aug. 2015
Thanks Jan
Samuel Hirsbrunner
Samuel Hirsbrunner am 23 Jul. 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...

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Migrate GUIDE Apps finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by