
Copy/Paste from ListBox at runtime
5 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Cristian Berceanu
am 9 Dez. 2024
Kommentiert: Adam Danz
am 9 Dez. 2024
Hello,
Is there a way to interactively select the entries in an AppDesigner ListBox and then copy them to a different application? Right-clicking on the elements in the list does not pop-up any context menu and also CTRL-C and CTRL-V do not seem to work...
Regards,
Cristian
0 Kommentare
Akzeptierte Antwort
Adam Danz
am 9 Dez. 2024
Bearbeitet: Adam Danz
am 9 Dez. 2024
Add a right-click "copy" option to ListBox
Create a context menu for the list box and set its MenuSelectedFcn to use clipboard.
For single-selection list boxes
fig = uifigure;
lb = uilistbox(fig,"Items",["Rhodope","Rila","Pirin"]);
lb.ContextMenu = uicontextmenu(fig);
m1 = uimenu(lb.ContextMenu ,'Text','Copy','MenuSelectedFcn',@(~,menuData)clipboard('copy',string(menuData.ContextObject.Value)));
For multiselect list boxes
m1 = uimenu(lb.ContextMenu ,'Text','Copy','MenuSelectedFcn',@(~,menuData)clipboard('copy',strjoin(menuData.ContextObject.Value,newline)));

1 Kommentar
Adam Danz
am 9 Dez. 2024
> I hoped it would be just some option I could tick in the configuration options of the ListBox.
There is no such option but if you are applying this to many list boxes, you can wrap it into a function that you can easily apply to list boxes.
fig = uifigure;
lb = uilistbox(fig,"Items",["Rhodope","Rila","Pirin"]);
% Add copy option
applyCopyOption(lb)
% Add this function to your app
function applyCopyOption(listboxHandle)
fig = ancestor(listboxHandle,'figure');
listboxHandle.ContextMenu = uicontextmenu(fig);
uimenu(listboxHandle.ContextMenu ,'Text','Copy','MenuSelectedFcn',@(~,menuData)clipboard('copy',string(menuData.ContextObject.Value)));
% For multiselect listboxes:
% uimenu(lb.ContextMenu ,'Text','Copy','MenuSelectedFcn',@(~,menuData)clipboard('copy',strjoin(menuData.ContextObject.Value,newline)));
end
Weitere Antworten (2)
Voss
am 9 Dez. 2024
You'd have to implement any context menu or ctrl+c behavior.
An example using a context menu:
f = uifigure();
lb = uilistbox(f,'MultiSelect','on');
cm = uicontextmenu(f);
uimenu(cm,'Text','Copy','MenuSelectedFcn',@(~,~)clipboard('copy',mat2str(string(lb.Value))));
lb.ContextMenu = cm;
To have ctrl+c do the copying, you can set the uifigure's KeyPressFcn or WindowKeyPressFcn. See more: uifigure properties
0 Kommentare
Siehe auch
Kategorien
Mehr zu Graphics Performance finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!