Compartir a través de


Simplificar el uso de los controles

Es conveniente hacer todo lo posible para facilitar a los usuarios la comprensión y el uso de los controles. Las teclas de acceso, el orden de tabulación, el texto de Información sobre herramientas y la deshabilitación selectiva contribuyen a un diseño más fácil de usar.

Establecer teclas de acceso

Las teclas de acceso permiten al usuario elegir un control en cualquier lugar del formulario, presionando ALT y la tecla correspondiente.

Para especificar una tecla de acceso para un control

  • Coloque una barra diagonal inversa y un signo menor que (\<) delante de la letra deseada en la propiedad Caption del control.

Por ejemplo, el siguiente valor de la propiedad Caption para el título de un botón de comando convierte la letra O en la tecla de acceso.

\<Open

Un usuario puede elegir el botón de comando desde cualquier lugar del formulario presionando ALT+O.

Para especificar una tecla de acceso para un cuadro de texto o un cuadro de edición

  1. Cree una etiqueta con una barra diagonal inversa y un signo menor que (\<) delante de la letra deseada, como C\<ustomer.
  2. Asegúrese de que la etiqueta es el control que precede en el orden de tabulación el cuadro de texto o el cuadro de edición que quiere que reciba el foco.

Establecer el orden de tabulación de los controles

El orden de tabulación predeterminado de los controles del formulario es el orden en que se agregan los controles al formulario.

Sugerencia   Establezca el orden de tabulación de los controles de forma que el usuario pueda moverse fácilmente por los controles en un orden lógico.

Para cambiar el orden de tabulación de controles

  1. En el Diseñador de formularios, elija Establecer orden de tabulación.
  2. Haga doble clic en el cuadro que aparece junto al control que desea que tenga el foco inicial cuando se abra el formulario
  3. Haga clic en el cuadro situado junto a los otros controles en el orden en que quiere que se llegue a ellos mediante tabulaciones.
  4. Haga clic en cualquier lugar fuera de los cuadros de orden de tabulación para terminar.

También puede establecer el orden de tabulación para los objetos del formulario por lista, según los valores de la ficha Formularios en el cuadro de diálogo Opciones.

Puede establecer el orden de selección para los botones de opción y de comando de un grupo de controles. Para ir a un grupo de controles con el teclado, el usuario avanza utilizando tabulaciones hasta el primer botón del grupo de controles y, a continuación, usa las flechas para seleccionar otros botones del grupo.

Para cambiar el orden de selección de botones de un grupo de controles

  1. En la ventana Propiedades, seleccione el grupo en la lista Objeto. Un borde grueso indica que el grupo está en modo de edición.
  2. Seleccione la ventana del Diseñador de formularios.
  3. En el menú Ver, elija Orden de tabulación.
  4. Establezca el orden de selección de la misma forma que lo haría para el orden de tabulación para controles.

Establecer el texto de Información sobre herramientas

Cada control tiene una propiedad ToolTipText que permite especificar el texto que se muestra cuando el usuario detiene el puntero del mouse sobre el control. La Información sobre herramientas es especialmente útil para los botones que tienen iconos en lugar de texto.

Para especificar el texto de Información sobre herramientas

La propiedad ShowTips del formulario determina si se muestra o no el texto de Información sobre herramientas.

Cambiar la presentación del puntero del mouse

Puede cambiar la presentación del puntero del mouse para que proporcione pistas visuales a sus usuarios sobre los distintos estados en los que puede estar la aplicación.

Por ejemplo, en la clase tsBaseForm de la aplicación de ejemplo Comercial Tasmania, un método WaitMode cambia el puntero del mouse al cursor de estado de espera predeterminado. Antes de ejecutar código que puede tardar cierto tiempo en ser procesado, la aplicación Comercial Tasmania pasa el valor verdadero (.T.) al método WaitMode para cambiar el puntero e informar así al usuario de que se está procesando. Cuando se haya terminado el procesamiento, una llamada a WaitMode con falso (.F.) restablece el puntero del mouse predeterminado.

* WaitMode Method of tsBaseForm class
LPARAMETERS tlWaitMode

lnMousePointer = IIF(tlWaitMode, MOUSE_HOURGLASS, MOUSE_DEFAULT)
THISFORM.MousePointer = lnMousePointer
THISFORM.SetAll('MousePointer', lnMousePointer)

Si desea cambiar el puntero del mouse por otro que no sea uno de los punteros predeterminados, establezca la propiedad MousePointer a 99 - Personalizado y establezca la propiedad MousePointer como su propio archivo de cursor (.cur) o de icono (.ico).

Habilitar y deshabilitar controles

Establezca la propiedad Enabled del control en el valor falso (.F.) si la funcionalidad del control no está disponible en una determinada situación.

Habilitar y deshabilitar botones de un grupo

Puede habilitar o deshabilitar botones de opción o botones de comando individuales de un grupo si establece la propiedad Enabled de cada botón en el valor verdadero (.T.) o falso (.F.). También puede deshabilitar o habilitar todos los botones de un grupo si establece la propiedad Enabled del grupo, como en la línea de código siguiente:

frmForm1.cmgCommandGroup1.Enabled = .T.

Cuando se establece en el valor falso (.F.) la propiedad Enabled de un grupo de botones de opción o de un grupo de botones de comando, se deshabilitan todos los botones del grupo, pero no se muestran con las propiedades ForeColor y BackColor deshabilitadas. Al establecer la propiedad Enabled del grupo no cambia la propiedad Enabled de los botones individuales del grupo. De este modo, se puede deshabilitar un grupo de botones con algunos de los botones ya deshabilitados. Cuando se habilita el grupo, los botones que estaban deshabilitados originalmente permanecen deshabilitados.

Si desea deshabilitar todos los botones de un grupo para que aparezcan deshabilitados y no desea conservar información acerca de qué botones estaban deshabilitados o habilitados originalmente, puede utilizar el método SetAll del grupo, de este modo:

frmForm1.opgOptionGroup1.SetAll("Enabled", .F.)

Permitir a los usuarios arrastrar y colocar

Cuando se diseñan aplicaciones de Visual FoxPro, se puede arrastrar texto, archivos y objetos desde la Galería de componentes, el Administrador de proyectos, el Diseñador de bases de datos y el Diseñador de entornos de datos hasta las ubicaciones deseadas de formularios e informes. Las características de arrastrar y colocar de Visual FoxPro permiten ampliar esta capacidad al usuario en tiempo de ejecución.

Esta capacidad de arrastrar y colocar se extiende a operaciones de múltiples formularios. El usuario puede arrastrar texto, archivos y controles a cualquier lugar de la pantalla, incluidos otros formularios.

Ahora, Visual FoxPro admite dos tipos de operaciones de arrastrar y colocar: arrastrar y colocar de OLE y arrastrar y colocar controles. Arrastrar y colocar de OLE le permite mover datos entre otras aplicaciones que admiten arrastrar y colocar de OLE, como Visual FoxPro, Visual Basic, el Explorador de Windows, Microsoft Word y Excel, etc. En una aplicación distribuida de Visual FoxPro, puede mover datos entre controles de la aplicación, o entre controles y otras aplicaciones de Windows que admitan arrastrar y colocar de OLE.

Arrastrar y colocar controles le permite arrastrar y colocar controles de Visual FoxPro en sus aplicaciones de Visual FoxPro. También se admite en versiones anteriores de Visual FoxPro. Cuando el usuario arrastra un control, Visual FoxPro proporciona un contorno gris del mismo tamaño que el objeto y que se mueve con el puntero del mouse. Puede pasar por alto este comportamiento predeterminado si especifica un archivo de cursor (.cur) para la propiedad DragIcon de un control.

Esta sección describe el proceso de arrastrar y colocar controles. Para obtener más información acerca de arrastrar y colocar de OLE, consulte Técnica de arrastrar y colocar de OLE en "Interoperabilidad e Internet".

Para ver ejemplos de arrastrar y colocar controles

  1. Ejecute Solution.app en el directorio …\Samples\Solution de Visual FoxPro.

  2. En la vista de árbol, haga clic en Controles y a continuación, en General.

    Nota   Al arrastrar un control en tiempo de ejecución no se cambia su ubicación automáticamente. Puede hacerlo, pero deberá programar la reubicación, como se describe en la sección Mover los controles en una operación de arrastrar y colocar. En muchas ocasiones se suele arrastrar para indicar que debe llevarse a cabo alguna acción; el control mantiene su posición original cuando el usuario suelta el botón del mouse.

Si emplea las siguientes propiedades, eventos y métodos de arrastrar y colocar, podrá especificar el significado de una operación de arrastrar y cómo puede iniciarse el arrastre (si se inicia) para un determinado control.

Para Utilice esta característica
Habilitar el arrastre automático o manual de un control. Propiedad DragMode
Especificar qué icono se muestra cuando se arrastra el control. Propiedad DragIcon
Reconocer cuándo se coloca un control en el objeto. Evento DragDrop
Reconocer cuándo se arrastra un control sobre el objeto. Evento DragOver
Iniciar o detener un arrastre manual. Método Drag

Todos los controles visuales pueden arrastrarse en tiempo de ejecución y todos los controles comparten las propiedades que se indican en la tabla anterior. Los formularios reconocen los eventos DragDrop y DragOver, pero no tienen propiedades DragMode y DragIcon.

Habilitar el modo de arrastre automático

Para permitir que el usuario arrastre un control siempre que haga clic en él, establezca su propiedad DragMode en 1. De este modo se habilitará el arrastre automático del control. Cuando se establece en Automático, el arrastre siempre está activo.

Nota   Mientras se produce una operación de arrastre automático, el control que se arrastra no reconoce otros eventos del mouse.

Respuestas cuando el usuario coloca el objeto

Cuando el usuario suelta el botón del mouse después de arrastrar un control, Visual FoxPro genera un evento DragDrop. Hay muchas formas de responder a este evento. Se puede colocar el control en la nueva ubicación (indicada por la última posición del contorno gris). Recuerde que el control no se mueve automáticamente a la nueva ubicación.

Hay dos términos muy importantes relacionados con las operaciones de arrastrar y colocar: origen y destino.

Término Significado
Origen El control que se arrastra.
Destino El objeto sobre el que el usuario coloca el control. Este objeto, que puede ser un formulario o un control, reconoce el evento DragDrop.

Un control se convierte en el destino si la posición del mouse se encuentra dentro de sus bordes cuando se suelta el botón. Un formulario es el destino si el puntero está en una parte en blanco del formulario.

El evento DragDrop recibe tres parámetros: oSource, nXCoord y nYCoord. El parámetro oSource es una referencia al control que se colocó sobre el destino. Los parámetros nXCoord y nYCoord contienen, respectivamente, las coordenadas horizontal y vertical del puntero del mouse dentro del destino.

Puesto que oSource es un objeto, se utiliza del mismo modo que un control; se puede hacer referencia a sus propiedades o llamar a uno de sus métodos. Por ejemplo, las instrucciones siguientes del código asociado al evento DragDrop comprueban si el usuario ha colocado un control sobre sí mismo:

LPARAMETERS oSource, nXCoord, nYCoord
IF oSource.Name != THIS.Name
   * Take some action.
ELSE
   * Control was dropped on itself.
   * Take some other action.
ENDIF

Todos los tipos posibles de control para oSource tienen una propiedad Visible. Por lo tanto, un control puede hacerse invisible cuando se coloca en una determinada parte de un formulario o sobre otro control. La siguiente línea del código asociado al evento DragDrop de un control Image hace que un control arrastrado desaparezca cuando se coloca sobre una imagen:

LPARAMETERS oSource, nXCoord, nYCoord
oSource.Visible = .F.

Indicar zonas de colocación válidas

Al habilitar arrastrar y colocar, puede ayudar a los usuarios incluyendo pistas visuales acerca de dónde pueden y dónde no pueden colocar un control. Para ello, lo mejor que se puede hacer es cambiar la propiedad DragIcon del origen en el código asociado al evento DragOver.

El siguiente código del evento DragOver de un control indica a un usuario que el control no es un destino de colocación válido. En este ejemplo, cOldIcon es una propiedad del formulario definida por el usuario.

LPARAMETERS oSource, nXCoord, nYCoord, nState
DO CASE
   CASE nState = 0 && Enter
      THISFORM.cOldIcon = oSource.DragIcon
      oSource.DragIcon = "NODROP01.CUR"
   CASE nState = 1 && Leave
      oSource.DragIcon = THISFORM.cOldIcon
ENDCASE

Control del inicio y el final de arrastre

Visual FoxPro tiene un valor Manual para la propiedad DragMode que proporciona más control que el valor Automático. El valor Manual permite especificar cuándo se puede y cuándo no se puede arrastrar un control. (Cuando DragMode se establece como Automático, el control siempre se puede arrastrar a condición de que no se cambie el valor).

Por ejemplo, si necesita habilitar el arrastre como respuesta a eventos MouseDown y MouseUp, o en respuesta a un comando del teclado o de menú. La configuración Manual también permite reconocer un evento MouseDown antes de comenzar a arrastrar, de modo que pueda registrar la posición del mouse.

Para habilitar el arrastre desde código, deje DragMode en su valor predeterminado (0 – Manual). A continuación, utilice el método Drag cuando quiera comenzar o detener el arrastre de un objeto:

container.control.Drag(nAction)

Si nAction es 1, el método Drag iniciará el arrastre del control. Si nAction es 2, se colocará el control, lo cual producirá un evento DragDrop. El valor 0 para nAction cancela el arrastre. El efecto es similar a establecer el valor 2, salvo que no se produce ningún evento DragDrop.

Nota   Para habilitar una operación de arrastrar y colocar desde un cuadro de lista, el mejor lugar para llamar al método Drag es el código asociado al evento MouseMove del cuadro de lista de origen, después de determinar que el botón del mouse está presionado. Como ejemplo, el archivo Lmover.scx en la carpeta …\Samples\Solution\Controls\Lists de Visual FoxPro.

Mover los controles en una operación de arrastrar y colocar

Puede interesar que el control de origen cambie de posición cuando el usuario suelte el botón del mouse. Para mover un control a la nueva posición del mouse, utilice el método Move. Por ejemplo, el siguiente código de evento DragDrop de un formulario mueve el control que se arrastra a la nueva ubicación:

LPARAMETERS oSource, nXCoord, nYCoord
oSource.Move(nXCoord, nYCoord)

Es posible que este código no produzca con precisión los efectos deseados, ya que la esquina superior izquierda del control está en la misma posición que el mouse. El código siguiente sitúa el centro del control en la ubicación del mouse:

LPARAMETERS oSource, nXCoord, nYCoord
oSource.Move ((nXCoord – oSource.Width / 2), ;
   (nYCoord – oSource.Height / 2))

El código funciona mejor cuando se establece la propiedad DragIcon en un valor distinto del predeterminado (rectángulo gris). Cuando se usa el rectángulo gris, normalmente se desea mover el control de forma precisa a la posición final del rectángulo gris. Para ello, registre la posición inicial del mouse en el control de origen. A continuación, use esta posición como referencia cuando mueva el control. Para ver un ejemplo, vea Ddrop.scx en el directorio ...\Samples\Solution\Forms de Visual FoxPro.

Para registrar la posición inicial del mouse

  1. Especifique el arrastre manual del control.
  2. Declare dos variables a nivel de formulario, nDragX y nDragY.
  3. Active el arrastre cuando se produzca un evento MouseDown. Además, almacene el valor de nXCoord y nYCoord en las variables a nivel de formulario de este evento.
  4. Desactive el arrastre cuando se produzca el evento MouseUp.

Vea también

Mostrar controles en columnas de cuadrícula | Ampliar formularios | Usar controles | Propiedad Caption | Ventana Propiedades | Controles y objetos