3

いくつかの値が編集可能な textboxに表示される GUI があります。何らかの理由で、これらの値をマウスでコピーできません。テキストを選択できますが、選択したテキストを右クリックしてもドロップダウン メニューが表示されません。私はいたるところを見てきました。私は何が欠けていますか?

4

3 に答える 3

3

uicontextmenuコンテキスト メニューが必要な場合は、 uicontrol を使用し、 を使用して項目を追加することにより、コンテキスト メニューを自分で実装する必要がありますuimenu。ここを参照してください: http://www.mathworks.com/help/techdoc/ref/uicontextmenu.html

于 2010-12-13T12:22:17.707 に答える
2

編集可能なテキスト ボックスを右クリックしても、既定ではコンテキスト メニューが表示されないのは事実ですが、テキストをクリップボードにコピーする場合は、いくつかの方法があります。

  1. Mikhailがコメントで述べているように、テキストを強調表示して+Ctrlを押すCと、クリップボードにコピーできます。

  2. 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 つのオプションを含むメニューが表示されます。このメニュー項目を選択すると、最初にテキストを強調表示しなくても、編集可能なテキスト文字列がクリップボードにコピーされることに注意してください。

  3. コントロールを右クリックすると、テキストを強調表示したりメニュー項目を選択したりしなくても、テキスト文字列がクリップボードに自動的にコピーされるように、編集可能なテキスト ボックスの'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 つのオプションの中で最も速くて簡単なオプションです。

于 2010-12-13T14:44:54.647 に答える
-1

編集可能なテキストボックスを「有効」にしたかっただけですか?

set(handles.editbox1,'有効にする','オン');

(そのGUIオブジェクトへの「ハンドル」があると仮定します。)

これにより、編集ボックスが編集可能になります。

于 2010-12-14T17:15:42.787 に答える