INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Dieses Thema hat akzeptierte Lösungen:

Wert per Tastendruck übernehmen



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

25.02.2015, 10:45
Beitrag #1

NoWay Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 241
Registriert seit: Jul 2013

LV-2019
2013
EN


Deutschland
Wert per Tastendruck übernehmen
Hallo zusammen.

Bei einer aktuellen Anwendung habe ich eine größere Listbox programmiert, aus der man per Doppelklick zeilenweise Daten ausliest und in einem seperaten Popup zwecks Manipulation darstellt.
Das Popup verfügt über einen OK Button udn einen Discard Button.

OK -> Übernehme den geänderten Wert und schreibe die neue Zeile zurück an das aufrufende VI zwecks Weitererarbeitung
Discard -> Werte werden nicht übernommen und alte Daten bleiben erhalten.

Beide Buttons schließen das Popup. Zusätzlich habe ich eine Prüfung auf Tastendruck implementiert, um den Komfort zu erhöhen. Heißt also: Enter/Return sollen den OK Button triggern und ESC den Discard Button.

Diese Funktionen werden dank der Eventstruktur absolut zuverlässig ausgeführt. Das eigentliche Problem kommt jetzt:
Wenn der User einen Wert eingibt und DIREKT Enter/Return drückt, ohne vorher den Cursor aus dem Eingabefeld bewegt (per Mausklick) zu haben, wird der eingetragene Wert NICHT übernommen.
Klickt der User aber vorher einfach woanders hin oder in ein anderes Feld, wird der Wert übernommen.
Kurzum: Labview übernimmt den Eingabewert scheinbar erst dann wenn das betreffende Feld "verlassen" wurde.

Ich habe dieses Problem auf ein Minimalbeispiel für LV2010 heruntergebrochen und bin für jede Idee dankbar, wie ich es lösen könnte.

Gruß
NoWay


Angehängte Datei(en)
10.0 .vi  call vi.vi (Größe: 7,12 KB / Downloads: 199)

10.0 .vi  popup.vi (Größe: 10,66 KB / Downloads: 215)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
25.02.2015, 11:07
Beitrag #2

NoWay Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 241
Registriert seit: Jul 2013

LV-2019
2013
EN


Deutschland
RE: Wert per Tastendruck übernehmen

Akzeptierte Lösung

Problem gelöst.

Im Key Down? Event musste ich zu den jeweiligen Eigenschaftsknoten noch den Keyfocus hinzufügen und schon funktioniert es scheinbar. Thema hat sich damit erübrigt.

Gruß
NoWay
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.02.2015, 11:18 (Dieser Beitrag wurde zuletzt bearbeitet: 25.02.2015 11:25 von GerdW.)
Beitrag #3

GerdW Offline
______________
LVF-Team

Beiträge: 17.398
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Wert per Tastendruck übernehmen
Hallo NoWay,

einfache und wahrscheinlich bessere Lösung:
Erstelle im Popup ein weiteres ValueChange-Event für dein Numeric!

Noch bessere Lösung:
- Dein Popup krankt an einer ganz anderen Stelle: es MUSS einen Wert zurückgeben, egal ob der User OK oder CANCEL auswählt.
Welchen Wert soll es zurückgeben, wenn du CANCEL drückst? Momentan ist diser Wert genau definiert: Default. Ist das so gewollt?
- Noch ein Problem: Es wird empfohlen, Inputs und Outputs eines VIs (also was am ConnectorPane verbunden ist) immer außerhalb irgendwelche Strukturen zu platzieren, damit es garantiert ausgeführt wird. Dies hast du hier missachtet, was erst zum schon genannten Default-Problem führt…

Also: Logik im Popup verbessern!
Code:
int Output = Popup(int: Input)
IF OK THEN
  Output := newValue
ELSE
  Output := Input
ENDIF

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.02.2015, 11:48
Beitrag #4

NoWay Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 241
Registriert seit: Jul 2013

LV-2019
2013
EN


Deutschland
RE: Wert per Tastendruck übernehmen
Hallo Gerd.

Das sind absolut berechtigte Einwände, die aufgrund meines banalen Beispiels kommen mussten Blush. In meiner tatsächlichen Anwendung ist das berücksichtigt, da ich dem Popup wesentlich mehr Informationen mit auf den Weg gebe und sie durchschleife falls der User auf Cancel klickt. So habe ich sichergestellt, das ich die unveränderten Werte zurückgeben kann. Da mir aber lediglich die Problematik mit dem Tastendruck wichtig war, hatte ich diese Dinge in meinem Beispiel nicht aufgegriffen.
Die Connectorcontrols/Indicators sind in der richtigen Anwendung ebenfalls herausgeführt.

Lerneffekt: Ich werde in Zukunft mehr Sorgfallt in die Erstellung von Beispielen stecken Wink

Gruß
NoWay
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Tastendruck simulieren david126 2 2.918 19.03.2019 13:58
Letzter Beitrag: david126
  Case ausführen bei Tastendruck david126 7 4.773 14.02.2019 22:50
Letzter Beitrag: david126
  Beste Variante ein Programm vom Vorgänger zu übernehmen?! C.Maier 4 3.442 29.11.2016 13:04
Letzter Beitrag: C.Maier
  Wert an naheliegensten Wert aus Array anpassen TSC 17 9.592 26.07.2016 06:59
Letzter Beitrag: TSC
  Einfügen eines Strings bei Tastendruck im aktiven Feld dali4u 2 3.409 21.08.2014 05:51
Letzter Beitrag: sccompu
  Aktueller Wert von vorherigem Wert abziehen Semicon 6 6.198 18.06.2014 16:34
Letzter Beitrag: jg

Gehe zu: