Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi PopupParent Killt Touch Bedienung (https://www.delphipraxis.net/192598-popupparent-killt-touch-bedienung.html)

Jakson 3. Mai 2017 15:36

PopupParent Killt Touch Bedienung
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen.

Da es in meinen Programmen hin und wieder vorkommt das ein Fenster Modal hinter dem Aktuellen Fenster geöffnet wird habe ich alle meine Delphi-Referenz durchsuchenShowModal Aufrufe ein Delphi-Referenz durchsuchenPopupParent vorangestellt um das zu verhindern.

Seit dem ich das gemacht habe funktioniert allerdings die Touch Bedienung der Bildschirmtastatur (Delphi-Referenz durchsuchenTTouchKeyboard) nicht mehr. :?

Nehme ich diese wieder weg so funktioniert die Touch Bedienung wieder ohne Probleme.

Was hat das eine mit dem anderen zu tun?
Vermutlich gar nichts.

Meine Vermutung nach einigem Gewühle ist das beim Setzen von Delphi-Referenz durchsuchenPopupParent wird ein Delphi-Referenz durchsuchenRecreateWnd ausgeführt. Dieser löscht vermutlich das Touch-enabled-Flag oder so.

Meine Frage ist jetzt ist das schon bekannt (Hab nichts dergleichen gefunden).
Wie kann ich das verhindern bzw. wie setz ich beim Formular Touch-enabled wieder?

Ich hab noch ein Beispiel angehängt.

Danke schon mal.

Jakson

Michael II 10. Mai 2017 01:16

AW: PopupParent Killt Touch Bedienung
 
Hallo Jakson

ich bin nicht ganz sicher, was du meinst.

Wenn es darum geht, dass nach dem Schliessen des modalen Fensters Form2 Tastenklicks auf Form1.TouchKeyBoard1 nicht mehr im Form1.Memo1 ankommen (wie vor dem Öffnen von Form2), dann liegt es doch daran, dass Form1.Memo1 nicht den Eingabefokus hat?

Klick ins Form1.Memo1 während der Laufzeit oder Memo1.SetFocus; nach Form2.ShowModal; im Code würden das Problem beheben.

Weitere Probleme sah ich nicht, als ich dein Programm laufen liess. Wenn ich noch checken soll, dann sende mir doch eine PN.

Gruss
M

Jakson 11. Mai 2017 11:18

AW: PopupParent Killt Touch Bedienung
 
Liste der Anhänge anzeigen (Anzahl: 1)
Das wenn das Memo keinen Fokus hat Eingaben nicht ankommen ist mir schon klar.

Mein Problem ist das die Touch Eingaben ignoriert werden wenn ich das Fenster mit "PopupParent" öffne.

Ich verwende Delphi 2010 und dort ist es definitiv so dass die Touchtastatur vom Form2 nicht mehr auf Touch Eingaben reagiert wenn ich dieses mit "PopupParent" öffne. Maus Bedienung der Tastatur funktioniert auch weiterhin.

Ich hab mir mal eine eigene Version der "Keyboard.pas" gemacht und alle Windows-Messages ausgewertet die im "WndProc" so ankommen und an die Debug Konsole weitergeleitet.

Am besten ist es in dem Video zu sehen https://youtu.be/hgvVi2kySZY.

Beim zweiten öffnen des Fensters hat das Memo definitiv den Fokus und der Touch Effekt von Windows ist noch sichtbar nur die Tastatur reagiert nicht mehr.

Vor dem öffnen mit "PopupParent" war die Nachricht "WMTouch" noch dabei danach nicht mehr.

Mit welcher Delphi Version hast du das Programm getestet?
Vielleicht wurde der Fehler ja in einer neueren Version behoben.

Ich hänge noch eine kompilierte Version an zum Testen an.

Danke Jakson

Michael II 13. Mai 2017 21:10

AW: PopupParent Killt Touch Bedienung
 
Hallo Jakson

ich habe dein youtube Video angeschaut.

Danach habe ich noch einmal deinen Source Code heruntergeladen und kompiliert in

XE4, XE6 und in Tokyo und genau das getan, was du im Video tust.

Das Keyboard in Form2 funktioniert bei mir mit allen getesteten Delphis.

Gruss
M

Jakson 15. Mai 2017 08:22

AW: PopupParent Killt Touch Bedienung
 
Danke fürs Testen.

Wenn ich das wichtig verstanden habe hat bei dir mein Code im XE4, XE6 und im Tokyo richtig funktioniert.

Wie schauts mit der kompilierten Version aus, kannst du da den Fehler nachstellen?

Wie ich vermutet habe hat das Delphi 2010 da ein Problem und keinem ist es bis jetzt aufgefallen. :cyclops:

Jetzt ist die Frage was machen die neueren Versionen anders?

Meine Vermutung ist ja das beim erstellen des Form2 ein Flag gesetzt wird das Windows mitteilt das dieses Form Touch fähig ist.
Wir jetzt RecreateWnd im zuge des setzen von PopupParent ausgeführt und so wird das Formular neu erstellt ohne dabei dieses Flag zu setzten.

Leider hab ich noch nichts dergleichen gefunden.

Danke für die Unterstützung soweit. :thumb:

Michael II 17. Mai 2017 18:35

AW: PopupParent Killt Touch Bedienung
 
Hallo Jakson

nun habe ich deine exe geladen und getestet wie in deinem YouTube Video. Das TKB auf Form2 reagiert auf Eingaben.
(Windows Version 10.0.15063 Build 15063)

Gruss
M


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