Giving 'Static Text' a callback
조회 수: 6 (최근 30일)
이전 댓글 표시
I would like to give a 'static text' in a gui a callback. i.e i would like to be able to click on the static text box, and have that complete a command. Ideally, if there is a way i would like to make a callback for a right click only. Not sure if this is possible but any feedback helps.
댓글 수: 1
Walter Roberson
2013년 5월 31일
Please read the guide to tags and retag this question. See http://www.mathworks.co.uk/matlabcentral/answers/43073-a-guide-to-tags
채택된 답변
Walter Roberson
2013년 5월 29일
In some ways similar to Andrew's suggestion:
You can set HitTest off for the static text box, and then you can define a ButtonDownFcn for the figure (or uipanel as relevant) that detects whether it is over the text and if so does what you want.
Alternately, perhaps defining a uicontext menu for the uicontrol would be suitable for your situation.
댓글 수: 2
Sean de Wolski
2013년 5월 29일
This all seems like overkill (and dangerous, what if the text is invisible right now?>, just use the buttondownfcn
Walter Roberson
2013년 5월 29일
Note that for uicontrol style text, the buttondownfcn callback will only be invoked for right click (I think it is... control-click on a Mac trackpad.)
추가 답변 (2개)
Andrew Reibold
2013년 5월 29일
Ok, so what you need to do is make a button instead of a static text box! You can still keep a string of text in it and it can look exactly like a static text box too except maybe it will have a slightly different outline!
There are two properties which can be used in conjunction to accomplish a right click response.
One is the button's 'ButtonDownFcn' callback function. This callback function executes when pressing a mouse button on or near a UICONTROL object -- including when pressing the right mouse button.
The other property is the figure's 'SelectionType' property. This property indicates which kind of click was registered in the figure window -- including clicks on controls within the figure.
Putting these two together, you can define a 'ButtonDownFcn' callback for a push button which checks the figure's 'SelectionType' property to detect a right-click. An example is shown below. (In that example, the ANCESTOR function is used to get the figure's handle. If this is being done in a GUIDE-created GUI, this is unnecessary as the 'handles' structure already provides access to the figure's handle.)
function test
uicontrol('Style', 'pushbutton', ...
'ButtonDownFcn', @myCallback);
end
function myCallback(src, evt)
figHandle = ancestor(src, 'figure');
clickType = get(figHandle, 'SelectionType');
if strcmp(clickType, 'alt')
disp('right click action goes here!');
end
end
댓글 수: 2
Sean de Wolski
2013년 5월 29일
This should work with the uicontrol being a textbox too!
etc.
uicontrol('Style', 'text', ...
etc
Walter Roberson
2013년 5월 29일
To get rid of the button look itself, you can define its CData property -- possibly even to a rendered version of the text you want to show.
참고 항목
카테고리
Help Center 및 File Exchange에서 Migrate GUIDE Apps에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!