Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Capturar los clics del ratón

Propiedades que controlan las respuestas a los clics del ratón

Existen dos propiedades que determinan si los objetos responden a los clics del ratón y cómo lo hacen:

  • PickableParts: determina si un objeto captura los clics del ratón.

  • HitTest: determina si el objeto puede responder al clic del ratón que captura o pasa el clic a su antecesor más próximo.

Los objetos pasan el clic a través de la jerarquía de objetos hasta llegar a un objeto que pueda responder.

Programar una respuesta a un clic del ratón

Cuando un objeto captura y responde a un clic del ratón, el objeto:

  • Ejecuta su función de botón como respuesta a un clic con el botón izquierdo del ratón; si el objeto define un callback para la función ButtonDownFcn, MATLAB® ejecuta este callback.

  • Muestra el menú contextual en respuesta a un clic con el botón derecho del ratón. Si el objeto definió un menú contextual mediante la propiedad UIContextMenu, MATLAB recurre a este menú contextual.

Nota

Las figuras no tienen una propiedad PickableParts. Las figuras ejecutan las funciones de callback de botón independientemente de la configuración de su propiedad HitTest.

Nota

Si la propiedad PickableParts de los ejes está establecida en 'none', los elementos secundarios de los ejes no pueden capturar los clics del ratón. En este caso, la figura captura todos los clics del ratón.

Combinaciones de los valores PickablePart/HitTest

Utilice las propiedades PickableParts y HitTest para implementar los siguientes comportamientos:

  • El objeto sobre el que se hizo clic captura el clic del ratón y responde con un callback de botón o un menú contextual.

  • El objeto sobre el que se hizo clic captura el clic del ratón y lo pasa a uno de sus antecesores, que pueden responder con un callback de botón o con un menú contextual.

  • El objeto sobre el que se hizo clic no lo captura. Los objetos detrás del objeto sobre el que se ha hecho clic pueden capturar el clic del ratón.

En esta tabla se resume la respuesta al clic de un ratón según los valores de la propiedad.

PickableParts de los ejesPickablePartsHiltTestResultado de hacer clic con el ratón

visible/todo

visible (valor predeterminado)

activado (valor predeterminado)

Hacer clic en las partes visibles de un objeto ejecuta el callback de botón o invoca un menú contextual

visible/todo

todo

activado

Hacer clic en cualquier parte del objeto, incluso aunque no sea visible, hace al objeto actual y ejecuta el callback de botón o invoca un menú contextual

visible/todo/nada

nada

activado/desactivado

Hacer clic en el objeto nunca lo hace el objeto actual y nunca puede ejecutar el callback de botón o invocar un menú contextual

nada

visible/todo/nada

activado/desactivado

Hacer clic en cualquier elemento secundario de los ejes nunca ejecuta el callback de botón ni invoca un menú contextual

MATLAB busca antecesores utilizando la propiedad Parent de cada objeto hasta que encuentra un antecesor compatible o alcanza la figura.

Elevar el clic del ratón en la jerarquía

Considere la siguiente jerarquía de objetos y sus configuraciones de propiedades PickableParts y HitTest.

Este código crea la jerarquía:

function pickHit
f = figure;
ax = axes;
p = patch(rand(1,3),rand(1,3),'g');
l = line([1 0],[0 1]);
set(f,'ButtonDownFcn',@(~,~)disp('figure'),...
   'HitTest','off')
set(ax,'ButtonDownFcn',@(~,~)disp('axes'),...
   'HitTest','off')
set(p,'ButtonDownFcn',@(~,~)disp('patch'),...
   'PickableParts','all','FaceColor','none')
set(l,'ButtonDownFcn',@(~,~)disp('line'),...
   'HitTest','off')
end

Hacer clic en la línea

Haga clic con el botón izquierdo en la línea:

  • La línea pasa a ser el objeto actual pero no ejecuta su callback de ButtonDownFcn porque su propiedad HitTest está off.

  • La línea pasa el clic al antecesor más cercano (los ejes principales) pero los ejes no pueden ejecutar su callback de ButtonDownFcn de modo que los ejes pasan el clic a la figura.

  • La figura puede ejecutar su callback, así que MATLAB muestra figure en la ventana de comandos.

Hacer clic en el parche

La propiedad FaceColor del parche es none. Sin embargo, la propiedad PickableParts del parche es all, de forma que puede seleccionar el parche haciendo clic en el borde y la cara vacía.

La propiedad HitTest del parche está on de forma que el parche puede pasar a ser el objeto actual. Cuando el parche se convierte en el objeto actual, ejecuta el callback de botón.