Ver Mensaje Individual
  #8  
Antiguo 21-10-2017
Avatar de MAXIUM
MAXIUM MAXIUM is offline
Miembro
 
Registrado: may 2005
Posts: 1.488
Reputación: 20
MAXIUM Va camino a la fama
Cita:
Empezado por jhonalone Ver Mensaje
A ver MAXIUM, en un TMemo, cuando abres una línea con ENTER y no cabe en el espacio que tú has reservado para el componente en tiempo de diseño, el mismo componente te habilita una nueva línea y desplaza el resto hacia arriba. Aquí no tienes problema.

Por otro lado, todos sabemos que Android Studio funciona distinto de Delphi.
Las Apps creadas con este programa, ocupan menos recursos que las compiladas con Delphi.
Tienes razón en que este programa necesita menos código que que Delphi (en bastantes acciones)
Claro, el código se genera directamente en Java. Delphi tiene que emular Java de alguna manera.

Lamento no hacerme entender. Me refiero al código requerido para que el teclado virtual no se solape sobre los controles de entrada.

Ejemplo, a la izquierda un programa en DELPHI para Android, con un button, label y un par de edit al pie.

Al seleccionar los edit, el teclado virtual se superpone.

----

Este es el código Delphi sugerido por Embarcadero para evitar que se superponga: http://docwiki.embarcadero.com/CodeE...bleForm_Sample
Código Delphi [-]
procedure TFormMain.FormCreate(Sender: TObject);
begin
  VKAutoShowMode := TVKAutoShowMode.Always;
  VertScrollBox1.OnCalcContentBounds := CalcContentBoundsProc;
end;

procedure TFormMain.CalcContentBoundsProc(Sender: TObject;
                                       var ContentBounds: TRectF);
begin
  if FNeedOffset and (FKBBounds.Top > 0) then
  begin
    ContentBounds.Bottom := Max(ContentBounds.Bottom,
                                2 * ClientHeight - FKBBounds.Top);
  end;
end;

procedure TFormMain.RestorePosition;
begin
  VertScrollBox1.ViewportPosition := PointF(VertScrollBox1.ViewportPosition.X, 0);
  MainLayout1.Align := TAlignLayout.Client;
  VertScrollBox1.RealignContent;
end;

procedure TFormMain.UpdateKBBounds;
var
  LFocused : TControl;
  LFocusRect: TRectF;
begin
  FNeedOffset := False;
  if Assigned(Focused) then
  begin
    LFocused := TControl(Focused.GetObject);
    LFocusRect := LFocused.AbsoluteRect;
    LFocusRect.Offset(VertScrollBox1.ViewportPosition);
    if (LFocusRect.IntersectsWith(TRectF.Create(FKBBounds))) and
       (LFocusRect.Bottom > FKBBounds.Top) then
    begin
      FNeedOffset := True;
      MainLayout1.Align := TAlignLayout.Horizontal;
      VertScrollBox1.RealignContent;
      Application.ProcessMessages;
      VertScrollBox1.ViewportPosition :=
        PointF(VertScrollBox1.ViewportPosition.X,
               LFocusRect.Bottom - FKBBounds.Top);
    end;
  end;
  if not FNeedOffset then
    RestorePosition;
end;

procedure TFormMain.FormFocusChanged(Sender: TObject);
begin
  UpdateKBBounds;
end;

procedure TFormMain.FormVirtualKeyboardHidden(Sender: TObject;
                                           KeyboardVisible: Boolean;
                                           const Bounds: TRect);
begin
  FKBBounds.Create(0, 0, 0, 0);
  FNeedOffset := False;
  RestorePosition;
end;

procedure TFormMain.FormVirtualKeyboardShown(Sender: TObject;
                                          KeyboardVisible: Boolean;
                                          const Bounds: TRect);
begin
  FKBBounds := TRectF.Create(Bounds);
  FKBBounds.TopLeft := ScreenToClient(FKBBounds.TopLeft);
  FKBBounds.BottomRight := ScreenToClient(FKBBounds.BottomRight);
  UpdateKBBounds;
end;

En Android Studio solo coloco los componentes y ya

----

Y este es el código requerido para la misma función usando Android Studio:
Código Delphi [-]
NADA

¿Cual es el objetivo de la comparación?

Simplemente encontrar el equivalente en código o configuración del IDE en Delphi que realice lo mismo y que debería ser automático.

Cita:
Empezado por jhonalone Ver Mensaje
También me extraña que, si vas a programar la App en Android Studio, hagas esta pregunta en el foro de Delphi.

Saludos.
Como trato de explicar, mi intención no es programar en Android Studio, sino en Delphi...

Última edición por MAXIUM fecha: 21-10-2017 a las 00:06:30.
Responder Con Cita