AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi PopupParent Killt Touch Bedienung

PopupParent Killt Touch Bedienung

Ein Thema von Jakson · begonnen am 3. Mai 2017 · letzter Beitrag vom 17. Mai 2017
Antwort Antwort
Jakson

Registriert seit: 10. Mär 2006
34 Beiträge
 
#1

PopupParent Killt Touch Bedienung

  Alt 3. Mai 2017, 15:36
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
Angehängte Dateien
Dateityp: zip TouchKeyboard Test.zip (2,3 KB, 5x aufgerufen)
  Mit Zitat antworten Zitat
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
717 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: PopupParent Killt Touch Bedienung

  Alt 10. Mai 2017, 01:16
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
Michael Gasser
  Mit Zitat antworten Zitat
Jakson

Registriert seit: 10. Mär 2006
34 Beiträge
 
#3

AW: PopupParent Killt Touch Bedienung

  Alt 11. Mai 2017, 11:18
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
Angehängte Dateien
Dateityp: zip TouchKeyboardApp Test.zip (3,38 MB, 6x aufgerufen)
  Mit Zitat antworten Zitat
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
717 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: PopupParent Killt Touch Bedienung

  Alt 13. Mai 2017, 21:10
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
Michael Gasser
  Mit Zitat antworten Zitat
Jakson

Registriert seit: 10. Mär 2006
34 Beiträge
 
#5

AW: PopupParent Killt Touch Bedienung

  Alt 15. Mai 2017, 08:22
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.

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.
  Mit Zitat antworten Zitat
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
717 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: PopupParent Killt Touch Bedienung

  Alt 17. Mai 2017, 18:35
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
Michael Gasser
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12: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