Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   Probleme mit FormVirtualKeyboardShown (https://www.delphipraxis.net/191659-probleme-mit-formvirtualkeyboardshown.html)

sko1 7. Feb 2017 14:24

Probleme mit FormVirtualKeyboardShown
 
Hallo,

um z.B. Memos oder Edits "umzupositionieren" wenn auf dem Handy die virtuelle Tastatur eingeblendet wird, benutze ich den FormVirtualKeyboardShown-Event um dort die Bounds(.height) auszuwerten, das soll die Höhe der Tastatur bringen.

Nun aber ist es so dass dieser Aufruf, wenn er erstmalig erfolgt, falsche Ergebnisse bringt, die Tastatur ist dann nur 25 anstelle 320 hoch!

Ich habe alles mögliche probiert, Application.Processmessages eingefügt, und und und alles ohne Erfolg!

Gibt es noch einen anderen Weg an die Höhe der Tastatur zu kommen (die ja auch abhängig vom Hoch/Querformat dargestellt wird)

Ciao
Stefan

Sherlock 7. Feb 2017 14:56

AW: Probleme mit FormVirtualKeyboardShown
 
In welchem Betriebssystem beobachtest Du dieses Verhalten? Unter iOS habe ich keine Probleme (abgesehen vom noch ungelösten Kalender-Verhalten).

Sherlock

Rollo62 7. Feb 2017 18:59

AW: Probleme mit FormVirtualKeyboardShown
 
Bei mir funktioniert das Bounds.Height auf allen Platformen, inclusive Windows.
Nur Mc hat keine VK implementiert.

Delphi-Quellcode:
procedure TPlan_VMdl.EvOnVirtualKeyboardShown(Sender: TObject;
  KeyboardVisible: Boolean; const Bounds: TRect);
begin
    TToolPanel.SendMessage(TToolPanel.TApi.VirtualKeyboard_Height, Bounds.Height);
...
...
...
Rollo

sko1 8. Feb 2017 05:44

AW: Probleme mit FormVirtualKeyboardShown
 
Das Problem habe ich auf einem Android-Handy mit 5.01 sowie auf allen Emulatoren (4.01 ... 6.1).

Aber auch nicht auf allen Formularen, nur auf denen wo sich viele Steuerelemente befinden :-(
Im Netz habe ich Leidensgenossen gefunden, nur leider keine Lösung des Problems!

Ciao
Stefan

Rollo62 8. Feb 2017 07:27

AW: Probleme mit FormVirtualKeyboardShown
 
Bei mir laufen getestet ab Android 4.43 ... 6.01, Samsung, Nexus, LG, HTC,
und auch ein paar China-Exoten.

Mit Emulatoren teste ich gar nicht mehr, das nervt zu sehr, und hat nie wirklich gut funktioniert.

Rollo

sko1 8. Feb 2017 12:12

AW: Probleme mit FormVirtualKeyboardShown
 
Ich habe das jetzt mit einem Doppelaufruf gelöst, Tag der Form wird im OnShow auf 0 gesetzt:

Delphi-Quellcode:
  Keyboardheight := Bounds.Height;
  // weil der erste Aufruf falsche Werte liefert hier der Versuch das beim ersten Mal zu wiederholen
  if FormAuftrag.Tag = 0 then
  begin
    FormAuftrag.Tag := 1;
    MemoEingabe.ResetFocus;
    MemoEingabe.SetFocus; //erneute Anzeige Keyboard
  end;
  MemoEingabe.Size.Height := FormAuftrag.ClientHeight - Keyboardheight - 40;
Das funktioniert jetzt zuverlässig, nur halt Mist wenn man solche Krücken suchen und verwenden muss...

Ciao
Stefan

QuickAndDirty 9. Feb 2017 07:43

AW: Probleme mit FormVirtualKeyboardShown
 
In meinem Virtualkeyboardshown steht das hier
Delphi-Quellcode:
  FKBBounds := TRectF.Create(Bounds);
  FKBBounds.TopLeft := ScreenToClient(FKBBounds.TopLeft);
  FKBBounds.BottomRight := ScreenToClient(FKBBounds.BottomRight);
  UpdateKeyBoardBounds;
unter Bezug auf FKBBounds richte ich dann den Viewport aus. Damit das Edit immer sichtbar ist.

sko1 9. Feb 2017 09:34

AW: Probleme mit FormVirtualKeyboardShown
 
Schön, hilft aber bei meinem Problem nicht weiter, denn beim ersten Aufruf von FormVirtualKeyboardShown ist der Inhalt von Bounds falsch und da würde Dein

Delphi-Quellcode:
FKBBounds := TRectF.Create(Bounds);


auch nur einen falschen Inhalt bekommen...

Ciao
Stefan

DeddyH 9. Feb 2017 11:58

AW: Probleme mit FormVirtualKeyboardShown
 
Funktioniert denn die ScrollableForm-Demo bei Dir?

sko1 9. Feb 2017 12:07

AW: Probleme mit FormVirtualKeyboardShown
 
Das Beispiel funktioniert bei mir, so wie der Event auf Formularen mit wenigen Steuerelementen (meist) richtige Ergebnisse liefert...

Ciao
Stefan

Rollo62 9. Feb 2017 20:42

AW: Probleme mit FormVirtualKeyboardShown
 
Wir denn vielleicht irgendwas doppelt aufgerufen, z.B. die Handler
OnClick und OnTap wären da so ein Kandidat oder noch zusammen mit OnEnter ?

Rollo

sko1 10. Feb 2017 06:23

AW: Probleme mit FormVirtualKeyboardShown
 
Nein, nur SetFocus was dann den FormVirtualKeyboardShown auslöst.

Ciao
Stefan

Sherlock 10. Feb 2017 06:56

AW: Probleme mit FormVirtualKeyboardShown
 
Neee, FormVirtualKeyboardShown wird vom VirtualKeyboard ausgelöst. Das sollte SetFocus gerade mal gar nicht interessieren.

Sherlock

sko1 10. Feb 2017 07:08

AW: Probleme mit FormVirtualKeyboardShown
 
Na ja, das meinte ich ja auch, das SetFocus klappt doch automatisch die Tastatur auf und das erzeugt den Event, oder?

Ciao
Stefan


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:26 Uhr.

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