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/)
-   -   Delphi 10.2 - Scrollable Form Demo geht nicht (https://www.delphipraxis.net/193395-delphi-10-2-scrollable-form-demo-geht-nicht.html)

erich.wanker 25. Jul 2017 16:30

Delphi 10.2 - Scrollable Form Demo geht nicht
 
Hallo Leute,


wegen einiger Probleme in einer Android App mit Delphi 10.1 hab ich auf 10.2 upgedatet (von Berlin auf Tokyo)

Jetzt sind einige Fehler weg - aber neue dazugekommen :-) ..

Jetzt geht das "Scrollen zum Eingabefeld" nicht mehr .. ich hab als Basis den Code der "Scrollable Form Demo" verwendet ...

Die Demo "Scrollable Form Demo" komiliert einwandfrei, die apk Datei startet auf dem Android Gerät (2 verschiedene) .. wenn die virtuelle Tastatur eingeblendet wird, liegt diese über dem Eingabefeld .. der Bildschirm scrollt nicht mehr hoch..

Jetzt hab ich im Internet folgende Aussage gefunden: "FYI - OnVirtualKeyboardShown Broken in Tokyo for Android" -> https://forums.embarcadero.com/messa...ssageID=884561

Stimmt das, und wie kann ich das beheben?

Wie kann ich ggf. ein Update (woher??) einspielen ??

Meine Version ist: Embarcadero® RAD Studio 10.2 Version 25.0.26309.314 - "Professional with Mobile"

Vielen Dank
Erich

erich.wanker 25. Jul 2017 16:38

AW: Delphi 10.2 - Scrollable Form Demo geht nicht
 
ups.. hab jetzt schnell ein showmessage eingebaut .. und das wird ausgeführt .. also doch nix mit "OnVirtualKeyboardShown Broken in Tokyo "


.. und ich hab das Projekt1 nun noch mal mit Delphi 10.1 kompiliert ... und da passt alles .. der Bildschirm scrollt so weit hoch bis das Edit schön sichtbar ist ... komisch ist nur das das "showmessage" anscheinend 2 x ausgeführt wird .. ich muß es in der 10.1 compilierten Version 2 mal wegklicken..



Delphi-Quellcode:
procedure TForm1.FormVirtualKeyboardShown(Sender: TObject;
  KeyboardVisible: Boolean; const Bounds: TRect);
begin
showmessage('Einblenden');

  FKBBounds := TRectF.Create(Bounds);
  FKBBounds.TopLeft := ScreenToClient(FKBBounds.TopLeft);
  FKBBounds.BottomRight := ScreenToClient(FKBBounds.BottomRight);
  UpdateKBBounds;
end;

Darlo 25. Jul 2017 18:19

AW: Delphi 10.2 - Scrollable Form Demo geht nicht
 
So wie ich das im Kopf habe sind bei 10.2 die Bounds vom Keyboard falsch. Nehme einfach DisplayHeigth / 2 oder ähnliches.

mensch72 25. Jul 2017 18:26

AW: Delphi 10.2 - Scrollable Form Demo geht nicht
 
reines Interesse:

Welches "echte Problem" hast du mit Delphi Berlin "10.1update2" bei Android, wo du dir erhoffst oder weißt das es mit Tokyo "10.2hf1+2" besser geworden ist(bzw. sein sollte) ?

Wir "bemühen" uns aus Prinzip immer mit der aktuellesten(ja auch bezahlten) Delphi Version zu arbeiten... praktisch nutzen wir aktuell sowohl unter IOS als auch erst recht für Android unser "Berlin 10.1u2" weiter, testen aber parallel auch alles immer im Vergleich zu aktuell "Tokyo 10.2hf2"... daher die Frage nach dem Problem, für das wir wenn nachvollziehbar gerne einen eigenes Testprojekt machen würden,

bcvs 26. Jul 2017 07:24

AW: Delphi 10.2 - Scrollable Form Demo geht nicht
 
Zitat:

Zitat von erich.wanker (Beitrag 1377450)
Hallo Leute,
Stimmt das, und wie kann ich das beheben?

Ich habe mir diesen Workaraound gebastelt:

Das OnVirtualKeyboardShown wird mehrmals aufgerufen. Beim allerersten Mal nach dem Start der App sind die Bounds-Werte noch korrekt, danach nicht mehr. Also merke ich mit beim allerersten OnVirtualKeyboardShown das Bounds und verwende künftig nur noch diesen Wert, egal was aktuell übergeben wird.

Nachteil: Wenn das Gerät gedreht wird, und OnVirtualKeyboardShown zuerst im Portrait-Modus aufgerufen wurde, stimmt das Bounds im Landscape-Modus nicht mehr. Damit kann ich für meine Zwecke aber leben.

erich.wanker 26. Jul 2017 09:33

AW: Delphi 10.2 - Scrollable Form Demo geht nicht
 
ich hab jetzt folgendes... funktioniert für mich :-)


Delphi-Quellcode:
procedure TForm1.FormVirtualKeyboardShown(Sender: TObject;
  KeyboardVisible: Boolean; const Bounds: TRect);
begin

  FKBBounds := TRectF.Create(Bounds);
  FKBBounds.Top :=   trunc(screen.Height/2)-40;
  FKBBounds.Left:=   0;
  FKBBounds.Width:=  screen.Width;
  FKBBounds.Height:= trunc(screen.Height/2)+40;

  //FKBBounds.TopLeft := ScreenToClient(FKBBounds.TopLeft);
  //FKBBounds.BottomRight := ScreenToClient(FKBBounds.BottomRight);
  UpdateKBBounds;
end;

P.S. Hallo Mensch72

hauptsächlich waren für mich 2 Fehler - die durch 10.2 beseitigt worden sich - wichtig:

Die SystemStatusBar von Android wurde nicht richtig berechnet (Höhe) deshalb hab ich meine App auf "Fullscreen" setzten müssen

Beim Druck auf den "Home-Button" von Android ist meine App angehalten worden .. nach einer Minute warten (ohne Userinteraktiin) kam dann auf einmal "Project1 wurde beendet"

Die Fehlerliste: https://edn.embarcadero.com/article/44747

LiGrü
Erich


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:59 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