Orden de enfoque y tabulación

Este artículo se reproduce en: http://wenku.baidu.com/view/ba7dfdd180eb6294dd886c77.html

En la programación visual, el enfoque es un concepto muy importante. A continuación, se detalla cómo establecer el enfoque y el orden de tabulación de los controles en el formulario.

1 Establecer enfoque

En pocas palabras, el enfoque es la capacidad de recibir entradas de teclado o mouse del usuario. Cuando un objeto tiene el foco, puede recibir información del usuario. En el sistema Windows, se pueden ejecutar varias aplicaciones en un momento determinado, pero solo la aplicación enfocada tiene una barra de título activa y puede recibir información del usuario. De manera similar, en un formulario con varios cuadros de texto, solo el cuadro de texto con el foco puede aceptar la entrada del usuario.

Cuando el objeto recibe el enfoque, activará el evento GotFocus; cuando el objeto pierde el enfoque, activará el evento LostFocus. Hemos visto ejemplos de esto en el ejemplo del cuadro de texto anterior. El proceso de eventos de LostFocus se suele utilizar para confirmar y comprobar la validez de la actualización, también se puede utilizar para modificar o cambiar las condiciones establecidas en el proceso de eventos de GotFocus. Los formularios y la mayoría de los controles admiten estos eventos.

Puede establecer el enfoque de un objeto de las siguientes formas:

l Haga clic en el objeto en tiempo de ejecución

l Use la tecla de acceso rápido para seleccionar el objeto en tiempo de ejecución

l Utilice el método SetFocus en el código del programa

l Use la tecla Tab para mover el foco al objeto

El foco solo se puede mover a un formulario o control visible. Por lo tanto, un objeto puede recibir el foco solo cuando sus propiedades Habilitada y Visible son ambas Verdaderas. La propiedad Enabled permite que el objeto responda a eventos generados por el usuario, como eventos de teclado y mouse, mientras que la propiedad Visible determina si el objeto es visible.

Tenga en cuenta que no todos los objetos pueden recibir el foco. Ciertos controles, incluidos Marco, Etiqueta, Menú, Línea, Forma, Imagen y Temporizador, no pueden recibir el enfoque. Para el formulario, solo cuando cualquier control del formulario no puede recibir el foco, el formulario puede recibir el foco.

Para la mayoría de los controles que pueden recibir foco, se puede ver en la apariencia si tiene foco. Por ejemplo, cuando un control como un botón de comando, una casilla de verificación o un botón de radio tiene el foco, hay un cuadro de guiones en su interior, como se muestra en la Figura 2-36. Cuando el cuadro de texto tiene el foco, hay un cursor de inserción parpadeante en el cuadro de texto.

 

Como se mencionó anteriormente, el enfoque se puede establecer mediante el método SetFocus. Sin embargo, debe tenerse en cuenta que el formulario o los controles del formulario no son visibles antes de que se complete el evento Load del formulario, por lo que no puede utilizar directamente el método SetFocus para mover el foco al formulario que se carga durante el evento Form_Load. O un control en el formulario. El formulario debe mostrarse con el método Show antes de que el foco se pueda establecer en el formulario o los controles en el formulario. Por ejemplo, para el formulario que se muestra en la Figura 2-36, escriba el siguiente procedimiento de evento:

Sub privado Form_Load ()

       Command2.SetFocus

End Sub

La intención original del programador era mover directamente el foco a Command2 después de que el programa comenzara a ejecutarse, pero el objetivo no se logró. Una vez que se ejecuta el programa, se muestra un mensaje de error, como se muestra en la Figura 2-37.

 

Para resolver este problema, el enfoque debe ser visible en la forma de vida anterior, lo que se puede lograr a través del método Show. El programa anterior debe ser:

Sub privado Form_Load ()

    Form1.Show

    Command2.SetFocus

End Sub

2 Orden de tabulación

Cuando hay varios controles en el formulario, haga clic en un control con el mouse para mover el foco al control (asumiendo que el control puede obtener el foco). Además del mouse, también puede usar la tecla Tab para mover el foco a un control. Cada vez que presiona la tecla Tab, el foco se mueve de un control a otro. El llamado orden de tabulación se refiere al orden en el que el foco se mueve entre los distintos controles cuando se presiona la tecla Tab.

En general, el orden de tabulación está determinado por el orden en el que se creó el control. Por ejemplo, suponga que se crean 5 controles en el formulario, incluidos 3 cuadros de texto y dos botones de comando. El orden de creación es:

Texto1 、 Texto2 、 Texto3 、 Comando1 、 Comando2

程序执行时,光标默认地位于Text1中,每按一次Tab键,焦点就按Text2、Text3、Command1、Command2的顺序移动。当焦点位于Command2时,如果按Tab键,则焦点又回到Text1。如前所述,除计时器、菜单、框架、标签等不接收焦点的控件外,其他控件均支持Tab顺序。

可以获得焦点的控件都有一种称为“TabStop”的属性,用它可以控制焦点的移动。该属性的缺省值为True,如果把它设置为False,则在用Tab键移动焦点时会跳过该控件。TabStop属性为False的控件,仍然保持它在实际的Tab顺序中的位置,只不过在按Tab键时这个控件被跳过。

在设计模式下,可以通过属性窗口中的TabIndex属性来改变Tab顺序。在前面的例子中,如果把Command2的TabIndex由4改为0,把Text1的TabIndex由0改为1,把Text2的TabIndex由1改为2,把Text3的TabIndex由2改为3,把Command1的TabIndex由3改为4。则程序运行时Tab顺序变为Command2 →Text1→Text2→Text3→Command1。

不能获得焦点的控件以及无效的和不可见的控件,不具有TabIndex属性,因而不包含在Tab顺序中,按Tab键时,这样的控件将被跳过。


Supongo que te gusta

Origin blog.csdn.net/youarenotme/article/details/78087099
Recomendado
Clasificación