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 |
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 |
AW: Probleme mit FormVirtualKeyboardShown
Bei mir funktioniert das Bounds.Height auf allen Platformen, inclusive Windows.
Nur Mc hat keine VK implementiert.
Delphi-Quellcode:
Rollo
procedure TPlan_VMdl.EvOnVirtualKeyboardShown(Sender: TObject;
KeyboardVisible: Boolean; const Bounds: TRect); begin TToolPanel.SendMessage(TToolPanel.TApi.VirtualKeyboard_Height, Bounds.Height); ... ... ... |
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 |
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 |
AW: Probleme mit FormVirtualKeyboardShown
Ich habe das jetzt mit einem Doppelaufruf gelöst, Tag der Form wird im OnShow auf 0 gesetzt:
Delphi-Quellcode:
Das funktioniert jetzt zuverlässig, nur halt Mist wenn man solche Krücken suchen und verwenden muss...
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; Ciao Stefan |
AW: Probleme mit FormVirtualKeyboardShown
In meinem Virtualkeyboardshown steht das hier
Delphi-Quellcode:
unter Bezug auf FKBBounds richte ich dann den Viewport aus. Damit das Edit immer sichtbar ist.
FKBBounds := TRectF.Create(Bounds);
FKBBounds.TopLeft := ScreenToClient(FKBBounds.TopLeft); FKBBounds.BottomRight := ScreenToClient(FKBBounds.BottomRight); UpdateKeyBoardBounds; |
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 |
AW: Probleme mit FormVirtualKeyboardShown
Funktioniert denn die ScrollableForm-Demo bei Dir?
|
AW: Probleme mit FormVirtualKeyboardShown
Das Beispiel funktioniert bei mir, so wie der Event auf Formularen mit wenigen Steuerelementen (meist) richtige Ergebnisse liefert...
Ciao Stefan |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:35 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