Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Screen.displayCount=0 bei Android Device (hier Fire HD 10, 9.Gen) (https://www.delphipraxis.net/202427-screen-displaycount%3D0-bei-android-device-hier-fire-hd-10-9-gen.html)

philipp.hofmann 1. Nov 2019 13:32

Screen.displayCount=0 bei Android Device (hier Fire HD 10, 9.Gen)
 
Hi,

hat jemand von euch schon mal das Problem gehabt, dass bei einem Tablet (hier Fire HD 10, 9.Gen -> Android 9 Pie) der DisplayCount=0 ist.
In dem Fall gehen z.B. keine Comboboxen auf, weil die Software nicht weiß, wo sie sie anzeigen soll. Ist dies ein Bug in Delphi oder in der Amazon Android-Integration?
Ein Samsung-Tablet mit Android 9 Pie läuft problemlos.

Ich habe mal einen Issue aufgemacht und vielleicht geht es auch mit der Android 64-Bit-Version, welche uns in 10.3.3 erwartet:
https://quality.embarcadero.com/browse/RSP-26563

Aber vielleicht gibt es ja auch einen Trick.

Grüße, Philipp

philipp.hofmann 15. Nov 2019 13:11

AW: Screen.displayCount=0 bei Android Device (hier Fire HD 10, 9.Gen)
 
Ist leider mal wieder das typische Problem:
- der Delphi-Support sagt Amazon ist schuld
- der Amazon-Support sagt Delphi ist schuld

Temporäre Lösung: FMX.Forms zu patchen und für Android habe ich die MultiDisplaySupported-Methode angepasst (davor durchlief auch Android den {$ELSE}-Weg:

Delphi-Quellcode:
function TScreen.MultiDisplaySupported: Boolean;
begin
  {$IFDEF ANDROID}
    if FMultiDisplaySvc = nil then
    begin
      Result := TPlatformServices.Current.SupportsPlatformService(IFMXMultiDisplayService, FMultiDisplaySvc);
      if (Result and (IFMXMultiDisplayService(FMultiDisplaySvc).DisplayCount<=0)) then
        Result:=false;
    end else if ((FMultiDisplaySvc<>nil) and (IFMXMultiDisplayService(FMultiDisplaySvc).DisplayCount<=0)) then
      Result:=false
    else
      Result := True;
  {$ELSE}
    if FMultiDisplaySvc = nil then
      Result := TPlatformServices.Current.SupportsPlatformService(IFMXMultiDisplayService, FMultiDisplaySvc)
    else
      Result := True;
  {$ENDIF}
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:14 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz