Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Unerwartete Wirkung von Key SPACE innerhalb eines Formulars (https://www.delphipraxis.net/206147-unerwartete-wirkung-von-key-space-innerhalb-eines-formulars.html)

RStb 23. Nov 2020 19:21

Unerwartete Wirkung von Key SPACE innerhalb eines Formulars
 
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.

Redeemer 23. Nov 2020 19:29

AW: Unerwartete Wirkung von Key SPACE innerhalb eines Formulars
 
Kannst du ein (Minimal-)beispiel hochladen?

Delphi.Narium 23. Nov 2020 20:29

AW: Unerwartete Wirkung von Key SPACE innerhalb eines Formulars
 
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.

RStb 23. Nov 2020 20:45

AW: Unerwartete Wirkung von Key SPACE innerhalb eines Formulars
 
Zitat:

Zitat von Delphi.Narium (Beitrag 1477809)
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

RStb 23. Nov 2020 20:46

AW: Unerwartete Wirkung von Key SPACE innerhalb eines Formulars
 
Zitat:

Zitat von Redeemer (Beitrag 1477808)
Kannst du ein (Minimal-)beispiel hochladen?

Ich werde mal was vorbereiten (morgen)
Danke

himitsu 23. Nov 2020 21:17

AW: Unerwartete Wirkung von Key SPACE innerhalb eines Formulars
 
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)

RStb 24. Nov 2020 16:47

AW: Unerwartete Wirkung von Key SPACE innerhalb eines Formulars
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von RStb (Beitrag 1477811)
Zitat:

Zitat von Redeemer (Beitrag 1477808)
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

RStb 24. Nov 2020 16:52

AW: Unerwartete Wirkung von Key SPACE innerhalb eines Formulars
 
Zitat:

Zitat von himitsu (Beitrag 1477813)
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.

Delphi.Narium 24. Nov 2020 17:57

AW: Unerwartete Wirkung von Key SPACE innerhalb eines Formulars
 
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.

himitsu 24. Nov 2020 18:43

AW: Unerwartete Wirkung von Key SPACE innerhalb eines Formulars
 
LOL

Siehe auch Label.ShowAccelChar,

wobei das
Delphi-Quellcode:
&
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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:03 Uhr.
Seite 1 von 2  1 2      

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