Manter o foco no controle em edição acima do teclado virtual
Bom dia;
Estou criando um app Android utilizando Delphi XE5,
Quando o teclado virtual aparece por padrão ele cobre a caixa que está sendo editado, se for abaixo da metade inferior da tela.
Como faço para rolar o formulário para que o campo que está sendo editado permaneça visível?
Obrigado
Estou criando um app Android utilizando Delphi XE5,
Quando o teclado virtual aparece por padrão ele cobre a caixa que está sendo editado, se for abaixo da metade inferior da tela.
Como faço para rolar o formulário para que o campo que está sendo editado permaneça visível?
Obrigado
Adiel França
Curtidas 0
Melhor post
Lucas Ramos
11/02/2015
No form coloque esses códigos nos eventos, o código ainda não ta 100% mas já ajuda e da uma idéia de como vocês tem que fazer, usei esse no delphi XE7 verifiquem para o XE5
procedure TFPrincipal.FormVirtualKeyboardHidden(Sender: TObject; KeyboardVisible: Boolean; const Bounds: TRect); begin FTecladoShow := false; if not KeyboardVisible then AnimateFloat('Padding.Top', 0, 0.1); end;
procedure TFPrincipal.FormVirtualKeyboardShown(Sender: TObject; KeyboardVisible: Boolean; const Bounds: TRect); var O: TFMXObject; begin FTecladoShow := true; if Assigned(Focused) and (Focused.GetObject is TControl) then if TControl(Focused).AbsoluteRect.Bottom - Padding.Top >= (Bounds.Top - DoneBarHeight) then begin //If switching between controls, the KeyboardHidden animation will run first //and we'll see the form scroll up and then down. //Calling StopPropertyAnimation jumps the first animation to it's final value - same problem //Instead we need to search for the other animation and call StopAtCurrent. for O in Children do if (O is TFloatAnimation) and (TFloatAnimation(O).PropertyName = 'Padding.Top') then TFloatAnimation(O).StopAtCurrent; AnimateFloat('Padding.Top',Bounds.Top - DoneBarHeight - TControl(Focused).AbsoluteRect.Bottom + Padding.Top, 0.1) end else else AnimateFloat('Padding.Top', 0, 0.1); end;
GOSTEI 3
Mais Respostas
Prime Ltda
23/01/2015
Estou com a mesma dúvida! Vc já conseguiu resolver?
Grato!
Grato!
GOSTEI 0
Prime Ltda
23/01/2015
Obrigado pela resposta!
Fiz a implementação aqui e acontece o seguinte...
na primeira procedure está dando um erro na linha:
FTecladoShow := false;
Fiz a implementação aqui e acontece o seguinte...
na primeira procedure está dando um erro na linha:
FTecladoShow := false;
GOSTEI 0
Lucas Ramos
23/01/2015
Bom Dia
Essa é uma variável global declara no seu form ou remova a atribuição se for declarar ela é do tipo Boolean.
Essa é uma variável global declara no seu form ou remova a atribuição se for declarar ela é do tipo Boolean.
GOSTEI 1
Mauricio Abreu
23/01/2015
Prezado,
Estamos com querendo que um Edit no Android receba apenas numeros e vírgula (,) ou ponto (.) , já setamos no xe7 a propriedade Keyboardtype para NumbersandPunctuation e o mesmo vem com todos os caracteres.
Sabe como fazer isso?
Estamos com querendo que um Edit no Android receba apenas numeros e vírgula (,) ou ponto (.) , já setamos no xe7 a propriedade Keyboardtype para NumbersandPunctuation e o mesmo vem com todos os caracteres.
Sabe como fazer isso?
GOSTEI 0
Williamdiego2
23/01/2015
Amigos oque seria isto (DoneBarHeight), aqui esta em vermelho!
GOSTEI 0
Felipe Santos
23/01/2015
Camarada,
Muito obrigado, funcionou maravilhosamente.
Apenas tive que adicionar no Uses FMX.Ani que não estava explicado.
Também declarei a Variavel FTecladoShow como Boolean, apesar de que não estou usando ela em outros momentos, pois consigo capturar este status através dos metodos em FMX.VirtualKeyboard.IFMXVirtualKeyboardService (ex.: GetVirtualKeyboardState).
Outra alteração que precisei realizar foi trocar DoneBarHeight pelo Height do meu Toolbar (ex.: Tb_topo.Height ).
Enfim, muito obrigado e espero que as informações ajudem os demais.
PS: Usado no XE8.
Muito obrigado, funcionou maravilhosamente.
Apenas tive que adicionar no Uses FMX.Ani que não estava explicado.
Também declarei a Variavel FTecladoShow como Boolean, apesar de que não estou usando ela em outros momentos, pois consigo capturar este status através dos metodos em FMX.VirtualKeyboard.IFMXVirtualKeyboardService (ex.: GetVirtualKeyboardState).
Outra alteração que precisei realizar foi trocar DoneBarHeight pelo Height do meu Toolbar (ex.: Tb_topo.Height ).
Enfim, muito obrigado e espero que as informações ajudem os demais.
PS: Usado no XE8.
GOSTEI 1
Esquilo Tranquilo
23/01/2015
Camarada,
Muito obrigado, funcionou maravilhosamente.
Apenas tive que adicionar no Uses FMX.Ani que não estava explicado.
Também declarei a Variavel FTecladoShow como Boolean, apesar de que não estou usando ela em outros momentos, pois consigo capturar este status através dos metodos em FMX.VirtualKeyboard.IFMXVirtualKeyboardService (ex.: GetVirtualKeyboardState).
Outra alteração que precisei realizar foi trocar DoneBarHeight pelo Height do meu Toolbar (ex.: Tb_topo.Height ).
Enfim, muito obrigado e espero que as informações ajudem os demais.
PS: Usado no XE8.
Muito obrigado, funcionou maravilhosamente.
Apenas tive que adicionar no Uses FMX.Ani que não estava explicado.
Também declarei a Variavel FTecladoShow como Boolean, apesar de que não estou usando ela em outros momentos, pois consigo capturar este status através dos metodos em FMX.VirtualKeyboard.IFMXVirtualKeyboardService (ex.: GetVirtualKeyboardState).
Outra alteração que precisei realizar foi trocar DoneBarHeight pelo Height do meu Toolbar (ex.: Tb_topo.Height ).
Enfim, muito obrigado e espero que as informações ajudem os demais.
PS: Usado no XE8.
Boa tarde camaradas,
Muito obrigado pelo post de todos, me ajudaram muito.
Mas Felipe, que estrutura vc está usando? É que no meu projeto ele está tipo assim dando uma esticada forte nos Edits e não ficou 100%
Eu estou utilizando um VertScrollBox (AlClient), dentro dele um Layout (AlClient) e dentro deste um Scaledlayout (AlClient), com essa configuração o sistema redimensiona a tela para outros tamanhos e tals.
Porém como comentei, não fica bom o esquema de subir o edit para que o teclado virtual não sobreponha o campo e eu n veja oq estou digitando.
Por favor, peço sua ajuda e dos demais.
obrigado.
Att,
GOSTEI 0
Experidiao Santos
23/01/2015
No Rad Studio 8. tem um exemplo : c:\\user\\public\\Documents\\embarcadero\\16.0\\samples\\object pascal\\mobile samples\\user interface\\keybordtypes\\
Quem tiver outras versões, talvez mude um pouco o caminho.
até mais
Quem tiver outras versões, talvez mude um pouco o caminho.
até mais
GOSTEI 0
Adiel França
23/01/2015
Resposta está nesse site do mestre Rodrigo Mourão:
http://www.rodrigomourao.com.br/tvertscrollbox-aprenda-a-evitar-que-o-teclado-virtual-encubra-seus-controles/
http://www.rodrigomourao.com.br/tvertscrollbox-aprenda-a-evitar-que-o-teclado-virtual-encubra-seus-controles/
GOSTEI 0
Marcos Mendes
23/01/2015
Olá, estou com o mesmo problema porém já havia feito algo parecido ao de vocês hoje eu consigo manter o fóco no componente acima do teclado virtual porém telas com scroll não conseguem manter a funcionalidade ele fica preso isto teria como solucionar?
GOSTEI 0
Marcos Mendes
23/01/2015
Olá, estou com o mesmo problema porém já havia feito algo parecido ao de vocês hoje eu consigo manter o fóco no componente acima do teclado virtual porém telas com scroll não conseguem manter a funcionalidade ele fica preso isto teria como solucionar?
Inclusive o próprio exemplo da Embarcadeiro que foi o que eu utilizei como base tem o mesmo problema, o scroll nao funciona com o componente do teclado virtual ativo
GOSTEI 0