• No results found

Course v3 Considerations & Approach

A continuación se hace una descripción de las propiedades más importantes, con las que cuenta el comando uimenu.

8.6.1 ACELERADOR (ACCELERATOR)

Esta propiedad es opcional y permite definir un carácter con el que activar el menú desde el teclado, sin necesidad de utilizar el ratón. Para activar el menú hay que teclear simultáneamente ALT + el carácter elegido.

uimenu(id_parent,...

'Accelerator','carácter',... );

8.6.2 ACCIÓN A EFECTUAR POR EL MENÚ (CALLBACK)

Esta propiedad es muy importante, ya que determina la acción a realizar por MATLAB al actuar sobre el menú correspondiente.

uimenu(id_parent,...

’CallBack’,’string’,... );

8.6.3 CREACIÓN DE SUBMENUS (CHILDREN)

Permite crear submenús a partir de menús creados previamente. uimenu(id_parent,...

’Children’,vector de handles,... );

8.6.4 MENÚ ACTIVADO/DESACTIVADO (ENABLE)

Esta propiedad permite modificar la posibilidad de acceso al menú correspondiente. A veces resulta interesante que un determinado menú o submenú esté inactivo, porque su acción no tenga sentido en algún momento de la ejecución del programa, (por ejemplo, Word no permite guardar un fichero, si no hay ninguno abierto). Los menús desactivados se muestran en color gris.

uimenu(id_parent,...

’Enable’,’on’/’off’,... );

8.6.5 NOMBRE DEL MENÚ (LABEL)

Esta propiedad establece el texto correspondiente del menú. Esta opción se puede combinar con la del acelerador, con el fin de señalar al usuario del programa, qué tecla debe pulsar para que se ejecute el comando. Así, anteponiendo el carácter (&) a la letra que se desee, ésta aparece subrayada. Esto no significa que este método sustituya al acelerador, solamente es una indicación para el usuario, que le indica la tecla con la que se activa el menú.

uimenu(id_parent,...

’Label’,’string’,... );

Capítulo 8: Fundamentos de las Interfaces Gráficas con MATLAB página 89

8.6.6 CONTROL DEL OBJETO PADRE (PARENT)

Esta opción especifica el id del objeto padre. Debe ir siempre en primer lugar. El padre de un uimenu es siempre una figura u otro uimenu.

uimenu(id_parent,...

’Parent’,handle,... );

8.6.7 POSICIÓN DEL MENÚ (POSITION)

Esta propiedad se define mediante un escalar, que determina la posición relativa del menú. Un orden creciente en los menús, empezando a contar por uno, equivale a situarlos de izquierda a derecha en la barra de menús. En los submenús ese orden creciente significa que se colocan de arriba hacia abajo.

uimenu(id_parent,...

’Position’,scalar,... );

8.6.8 SEPARADOR (SEPARATOR)

Esta propiedad permite colocar una línea de separación encima del menú al que se aplica. Cuando se pone a on se traza la línea y cuando está en off no se coloca. Por defecto esta propiedad está en off.

uimenu(id_parent,...

’Separator’, ’on’/’off’,... );

8.6.9 VISIBLE (VISIBLE)

Puede tomar dos valores: on/off. Indica si el menú es visible en la ventana o no. uimenu(id_parent,...

’Visible’, ’on’/’off’,... );

8.7 Ejemplo de utilización del comando uimenu

A continuación se muestra un ejemplo de utilización de los menús de usuario. El ejemplo consta de tres menús (File, Time y Curve) en la barra de menús.

El menú File incluye tres submenús, Load, Save y Exit. El submenú Load permite cargar el fichero de variables data.mat. El submenú Save salva las variables actuales en el fichero data.mat, y el submenú Exit, detiene la ejecución del programa. El menú Time permite seleccionar entre tres límites para la variable t, que es un vector. El menú Curve despliega a su vez dos submenús (Sinus y Cosinus), que trazan las gráficas de seno y coseno respectivamente, en función del

Después de elegir el tiempo hay que volver a elegir la curva que se desea visualizar. En la figura 28 se muestra un aspecto general del programa.

Para realizar esta aplicación, se crea en primer lugar la ventana del programa. A continuación se muestra cómo se debe crear una ventana sin ningún elemento estándar en la barra de menús. Los menús se irán incluyendo posteriormente.

% Crear una figura sin barra de menús id_Fig = figure('Units','normalized',... 'Numbertitle','off',...

'Name','Ejemplo de uimenus',... 'menubar','none');

% Creación de los diferentes menús % Menú File id_File = uimenu(id_Fig,'Label','&File',... 'Accelerator','f'); % Menú Time id_Time = uimenu(id_Fig,'Label','&Time',... 'Accelerator','t'); % Menú Curve id_Curve = uimenu(id_Fig,'Label','&Curve',... 'Accelerator','c');

% Creación de los diferentes submenús % File id_Load = uimenu(id_File,'Label','&Load',... 'Accelerator','L',... 'CallBack','load data.mat'); id_Save = uimenu(id_File,'Label','&Save',... 'Accelerator','s',... 'CallBack','save data.mat'); id_Exit = uimenu(id_File,'Label','E&xit',... 'Accelerator','x',... 'CallBack','close'); % Time id_10 = uimenu(id_Time,'Label','10',... 'CallBack','t=0:.1:10;'); id_20 = uimenu(id_Time,'Label','20',... 'CallBack','t=0:.1:20;'); id_30 = uimenu(id_Time,'Label','30',... 'CallBack','t=0:.1:30;'); % Curve id_Sinus = uimenu(id_Curve,'Label','Sinus',... 'CallBack','plot(t,sin(t));grid;title(''Sinus'')'); id_Cosinus = uimenu(id_Curve,'Label','Cosinus',... 'CallBack','plot(t,cos(t));grid;title(''Cosinus'')',... 'Separator','on');

8.8 Menús contextuales (uicontextmenu)

Los menús contextuales son menús que se abren cuando el usuario realiza una determinada acción (normalmente clicar con el botón derecho) sobre un objeto de la figura.

Los menús contextuales se crean también con la función uimenu, poniendo en on la propiedad UIContextMenu del objeto al que se quiere unir el menú contextual. para más información consultar el Help de MATLAB.

Capítulo 9: Construcción Interactiva de Interfaces de Usuario (GUIDE) página 91

9. Construcción Interactiva de Interfaces de Usuario (GUIDE)