LabVIEWForum.de - Controls: Automatisch Aktiv

LabVIEWForum.de

Normale Version: Controls: Automatisch Aktiv
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Liebe Community,

für ein Experiment implementiere ich gerade eine "quality dialog box", wie auf der NI Seite vorgeschlagen
http://www.ni.com/tutorial/8768/en/

meine Dialogbox ist sehr simpel: Ich möchte den User nur auffordern über die Tastatur eine Zahl 1-6 (Likert Scale) einzugeben.
Das Frontpanel der Dialogbox an sich besteht also nur aus einer System-Numeric Control.
Der user hat aber nur ein Keypad und keine Maus etc.

Ich möchte gerne erreichen, dass
a) die Numeric Control bereits aktiv ist, wenn die Dialogbox aufpopt (keine Maus zum Auswählen nötig)
b) die Eingabe (ist ja nur ein Digit) direkt die Box schließt. Derzeit wird das "Value Change" Event leider erst bei "Eingabe" (Enter) ausgeführt. ich möchte aber "Any Button Press" - also, dass das tippen einer Numerntaste (optimalerweise nur 1-6) direkt die Box schließt und keine weiteren Aktionen nötig sind um fortzufahren.

Könnt ihr mir da den einen oder anderen Tip geben?

Beste Grüße
Alex

EDIT: Ich habe b) finden können als "Key-Down" Event klappt das so wie ich möchte. Lediglich a) ist noch offen
Hallo Alex,
für Problem a) würde ich die Eigenschaft TastenFokus = true setzen. Damit wird 'Selection' sofort den Fokus erhalten.

Für den b) Teil hast Du eigentlich schon die Voraussetzung geschaffen.
Wenn Du den 'NeuerWert' auf eine Zahl von 1 bis 6 überprüfst und dann entsprechend ture oder false für das Schleifenende setzt. Sollte den Programm funktionieren.

Gruß
Freddy
a)
Es gibt das Property KeyFocus, das du auf true setzen kannst. Dann erhält das Control den Fokus, so als wenn du es mit der Tab-Taste ausgewählen würdest, es selektiert z.B. den Inhalt des Controls.

b)
Ein Numeric hat leider nicht die Eigenschaft UpdateValueWhileTyping wie z.B. ein String. Daher wird das ValueChange-Ereignis immer erst ausgeführt, wenn die Eingabe abgeschlossen ist, durch Enter oder Verlassen des Controls mit Tab.

Du kannst aber auf das KeyDown-Ereignis reagieren und entweder den Char-Ausgang auswerten (1 entspricht ASCII-Code 49) oder den ScanCode (normale 1 ist ScanCode 2, Numernblock 1 ist ScanCode 79).

[attachment=57294]

Thomas
Danke euch!!
Ich habs eben auch exakt so gelöst wie Thomas, nachdem ich den key-down event genauer angeschaut habe.
Danke für die ScanCode Details!

Grüße
Alex
Referenz-URLs