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 Buscar Temas de Hoy Marcar Foros Como Leídos


Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-06-2017
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 545
Poder: 17
jhonalone Va por buen camino
¿cómo adaptar el tamaño del WebBrowser a la pantalla del dispositivo?

Hola de nuevo.

Yo siempre con preguntas "raras".

Si alguien ha encontrado la manera de hacer que la ventana del TWebBrowser se adapte al tamaño de la pantalla de cada dispositivo, agradeceré una sugerencia.

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 02-06-2017
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 545
Poder: 17
jhonalone Va por buen camino
Hola a todos.

He resuelto esta cuestión de la siguiente manera.

1.- He colocado el TWebBrowser dentro de un TScrollBox. El TScrollBox alineado primero alClient o Client (Según versión de Rad Studio) para que me ocupe todo el espacio disponible en el dispositivo.

2.- He cambiado la alineación del TScrollBox alNone o None (Según) porque si no no me deja modificar el ancho y el alto.

3.- He puesto la alineación del TWebBrowser alClient o Client (Ya sabéis)

4.- En la unidad donde se muestra el TWebBrowser tengo el siguiente código:
Código Delphi [-]
uses
 FMX.DeviceInfo, System.UIConsts;


function W : integer;
var
 S:String;
 px : integer;
 I:integer;
begin
  S := DeviceInfo.diScreenLogic;
  px := S.IndexOf('x');
  Result:=S.Substring( 0, px-1).ToInteger; // Se ajusta muy bien a la pantalla
//  Result:=TDeviceDisplayMetrics.Default.LogicalScreenSize.Width; // No se ajusta a la pantalla
end;

function H : integer;
var
 S:String;
 px : integer;
 I:integer;
begin
  S := DeviceInfo.diScreenLogic;
  px := S.IndexOf('x');
  Result:=S.Substring(px+2, S.Length-px-2).ToInteger; // Se ajusta muy bien a la pantalla
//  Result:=TDeviceDisplayMetrics.Default.LogicalScreenSize.Height; // No se ajusta a la pantalla
end;

procedure TAyu.FormShow(Sender: TObject);
   // PONEMOS ESTO EN ONSHOW PORQUE EL PROYECTO ESTÁ EN LANDSCAPE
   // PARA QUE LA DETECCION DEL WIDTH Y EL HEIGHT SIEMPRE SEA LA CORRECTA

begin
 DeviceInfoByPlatform; //Recoge los valores en el record DeviceInfo
 ScrollBox1.Height := H;
 Scrollbox1.Width  := W;
 WebBrowser1.Navigate('file://'+TPath.Combine(TPath.GetDocumentsPath, 'ayuda.htm'));
end;

He intentado hacerlo (Como podéis ver) con las variables standard de Delphi (FMX.Types.TDeviceDisplayMetrics) pero no se ajusta bien a las distintas pantallas (¿?). Me hubiera gustado, pues me podría haber evitado bastantes "permissions" en mi App, pero funciona peor que con FMX.DeviceInfo. Ver descarga aquí.

DeviceInfo es un record declarado en la unidad FMX.DeviceInfo.pas descargable en el link anterior y que está definido de esta forma:
Código Delphi [-]
type
  TmyDeviceInfo = record
    diPlatform: string;
    diPlatformT: TOSVersion.TPlatform;
    diArchitecture: string;
    diArchitecture2: string;
    diArchitectureT: TOSVersion.TArchitecture;
    diMacAddress: string;
    diIPAddress: string;
    diPlatformVer: string;
    diDevice: string;
    diLang: string;
    diScreenPhis: string;
    diScreenLogic: string;
    diScreenWidth: Single;
    diScreenHeight: Single;
    diScale: Single;
    diMobileOperator: string;
    diTimeZone: integer;
    diIsIntel: Boolean;
  end;

var
  DeviceInfo: TmyDeviceInfo;

Algunos de los campos de DeviceInfo son bastante interesantes.

Bueno, si alguien conoce una manera mejor de resolverlo, estoy abierto a sugerencias, mientras tanto me quedaré con esto.

Lo cuento por si le sirve a alguien en el futuro.

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
  #3  
Antiguo 06-06-2017
jo3litro jo3litro is offline
Miembro
 
Registrado: dic 2013
Posts: 33
Poder: 0
jo3litro Va por buen camino
Hola,

Tu codigo me parece bastante interesante,.. funciona compilando para window, pero al compilar para android, da errores... pudiste resolver eso ?

Falto declarar algun uses o agregar componentes ??

Saludos
Responder Con Cita
  #4  
Antiguo 07-06-2017
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 545
Poder: 17
jhonalone Va por buen camino
Hola jo3litro.
Si lo que quieres es la unidad FMX.DeviceInfo para utilizar otras funciones, descárgatela del link que puse más arriba.

Si lo que quieres es adaptar el formato del TWebBrowser a la pantalla. Puedes hacerlo más fácilmente sin utilizar FMX.DeviceInfo de esta manera.

Debes tener localizada en el dispositivo la página web y todas las imágenes y archivos que lleve incluídos.
Yo lo hice colocándolos en el fichero Deployment del proyecto, a la Remote Path assets\internal\, y luego los llamo desde el TWebBrowser de la siguiente manera:
Código Delphi [-]
uses
System.Types,  FMX.Types,  FMX.WebBrowser, System.IOUtils,  FMX.Platform,
// Como mínimo estos, más los que necesite tu unit

var
    sScale: Single;
    sScreenSize: TPoint;
    ScreenService: IFMXScreenService;
// Declaradas globales

procedure TForm1.FormCreate(Sender: TObject);
begin
  if TPlatformServices.Current.SupportsPlatformService(IFMXScreenService, IInterface(ScreenService)) then
  begin
  sScreenSize := ScreenService.GetScreenSize.Round;
  sScale := ScreenService.GetScreenScale;
  end;

 WebBrowser1.Height := sScreenSize.y;
 WebBrowser1.Width := sScreenSize.x;
 WebBrowser1.Navigate('file://'+TPath.Combine(TPath.GetDocumentsPath, 'MiPagina.htm'));
// Lo ponemos en OnShow para que no lo repita cada vez que mostremos el TWebBrowser (Si lo mostramos varias veces)
// De esta forma, te mantiene la última posición de la página cuando lo muestres la próxima vez
end;

Espero que te sirva. Si no vuelve a precisar tu pregunta.
Un saludo.
__________________
"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
  #5  
Antiguo 08-06-2017
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 545
Poder: 17
jhonalone Va por buen camino
Cita:
Empezado por jhonalone Ver Mensaje
/ Lo ponemos en OnShow para que no lo repita cada vez que mostremos el TWebBrowser (Si lo mostramos varias veces)
// De esta forma, te mantiene la última posición de la página cuando lo muestres la próxima vez
Bueno, perdón. Donde dije "OnShow", quise decir "OnCreate"

Lo siento

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
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Adaptar texto al tamaño de una caja (MAJ) HTML, Javascript y otros 4 27-02-2017 19:46:03
Adaptar un video al tamaño de un panel enecumene OOP 6 21-11-2007 19:03:08
Adaptar form a nuevo tamaño de pantalla Tonio Varios 4 26-05-2007 19:55:45
centrar forma y adaptar a la resolucion de pantalla gulder Varios 4 26-10-2005 17:10:55
Webbrowser a pantalla completa nugame Internet 4 29-11-2004 10:14:55


La franja horaria es GMT +2. Ahora son las 15:09:38.


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