MATLAB Answers

How can I add 'delete' button to listdlg?

4 views (last 30 days)
Giorgi
Giorgi on 16 Feb 2015
Edited: Stephen on 16 Feb 2015
Hello all! Well I have such code
% code
s.a=2;
s.b=3;
s.c=4;
s.d=5;
str=fieldnames(s);
[s,v] = listdlg('PromptString','Select a file:',...
'SelectionMode','single',...
'ListString',str)
That gives me a figure where are only 'ok' and 'cancel' buttons as default, but now I want to have delete button with which I will be able delete selected variable from s structure. Any ideas would be a great job for me, Thanks in advance.

Answers (1)

Stephen
Stephen on 16 Feb 2015
Edited: Stephen on 16 Feb 2015
The standard listdlg does not support adding other buttons (or features), but one of the neat things about MATLAB is you can often adapt MATLAB's own code for your own purposes: you could rewrite the listdlg function to include another button, and make it do whatever you want it to do. Start by opening listdlg:
open listdlg
and then save a copy in your working directory, changing both the function and file names.
Then search for bushbutton: you will find three instances of uicontrol that are used to define the two standard and open optional button: you can easily change the code to add new buttons and features. You will need to read about uicontrol and understand how callback functions work. You will need to consider how to keep track of the cell of strings listString and change this using the delete button, and also how to refresh the listbox uicontrol when this happens.
  2 Comments
Stephen
Stephen on 16 Feb 2015
Consider doing this instead using two list boxes: one for selecting, one for deleting. This would mean you could use the standard listdlg and keep these two functionalities separate. This would be simpler code than rewriting the listdlg function.

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!

Translated by