いくつかの値が編集可能な textboxに表示される GUI があります。何らかの理由で、これらの値をマウスでコピーできません。テキストを選択できますが、選択したテキストを右クリックしてもドロップダウン メニューが表示されません。私はいたるところを見てきました。私は何が欠けていますか?
3 に答える
uicontextmenu
コンテキスト メニューが必要な場合は、 uicontrol を使用し、 を使用して項目を追加することにより、コンテキスト メニューを自分で実装する必要がありますuimenu
。ここを参照してください: http://www.mathworks.com/help/techdoc/ref/uicontextmenu.html
編集可能なテキスト ボックスを右クリックしても、既定ではコンテキスト メニューが表示されないのは事実ですが、テキストをクリップボードにコピーする場合は、いくつかの方法があります。
Mikhailがコメントで述べているように、テキストを強調表示して+Ctrlを押すCと、クリップボードにコピーできます。
Itamar が回答で言及しているように、関数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
コントロールを右クリックすると、「コピー」という 1 つのオプションを含むメニューが表示されます。このメニュー項目を選択すると、最初にテキストを強調表示しなくても、編集可能なテキスト文字列がクリップボードにコピーされることに注意してください。
コントロールを右クリックすると、テキストを強調表示したりメニュー項目を選択したりしなくても、テキスト文字列がクリップボードに自動的にコピーされるように、編集可能なテキスト ボックスの
'ButtonDownFcn'
プロパティを設定できます。最初に、この m-file 関数を次のパスに保存する必要があります。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
この関数は、親 Figure の
'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);
これは、マウスを 1 回クリックするだけで編集可能なテキスト文字列をクリップボードにコピーできるため、3 つのオプションの中で最も速くて簡単なオプションです。
編集可能なテキストボックスを「有効」にしたかっただけですか?
set(handles.editbox1,'有効にする','オン');
(そのGUIオブジェクトへの「ハンドル」があると仮定します。)
これにより、編集ボックスが編集可能になります。