TVertScrollBox, aprenda a evitar que o teclado virtual encubra seus controles

Quando temos um controle onde precisamos digitar algo, como um TEdit, TMemo e etc., dependendo da posição deste controle no form, o teclado virtual pode encobri-lo quando é mostrado pelo sistema operacional. Já passou por isso?

Para contornar esta condição, existe um exemplo no Delphi XE7, XE8 e no Delphi 10 Seattle, chamado ScrollableFormDemo. O diretório é para é C:\Users\Public\Documents\Embarcadero\Studio\xx.x\Samples\Object Pascal\Mobile Samples\User Interface\ScrollableForm onde para o Delphi XE7 XX.X é = 15.0 e para o XE8 16.0. Para o Delphi 10 Seattle, o diretório é C:\Users\Public\Documents\Embarcadero\Studio\17.0\Samples\Object Pascal\Multi-Device Samples\User Interface\ScrollableForm.

Artigo 2Usando os eventos OnVirtualKeyboardShown e OnVirtualkeyboardHiden, o exemplo dispara as rotinas para a rolagem do ScrollBox1, calculando o quanto deve ser empurrado e depois, quando o teclado desaparecer, o quanto ele deve retornar. Executando o exemplo, quando você clicar no TEdit na base do form, ele irá rolar tudo para cima, e quando o teclado for fechado, a tela voltará para a sua posição original. Ele tem poucas linhas de código, e tenho certeza que você não terá dificuldade alguma em entendê-lo.

 Um detalhe importante, e destacado no memo do form, é a variável global VKAutoShowMode := TVKAutoShowMode.vkasAlways, para que o teclado sempre apareça. Não esqueça também de incluir a unit FMX.Types no projeto, pois é onde esta variável global reside (Veja o ScrollableFormDemo.pas).

Para termos esta funcionalidade nos forms do projeto, podemos criar um form básico, como o nosso amigo Rodrigo já nos ensinou em diversos vídeos e nos hangouts, e desenvolver nossos forms herdando este form básico. Para isso, quando for criar um novo form, ao invés de ser um form completamente limpo, vá a File / new / Others e clique em Inheritable Items e selecione o form base que você criou. Pronto!

Se você já tem um projeto pronto, você também pode criar um form base e usá-lo para refazer os forms que precisam desta funcionalidade. Vai dar um trabalho, mas ficará com aparência profissional!

Uma excelente fonte de informação são os exemplos que acompanham os produtos da Embarcadero, não deixe de ver!

Se você tiver dificuldade, envie e-mail pra rchostakovis@hotmail.com, terei o maior prazer em ajudar!

Roberto Chostakovis