AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Unerwartete Wirkung von Key SPACE innerhalb eines Formulars

Unerwartete Wirkung von Key SPACE innerhalb eines Formulars

Ein Thema von RStb · begonnen am 23. Nov 2020 · letzter Beitrag vom 24. Nov 2020
Antwort Antwort
Seite 1 von 2  1 2   
RStb

Registriert seit: 22. Nov 2020
7 Beiträge
 
#1

Unerwartete Wirkung von Key SPACE innerhalb eines Formulars

  Alt 23. Nov 2020, 19:21
Hallo
kann mir jemand einen Tip geben?
In einem Formular habe ich unter anderem
2 TEdit, einige TButton, ein TRadioGroup mit 7 Columns und 4 TCheckBox.
Innerhalb der TEdit und der TRadioGroup hat die Betätigung der SPACE-Taste die erwartete Wirkung.
Wenn aber ein bestimmter der TButton oder ein beliebiger der TCheckBox den Focos haben, führt
SPACE dazu, dass die letzte TCheckBox den Focus erhält und Checked negiert.
Für den Button gibt es eine Funktion OnClick, welche den Text eines der TEdit beschreibt.

Ich finde nicht heraus, wieso es zu diesem Verhalten von VK_SPACE kommt.
Sicher habe ich irgendwo einen Fehler, aber ich finde ihn nicht.
Reiner
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.015 Beiträge
 
Delphi 2009 Professional
 
#2

AW: Unerwartete Wirkung von Key SPACE innerhalb eines Formulars

  Alt 23. Nov 2020, 19:29
Kannst du ein (Minimal-)beispiel hochladen?
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.415 Beiträge
 
Delphi 7 Professional
 
#3

AW: Unerwartete Wirkung von Key SPACE innerhalb eines Formulars

  Alt 23. Nov 2020, 20:29
Tabreihenfolge der Komponenten prüfen und ggfls. auf eine (für die Bedienung des Formulares) sinnvolle Reihenfolge bringen.

Prüfen, ob in den OnClick-Ereignissen der Focus verloren geht, ggfls. den Focus im OnClick der TButton auf das zu ändernde TEdit setzen.

Gibt es bei irgendeiner (oder auch mehreren) Komponenten ein OnKey...-Ereignis?
Ist ggfls. KeyPreview des Formulars auf True gesetzt und es fängt dadurch die Tastatureingaben "irgendwie" ab und reagiert auf (eher ungewöhnliche Weise) darauf?

Keine Ahnung ob hier jetzt was "problemlösendes" dabei ist, das wären halt die ersten Schritte, die ich bei einem derartigen Problem beschreiten würde.
  Mit Zitat antworten Zitat
RStb

Registriert seit: 22. Nov 2020
7 Beiträge
 
#4

AW: Unerwartete Wirkung von Key SPACE innerhalb eines Formulars

  Alt 23. Nov 2020, 20:45
Tabreihenfolge der Komponenten prüfen und ggfls. auf eine (für die Bedienung des Formulares) sinnvolle Reihenfolge bringen.
Das hab ich getan. Vorher War die TabOrder durch die Reihenfolge der Erstellung der Komponenten festgelegt.
Leider ist mir das Verhalten erst danach aufgefallen.

Prüfen, ob in den OnClick-Ereignissen der Focus verloren geht, ggfls. den Focus im OnClick der TButton auf das zu ändernde TEdit setzen.
Alle Button haben ein OnClick-Ereignis aber nur bei einem tritt das Phänomen auf.
Allerdings liegt auch nur der eine in der Tab-Reihenfolge vor den 4 CheckBoxen.

Gibt es bei irgendeiner (oder auch mehreren) Komponenten ein OnKey...-Ereignis?
Ist ggfls. KeyPreview des Formulars auf True gesetzt und es fängt dadurch die Tastatureingaben "irgendwie" ab und reagiert auf (eher ungewöhnliche Weise) darauf?
Das VK_SPACE hab ich versucht abzufangen, aber wieder verworfen, weil es nichts gebracht hat.

Keine Ahnung ob hier jetzt was "problemlösendes" dabei ist, das wären halt die ersten Schritte, die ich bei einem derartigen Problem beschreiten würde.
Vielen Dank
Reiner
  Mit Zitat antworten Zitat
RStb

Registriert seit: 22. Nov 2020
7 Beiträge
 
#5

AW: Unerwartete Wirkung von Key SPACE innerhalb eines Formulars

  Alt 23. Nov 2020, 20:46
Kannst du ein (Minimal-)beispiel hochladen?
Ich werde mal was vorbereiten (morgen)
Danke
Reiner
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.105 Beiträge
 
Delphi 12 Athens
 
#6

AW: Unerwartete Wirkung von Key SPACE innerhalb eines Formulars

  Alt 23. Nov 2020, 21:17
Ins OnClick/OnCheck/OnChange/sonstwo einen Haltepunkt und dann schauen und hoffen dass der Stacktrace dir zeigt von wo die Änderung ausgelöst wurde.
Wenn nicht, dann versuchen ab da zu debuggen und schauen ob du auf dem Rückweg an dieser Stelle vorbei kommst. (bei SendMessage ginge das, aber hier wird es wohl PostMessage sein, wenn es eine Message war)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (23. Nov 2020 um 21:32 Uhr)
  Mit Zitat antworten Zitat
RStb

Registriert seit: 22. Nov 2020
7 Beiträge
 
#7

AW: Unerwartete Wirkung von Key SPACE innerhalb eines Formulars

  Alt 24. Nov 2020, 16:47
Kannst du ein (Minimal-)beispiel hochladen?
Ich werde mal was vorbereiten (morgen)
Danke
Hab das Formular mal auf das allernötigste reduziert.
Das Verhalten von VK_SPACE ist immer noch reproduzierbar.
siehe Test.zip
Angehängte Dateien
Dateityp: zip Test.zip (1,9 KB, 6x aufgerufen)
Reiner
  Mit Zitat antworten Zitat
RStb

Registriert seit: 22. Nov 2020
7 Beiträge
 
#8

AW: Unerwartete Wirkung von Key SPACE innerhalb eines Formulars

  Alt 24. Nov 2020, 16:52
Ins OnClick/OnCheck/OnChange/sonstwo einen Haltepunkt und dann schauen und hoffen dass der Stacktrace dir zeigt von wo die Änderung ausgelöst wurde.
Wenn nicht, dann versuchen ab da zu debuggen und schauen ob du auf dem Rückweg an dieser Stelle vorbei kommst. (bei SendMessage ginge das, aber hier wird es wohl PostMessage sein, wenn es eine Message war)
Ich habe ein Testprojekt erzeugt.
Hier gibt es nur noch Form_Create, Form_activate und close.
Das merkwürdige Verhalten von VR_SPACE ist immer noch reproduzierbar.
Reiner
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.415 Beiträge
 
Delphi 7 Professional
 
#9

AW: Unerwartete Wirkung von Key SPACE innerhalb eines Formulars

  Alt 24. Nov 2020, 17:57
Der Grund für dieses Verhalten ist so banal, wie genial, wie simpel, wie völlg unerwartet, obwohl es absolut der Spezifikation entspricht (also "erwartungskonform" ist).

In der Caption der CheckBox steht ein & (Ampersand).

Wenn man zur Laufzeit schaut, wird man feststellen, dass das & dort fehlt.

Ampersand gefolgt von Zeichen bedeutet ShortCut. & + Leerzeichen in 'ner Caption bedeutet, dass das Leerzeichen zum ShortCut "mutiert". In der Caption statt des & zwei && machen, dann ist das Leerzeichenproblem weg und das Ampersand erscheint einmal in der Caption der Checkbox.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.105 Beiträge
 
Delphi 12 Athens
 
#10

AW: Unerwartete Wirkung von Key SPACE innerhalb eines Formulars

  Alt 24. Nov 2020, 18:43
LOL

Siehe auch Label.ShowAccelChar,

wobei das & nicht nur bei Label & CheckBox, sondern auch bei Button, GroupBox, RadioButton usw. vorkommt.
Bei Label fällt es selten auf, da dort oft kein FocusControl angegeben ist.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (24. Nov 2020 um 18:47 Uhr)
  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 07:18 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