Foco e ordem de tabulação

Este artigo foi reproduzido de: http://wenku.baidu.com/view/ba7dfdd180eb6294dd886c77.html

Na programação visual, o foco é um conceito muito importante. Os detalhes a seguir detalham como definir o foco e a ordem das guias dos controles no formulário.

1 Defina o foco

Simplificando, o foco é a capacidade de receber entrada do mouse ou teclado do usuário. Quando um objeto está em foco, ele pode receber a entrada do usuário. No sistema Windows, vários aplicativos podem ser executados em um determinado momento, mas apenas o aplicativo em foco tem uma barra de título ativa e pode receber entrada do usuário. Da mesma forma, em um formulário com várias caixas de texto, apenas a caixa de texto em foco pode aceitar a entrada do usuário.

Quando o objeto obtém o foco, ele aciona o evento GotFocus; quando o objeto perde o foco, ele aciona o evento LostFocus. Vimos exemplos disso no exemplo da caixa de texto acima. O processo de evento LostFocus é normalmente utilizado para confirmar e verificar a validade da atualização, mas também pode ser utilizado para modificar ou alterar as condições estabelecidas no processo de evento GotFocus. Os formulários e a maioria dos controles oferecem suporte a esses eventos.

Você pode definir o foco de um objeto das seguintes maneiras:

l Clique no objeto em tempo de execução

l Use a tecla de atalho para selecionar o objeto em tempo de execução

l Use o método SetFocus no código do programa

l Use a tecla Tab para mover o foco para o objeto

O foco só pode ser movido para uma forma ou controle visível, portanto, um objeto só pode receber o foco quando as propriedades Enabled e Visible de um objeto são True. A propriedade Enabled permite que o objeto responda a eventos gerados pelo usuário, como eventos de teclado e mouse, enquanto a propriedade Visible determina se o objeto está visível.

Observe que nem todos os objetos podem receber foco. Certos controles, incluindo quadro, rótulo, menu, linha, forma, imagem e cronômetro, não podem receber o foco. Para o formulário, somente quando algum controle no formulário não puder receber o foco, o formulário poderá receber o foco.

Para a maioria dos controles que podem receber foco, pode-se ver pela aparência se há foco. Por exemplo, quando um controle como um botão de comando, uma caixa de seleção ou um botão de rádio tem o foco, há uma caixa tracejada dentro dele, conforme mostrado na Figura 2-36. Quando a caixa de texto está em foco, há um cursor de inserção piscando na caixa de texto.

 

Conforme mencionado anteriormente, o foco pode ser definido por meio do método SetFocus. No entanto, deve-se notar que o formulário ou os controles no formulário não são visíveis antes que o evento Load do formulário seja concluído, portanto, você não pode usar diretamente o método SetFocus para mover o foco para o formulário que está sendo carregado durante o evento Form_Load. Ou um controle no formulário. O formulário deve ser exibido com o método Show antes que o foco possa ser definido no formulário ou nos controles do formulário. Por exemplo, para o formulário mostrado na Figura 2-36, escreva o seguinte procedimento de evento:

Sub Form_Load privado ()

       Command2.SetFocus

End Sub

A intenção original do programador era mover diretamente o foco para Command2 depois que o programa começou a ser executado, mas o objetivo não foi alcançado. Depois que o programa é executado, uma mensagem de erro é exibida, conforme mostrado na Figura 2-37.

 

Para resolver este problema, o foco deve estar visível na forma de vida anterior, o que pode ser alcançado através do método Show. O programa acima deve ser:

Sub Form_Load privado ()

    Form1.Show

    Command2.SetFocus

End Sub

2 Ordem de tabulação

Quando houver vários controles no formulário, clique em um controle com o mouse para mover o foco para o controle (assumindo que o controle pode obter o foco). Além do mouse, você também pode usar a tecla Tab para mover o foco para um controle. Cada vez que você pressiona a tecla Tab, o foco se move de um controle para outro. A chamada ordem Tab refere-se à ordem em que o foco se move entre os vários controles quando a tecla Tab é pressionada.

Em geral, a ordem das guias é determinada pela ordem em que o controle foi criado. Por exemplo, suponha que 5 controles sejam criados no formulário, incluindo 3 caixas de texto e dois botões de comando. A ordem de criação é:

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键时,这样的控件将被跳过。


Acho que você gosta

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