Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Desarrollo en Delphi para Android
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy


Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-10-2017
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 547
Poder: 17
jhonalone Va por buen camino
Hola MAXIUM.

A ver si te sirve este hilo.

Si funciona, me lo cuentas. A mí me va a interesar en un futuro. Gracias.

Saludos
__________________
"Pedid y se os dará; buscad y hallaréis ..." (Lc 11,9-10)
"...si no tengo caridad, nada soy..." (1 Cor 13,1-13)
Responder Con Cita
  #2  
Antiguo 20-10-2017
Avatar de MAXIUM
MAXIUM MAXIUM is offline
Miembro
 
Registrado: may 2005
Posts: 1.488
Poder: 21
MAXIUM Va camino a la fama
Cita:
Empezado por jhonalone Ver Mensaje
Hola MAXIUM.

A ver si te sirve este hilo.

Si funciona, me lo cuentas. A mí me va a interesar en un futuro. Gracias.

Saludos
Es demasiado código para algo que se soluciona con una línea usando Android Studio.

Además, el ejemplo a veces funciona y no logro aplicarlo a un Memo.
Responder Con Cita
  #3  
Antiguo 20-10-2017
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 547
Poder: 17
jhonalone Va por buen camino
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.

También me extraña que, si vas a programar la App en Android Studio, hagas esta pregunta en el foro de Delphi.

Saludos.
__________________
"Pedid y se os dará; buscad y hallaréis ..." (Lc 11,9-10)
"...si no tengo caridad, nada soy..." (1 Cor 13,1-13)
Responder Con Cita
  #4  
Antiguo 21-10-2017
Avatar de MAXIUM
MAXIUM MAXIUM is offline
Miembro
 
Registrado: may 2005
Posts: 1.488
Poder: 21
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
  #5  
Antiguo 21-10-2017
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Pero eso es algo automático en android, no hay que hacer nada para que se desplace la pantalla al salir el teclado.
Responder Con Cita
  #6  
Antiguo 21-10-2017
Avatar de MAXIUM
MAXIUM MAXIUM is offline
Miembro
 
Registrado: may 2005
Posts: 1.488
Poder: 21
MAXIUM Va camino a la fama
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Pero eso es algo automático en android, no hay que hacer nada para que se desplace la pantalla al salir el teclado.
Exacto, pero no ocurre en Delphi XE. Te obligan a escribir todo ese código para algo tan simple

https://www.youtube.com/watch?v=D1DsS1131_c


Última edición por MAXIUM fecha: 21-10-2017 a las 00:38:05.
Responder Con Cita
  #7  
Antiguo 21-10-2017
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 547
Poder: 17
jhonalone Va por buen camino
Hola MAXIUM.

Cita:
Exacto, pero no ocurre en Delphi XE. Te obligan a escribir todo ese código para algo tan simple
En mi pueblo se dice que "no hay atajo sin trabajo". Cuando encuentras ése "atajo" en Android, es porque alguien se ha tomado el "trabajo" de implementarlo. Ojala todo estuviera ya preparado para usar, (¿dónde estaría nuestro trabajo? ¡Cualquiera podría programar sin ningún esfuerzo ni estudio!).

Algo tenemos que poner de nuestra parte... Bien es verdad que cuando podemos usar un trabajo que ya está hecho, sería de tontos repetirlo.

En el tema que nos ocupa, hay bastante gente que ha tratado de resolverlo en Delphi, tomándose un esfuerzo, (como es natural). Ya que (como muchas otras cosas que no serían muy útiles) Embarcadero todavía no ha hecho ése trabajo por nosotros. ¡Y creo que no es poco, que podamos programar para Android desde Delphi!. Seguro que en otras versiones venideras nos facilitará esto y muchas otras cosas. Eso sí, ¡habrá que pagarlo!

Buscando por ahí he encontrado esta unidad que, sólo con citarla en la cláusula uses, hace todo el trabajo por nosotros.

He leído que hay gente trabajando en ella, pero todavía no está perfeccionada por completo.

Yo hice una prueba y funciona "razonablemente" bien. Si tienes en la pantalla un Edit solamente, la primera vez que lo pulsas el teclado virtual se superpone... luego ya no... (¡?)

Bueno, como tenemos el código fuente, tal vez podamos resolver éste y otros inconvenientes que pueda presentarnos...

Ya tenemos un punto de partida... y, para nosotros, no es mucho código citar la unit vkbdhelper en el apartado uses

Seguiremos "trabajando en este atajo"

Perdona por haberme extendido tanto.

Saludos.
__________________
"Pedid y se os dará; buscad y hallaréis ..." (Lc 11,9-10)
"...si no tengo caridad, nada soy..." (1 Cor 13,1-13)

Última edición por jhonalone fecha: 21-10-2017 a las 18:47:26.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
acelerar entrada teclado código PDF417. ppb Varios 0 26-06-2013 12:40:21
Teclado virtual toni.vi OOP 7 12-03-2009 21:16:41
Teclado virtual para TPV Steal API de Windows 5 25-02-2009 00:45:06
Teclado Virtual elcolo83 Varios 2 18-02-2008 12:25:51
Filtrar entrada de teclado rolando_s Varios 3 23-07-2005 22:20:13


La franja horaria es GMT +2. Ahora son las 13:12:39.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi