Ir al contenido


Foto

comportamiento de edit text


  • Por favor identifícate para responder
3 respuestas en este tema

#1 look

look

    Advanced Member

  • Miembros
  • PipPipPip
  • 418 mensajes
  • LocationLa Ceiba-Atlantida-Honduras

Escrito 05 abril 2014 - 09:20

Hola amigos, estoy testeando el delphi xe5 para hacer aplicaciones android, estoy haciendo una pegueña aplicacion que tiene un control de clientes, los datos se almacenan en una base de datos sql-Lite, todo funcina muy bien, el unico inconveniente que tengo es que al momento de escrivir en cualquier edit del formulario este queda detras del teclado en pantalla, lo que no me permite ver que estoy escribiendo en el edit que tiene el foco, he visto otro comportamiento en las aplicaciones que trae el movil en el cual cuando seleccionas un edit o campo de texto este se corre al top, demanera que el teclado queda debajo y se puede ver en todo momento que es lo que se esta escribiendo.
¿como puedo lograr este comportamiento?

Saludos!
  • 0

#2 look

look

    Advanced Member

  • Miembros
  • PipPipPip
  • 418 mensajes
  • LocationLa Ceiba-Atlantida-Honduras

Escrito 05 abril 2014 - 10:55

Encontre esto:
http://stackoverflow...eyboard-pops-up

hay que agregar esto al manifest:


delphi
  1. android:windowSoftInputMode="adjustResize|stateHidden"



pero esto no me funciona aun  8o| 8o| 8o| 8o| 8o| 8o|
  • 0

#3 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 07 abril 2014 - 08:56

Hola amigo look, en mi bitácora hay una publicación que aborda el tema Construir una App iOS paso a paso.

Yo encontré éste mismo detalle y lo solucioné mirando los ejemplos que trae el mismo Delphi y que mencioné en la misma publicación, aquí el extracto de ese asunto.

Y como todo lo nuevo, hay algunos detalles que hay que tomar en cuenta a la hora de escribir nuestro código,

por ejemplo:

¿Cómo hacer que nuestra aplicación se ajuste en la pantalla para que no se encime en los contoles donde vamos a capturar el monto a convertir?.

La solución la encontré en uno de los ejemplos que vienen con delphi y se llama “ScrollableForm” el cual se encuentra en el directorio “RAD Studio\11.0\Samples\FireMonkeyMobile”.
Se requirió de agregar dos componentes más, un TVertScrollBox y un TLayout para poder ajustar la pantalla cuando se intenta escribir en los controles sin que interfiriera el teclado numérico.



delphi
  1. {******************************************************************************}
  2. {  código para ajustar los objetos cuando se muestra el teclado en la pantalla }
  3. {******************************************************************************}
  4.  
  5. procedure THeaderFooterForm.RestorePosition;
  6. begin
  7.   VertScrollBox1.ViewportPosition := PointF(VertScrollBox1.ViewportPosition.X, 0);
  8.   Layout1.Align := TAlignLayout.alClient;
  9.   VertScrollBox1.RealignContent;
  10. end;
  11.  
  12. procedure THeaderFooterForm.UpdateKBBounds;
  13. var
  14.   LFocused : TControl;
  15.   LFocusRect: TRectF;
  16. begin
  17.   FNeedOffset := False;
  18.   if Assigned(Focused) then
  19.   begin
  20.     LFocused := TControl(Focused.GetObject);
  21.     LFocusRect := LFocused.AbsoluteRect;
  22.     LFocusRect.Offset(VertScrollBox1.ViewportPosition);
  23.     if (LFocusRect.IntersectsWith(TRectF.Create(FKBBounds))) and
  24.       (LFocusRect.Bottom > FKBBounds.Top) then
  25.     begin
  26.       FNeedOffset := True;
  27.       Layout1.Align := TAlignLayout.alHorizontal;
  28.       VertScrollBox1.RealignContent;
  29.       Application.ProcessMessages;
  30.       VertScrollBox1.ViewportPosition :=
  31.         PointF(VertScrollBox1.ViewportPosition.X,
  32.               LFocusRect.Bottom - FKBBounds.Top);
  33.     end;
  34.   end;
  35.   if not FNeedOffset then
  36.     RestorePosition;
  37. end;
  38.  
  39. procedure THeaderFooterForm.FormCreate(Sender: TObject);
  40. begin
  41.   VertScrollBox1.OnCalcContentBounds := CalcContentBoundsProc;
  42. end;
  43.  
  44. procedure THeaderFooterForm.FormVirtualKeyboardHidden(Sender: TObject;
  45.   KeyboardVisible: Boolean; const Bounds: TRect);
  46. begin
  47.   FKBBounds.Create(0, 0, 0, 0);
  48.   FNeedOffset := False;
  49.   RestorePosition;
  50. end;
  51.  
  52. procedure THeaderFooterForm.FormVirtualKeyboardShown(Sender: TObject;
  53.   KeyboardVisible: Boolean; const Bounds: TRect);
  54. begin
  55.   FKBBounds := TRectF.Create(Bounds);
  56.   FKBBounds.TopLeft := ScreenToClient(FKBBounds.TopLeft);
  57.   FKBBounds.BottomRight := ScreenToClient(FKBBounds.BottomRight);
  58.   UpdateKBBounds;
  59. end;
  60.  
  61. procedure THeaderFooterForm.CalcContentBoundsProc(Sender: TObject;
  62.   var ContentBounds: TRectF);
  63. begin
  64.   if FNeedOffset and (FKBBounds.Top > 0) then
  65.   begin
  66.     ContentBounds.Bottom := Max(ContentBounds.Bottom,
  67.                                 2 * ClientHeight - FKBBounds.Top);
  68.   end;
  69. end;
  70. {******************************************************************************}





Espero te ayude.

Saludos
  • 0

#4 look

look

    Advanced Member

  • Miembros
  • PipPipPip
  • 418 mensajes
  • LocationLa Ceiba-Atlantida-Honduras

Escrito 08 abril 2014 - 03:43

Hola amigo look, en mi bitácora hay una publicación que aborda el tema Construir una App iOS paso a paso.

Yo encontré éste mismo detalle y lo solucioné mirando los ejemplos que trae el mismo Delphi y que mencioné en la misma publicación, aquí el extracto de ese asunto.


Y como todo lo nuevo, hay algunos detalles que hay que tomar en cuenta a la hora de escribir nuestro código,

por ejemplo:

¿Cómo hacer que nuestra aplicación se ajuste en la pantalla para que no se encime en los contoles donde vamos a capturar el monto a convertir?.

La solución la encontré en uno de los ejemplos que vienen con delphi y se llama “ScrollableForm” el cual se encuentra en el directorio “RAD Studio\11.0\Samples\FireMonkeyMobile”.
Se requirió de agregar dos componentes más, un TVertScrollBox y un TLayout para poder ajustar la pantalla cuando se intenta escribir en los controles sin que interfiriera el teclado numérico.



delphi
  1. {******************************************************************************}
  2. {  código para ajustar los objetos cuando se muestra el teclado en la pantalla }
  3. {******************************************************************************}
  4.  
  5. procedure THeaderFooterForm.RestorePosition;
  6. begin
  7.   VertScrollBox1.ViewportPosition := PointF(VertScrollBox1.ViewportPosition.X, 0);
  8.   Layout1.Align := TAlignLayout.alClient;
  9.   VertScrollBox1.RealignContent;
  10. end;
  11.  
  12. procedure THeaderFooterForm.UpdateKBBounds;
  13. var
  14.   LFocused : TControl;
  15.   LFocusRect: TRectF;
  16. begin
  17.   FNeedOffset := False;
  18.   if Assigned(Focused) then
  19.   begin
  20.     LFocused := TControl(Focused.GetObject);
  21.     LFocusRect := LFocused.AbsoluteRect;
  22.     LFocusRect.Offset(VertScrollBox1.ViewportPosition);
  23.     if (LFocusRect.IntersectsWith(TRectF.Create(FKBBounds))) and
  24.       (LFocusRect.Bottom > FKBBounds.Top) then
  25.     begin
  26.       FNeedOffset := True;
  27.       Layout1.Align := TAlignLayout.alHorizontal;
  28.       VertScrollBox1.RealignContent;
  29.       Application.ProcessMessages;
  30.       VertScrollBox1.ViewportPosition :=
  31.         PointF(VertScrollBox1.ViewportPosition.X,
  32.               LFocusRect.Bottom - FKBBounds.Top);
  33.     end;
  34.   end;
  35.   if not FNeedOffset then
  36.     RestorePosition;
  37. end;
  38.  
  39. procedure THeaderFooterForm.FormCreate(Sender: TObject);
  40. begin
  41.   VertScrollBox1.OnCalcContentBounds := CalcContentBoundsProc;
  42. end;
  43.  
  44. procedure THeaderFooterForm.FormVirtualKeyboardHidden(Sender: TObject;
  45.   KeyboardVisible: Boolean; const Bounds: TRect);
  46. begin
  47.   FKBBounds.Create(0, 0, 0, 0);
  48.   FNeedOffset := False;
  49.   RestorePosition;
  50. end;
  51.  
  52. procedure THeaderFooterForm.FormVirtualKeyboardShown(Sender: TObject;
  53.   KeyboardVisible: Boolean; const Bounds: TRect);
  54. begin
  55.   FKBBounds := TRectF.Create(Bounds);
  56.   FKBBounds.TopLeft := ScreenToClient(FKBBounds.TopLeft);
  57.   FKBBounds.BottomRight := ScreenToClient(FKBBounds.BottomRight);
  58.   UpdateKBBounds;
  59. end;
  60.  
  61. procedure THeaderFooterForm.CalcContentBoundsProc(Sender: TObject;
  62.   var ContentBounds: TRectF);
  63. begin
  64.   if FNeedOffset and (FKBBounds.Top > 0) then
  65.   begin
  66.     ContentBounds.Bottom := Max(ContentBounds.Bottom,
  67.                                 2 * ClientHeight - FKBBounds.Top);
  68.   end;
  69. end;
  70. {******************************************************************************}





Espero te ayude.

Saludos


Hola amigo, gracias , esta insteresante...

Saludos!
  • 0




IP.Board spam blocked by CleanTalk.