Delphi - Como dar foco no próximo controle da tela
Em Delphi é muito fácil dar foco a um controle. Você simplesmente checa se o controle pode receber foco usando a propriedade CanFocus e se puder, usa o método SetFocus do controle. E a verificação da propriedade CanFocus, embora seja bastante negligenciada, evita a bem conhecida exceção “Cannot focus a disabled or invisible window“.
Um recurso relativamente simples e não muito comum é mudar o foco para o próximo controle, simulando o que ocorreria se o usuário pressionasse a tecla Tab. Alguns casos em que se quer fazer isso:
- Fazer com que o Enter atue como Tab (comum em sistemas antigos ou com usuários acostumados a sistemas Clipper e COBOL)
- Evitar que o foco de teclado passe por determinados controles que não possuam a propriedade TabStop
Isso é feito simplesmente chamando o método SelectNext do formulário. Por exemplo:
Self.SelectNext(Self.ActiveControl, true, true);
O primeiro parâmetro informa o controle ativo.
O segundo parâmetro (com valor true) informa que a procura pelo próximo controle é feita “para frente”. Para fazer na ordem inversa, é só passar false e então o controle anterior no TabOrder será selecionado.
O terceiro parâmetro, se verdadeiro, informa ao método que a propriedade TabStop deve ser respeitada, ou seja, o controle só será considerado se tiver TabStop = true.
assine você também!




Deixe um comentário