App designer: UIAxis ButtonDownFcn with key modifier?

23 vues (au cours des 30 derniers jours)
Neuropragmatist
Neuropragmatist le 1 Mai 2023
Hi all,
I am using the app designer to design a small program, part of this involves getting the user to click on an axis. I use a ButtonDownFcn callback to get the location of the user's mouse click. I use this to select something plotted in the axis, that all works fine.
However, I would like to detect when the mouse click is associated with a modifier key press, such as ctrl or shift, so that the user can click on multiple items. I haven't found a way to do this.
There is the KeyPressFcn, but I'm not sure if this can be combined with the ButtonDownFcn? The UIAxis also stores a CurrentCharacter value, but this only tells me the last key pressed when the axis was selected, not that the current mouse click was simultaneous with a mouse click.
Does anyone have any ideas?

Réponses (2)

Walter Roberson
Walter Roberson le 1 Mai 2023
It isn't pretty... but if you set pickable parts false on your graphic objects but leave it true on your figure, then you can use a figure or uifigure button down function callback, in which case you can refer to the SelectionType property
You will probably want to test whether the CurrentPoint is inside a particular axes. For traditional figures there is an undocumented function https://undocumentedmatlab.com/matlab/wp-content/cache/all/articles/undocumented-mouse-pointer-functions/index.html . I do not know if it is available for uifigure
  1 commentaire
Neuropragmatist
Neuropragmatist le 6 Mai 2023
Thank you for the answer, I've been set back a little in this project but I hope to test what you have suggested soon and will get back/accept answers then!

Connectez-vous pour commenter.


Simon Chan
Simon Chan le 1 Mai 2023
You may combine several callbacks to achieve your goal.
The attached example uses WIndowKeyPressFcn and WindowReleaseFcn from a uifigure, with a combination of ButtonDownFcn on a primitive line.
With the 'control' or 'shift' key pressed, it display the x- or y-values of the clicked points respectively. On the other hand, you can configure it to do something else when no key is pressed with mouse click.
  1 commentaire
Neuropragmatist
Neuropragmatist le 6 Mai 2023
Thank you for the answer, I've been set back a little in this project but I hope to test what you have suggested soon and will get back/accept answers then!

Connectez-vous pour commenter.

Catégories

En savoir plus sur Develop uifigure-Based Apps dans Help Center et File Exchange

Produits


Version

R2023a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by