Как упоминает Итамар в своем ответе , вы можете создать собственное контекстное меню для редактируемого текстового поля, используя функции UICONTEXTMENU и UIMENU .Вот пример реализации, которая использует функцию CLIPBOARD для добавления редактируемой текстовой строки в буфер обмена:
hFigure = figure; %# Create a figure
hEdit = uicontrol(hFigure,'Style','edit',... %# Create an editable text box
'String','Enter your name here',...
'Position',[30 50 130 20]);
hCMenu = uicontextmenu; %# Create a context menu
uimenu(hCMenu,'Label','Copy',... %# Create a menu item
'Callback',@(hObject,eventData) clipboard('copy',get(hEdit,'String')));
set(hEdit,'UIContextMenu',hCMenu); %# Add context menu to control
Теперь вы можете щелкнуть правой кнопкой мыши элемент управления, чтобы вызвать меню с одним параметром: "Копировать".Обратите внимание, что при выборе этого пункта меню он будет копировать редактируемую текстовую строку в буфер обмена без необходимости выделять текст вначале.
Вы можете установить свойство 'ButtonDownFcn'
для вашего редактируемого текстового поля, чтобы щелчок правой кнопкой мыши на элементе управления автоматически копировал текстовую строку в буфер обмена без необходимости выделять текст или выбирать пункт меню.Сначала вам нужно сохранить эту функцию m-файла по пути:
function right_click_copy(hObject,eventData)
hFigure = get(hObject,'Parent'); %# Get the parent object
while ~strcmp(get(hFigure,'Type'),'figure') %# Loop until it is a figure
hFigure = get(hFigure,'Parent'); %# Keep getting the parents
end
if strcmp(get(hFigure,'SelectionType'),'alt') %# Check for a right click
clipboard('copy',get(hObject,'String')); %# Copy the object string to
%# the clipboard
end
end
Эта функция использует свойство 'SelectionType'
родительского рисунка, чтобы проверить, какая кнопка мыши была нажата, ифункция CLIPBOARD для копирования строки объекта в буфер обмена.Теперь вы можете создать свой редактируемый текстовый элемент управления следующим образом:
hFigure = figure; %# Create a figure
hEdit = uicontrol(hFigure,'Style','edit',... %# Create an editable text box
'String','Enter your name here',...
'Position',[30 50 130 20],...
'ButtonDownFcn',@right_click_copy);
Это самый быстрый и простой вариант из трех, поскольку для копирования редактируемой текстовой строки в буфер обмена требуется всего один щелчок мыши.