Retrieve variables from inputdlg in a GUI

6 visualizaciones (últimos 30 días)
Yasser Eljajeh
Yasser Eljajeh el 7 de Mayo de 2020
Comentada: Yasser Eljajeh el 8 de Mayo de 2020
Hi,
I have built a GUI where the callback of 'Project Menu' has an input dialog as below code.
The GUI also has a bushbutton which requires the values which were input in the inputdlg.
Is there any way to retrieve the values of 'Project Name' and 'Project Number' to use in the bushbutton callback?
Thanks,
Prompt={'Project Name','Project Number'};
dlg_title='Project Info';
def= {' ',' '};
num_lines = [ones(size(def')) ones(size(def'))*75];
options.Resize='on';
options.Windowstyle='modal';
options.Interpreter='tex';
Project=inputdlg(Prompt,dlg_title,num_lines,def,options);

Respuesta aceptada

Geoff Hayes
Geoff Hayes el 7 de Mayo de 2020
Yasser - assuming that the user doesn't press cancel, then the project name and number can be retrieved from the cell array Project
projectName = Project{1};
projectNumberAsString = Project{2};
  5 comentarios
Geoff Hayes
Geoff Hayes el 8 de Mayo de 2020
Yasser - so your input dialog is launched from a menu item? So your current menu button callback may look like
% --------------------------------------------------------------------
function projectinfo_Callback(hObject, eventdata, handles)
% hObject handle to projectinfo (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
Prompt={'Project Name','Project Number'};
dlg_title='Project Info';
def= {' ',' '};
num_lines = [ones(size(def')) ones(size(def'))*75];
options.Resize='on';
options.Windowstyle='modal';
options.Interpreter='tex';
Project=inputdlg(Prompt,dlg_title,num_lines,def,options);
% <----- Add this code to save the output
if ~isempty(Project)
handles.projectName = Project{1};
handles.projectNumberAsString = Project{2};
else
% handle case where dialog is closed without inputs
handles.projectName = 'defaultProjectName';
handles.projectNumberAsString = 'defaultProjectNumber';
end
guidata(hObject, handles); % <----- saves the updated handles structure
So now the project information is saved to the handles structure. You can then access this data from your pushbutton callback as
if isfield(handles, 'projectName')
projectName = handles.projectName;
projectNumberAsString = handles.projectNumberAsString;
% do something
end
Yasser Eljajeh
Yasser Eljajeh el 8 de Mayo de 2020
Works perfectly.
Thanks Geoff,

Iniciar sesión para comentar.

Más respuestas (0)

Community Treasure Hunt

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

Start Hunting!

Translated by