Ho to make a popup box enable/disable visibility of textbox?

조회 수: 7 (최근 30일)
Jucimar Carpe
Jucimar Carpe 2018년 11월 17일
댓글: Jucimar Carpe 2018년 11월 20일
Hi guys!
I'm building a GUI interface and i want to disable and enable the visibility of a textbox (entry user information box), from popup list. How cand i do that?
My popup has 4 differents options, the first 2 options i want enable and for 3 an 4 option disable.
One more thing, i already saw some structures on web, but it doesn't seem to work form, but i suspect that i'm using it in the wrong place of my script, where should i write this commands?
Cheers!

채택된 답변

Nick
Nick 2018년 11월 17일
You need to add a callback that checks for the value of your dropdown menu and edits the enable value of your edit textbox. As we do not know the structure of your code here is a small example how you would approach it:
function exampleGui
handles = struct;
hFig = figure;
handles.dropdown= uicontrol('Parent', hFig,...
'Style','popupmenu',...
'String',{'Can edit 1', 'Can edit 2', 'Cannot edit 1', 'Cannot edit 2'},...
'Units','normalized',...
'Callback', @onEditDropdown,...
'Position',[0.1 0.4 0.2 0.2]);
handles.textbox = uicontrol('Parent', hFig,...
'Style','edit',...
'Units','normalized',...
'Position',[0.4 0.4 0.5 0.2]);
function onEditDropdown(src,event)
if src.Value>2
handles.textbox.Enable = 'off';
else
handles.textbox.Enable = 'on';
end
end
end
  댓글 수: 3
Nick
Nick 2018년 11월 20일
Its a bit hard for me to see it in your code as it requires a .fig file to run and I am not very familiar with GUIDE as I always coded UI's using classes. But the basic idea is the same: you need a callback function that sets the visible property of the textbox.
You mention that it works when you press the "Calcular" button but not immediatly after you click the popup menu. From your code i am assuming the popup menu is "escolha_lista_de_curto". All the code that checks the value of escolha curto is in the "pushbutton1_callback" which means it will only execute when that specific pushbutton is pressed.
You also have a "escolha_curto_Callback" i am assuming this is the callback linked to your popup menu (not 100% sure but you could check in GUIDE). That is where you would want to set something similar to my code example
So it would be something like this:
function escolha_curto_Callback(hObject, eventdata, handles)
% hObject handle to escolha_curto (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
escolha_lista_de_curto=get(hObject,'value');
% you could do switch or if else for each value but for now
% I just assume item 1-2 = enabled / item 3-4 = disabled
if escolha_lista_de_curto>2
set(handles.textboxHandle, 'visible','off'); % no longer visible
% or if you still want it to be visible but grayed out and uneditable
set(handles.textboxHandle, 'enable','off'); % gray textbox + uneditable
set(handles.textboxHandle, 'string',''); % empty string is textbox is disabled to remove previous values
else
set(handles.textboxHandle, 'visible','on'); % visible
% or alternative:
set(handles.textboxHandle, 'enable','on'); % white textbox + editable
end
end
Hope that helps. Obviously the "textboxHandle" should be whatever your textbox is called but I could not find that in your code as I could not understand the meaning of each variable name. Enable grays out a textbox and makes it uneditable while visible will make it appear or disappear in your GUI, you can choose whatever fits your application best.
Jucimar Carpe
Jucimar Carpe 2018년 11월 20일
Hi Nick, thank you very much, it worked exactly as you described!!!
I even set the edit box to be visible off as well and worked.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Migrate GUIDE Apps에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by