14.01.2011, 16:47
Beitrag #1
|
Lupin
LVF-Grünschnabel
Beiträge: 21
Registriert seit: Feb 2010
2012
2008
EN
1234
Oesterreich
|
"On Focus"-Event
Wie bekomme ich ein Event, wenn der Benutzer in ein Control klickt oder es mit Tab auswählt? Kann es wirklich sein, dass es kein "on Focus" Event für Controls gibt? Zumindest die Events, die ich für z. B. ein String-Control auswählen kann, sind dafür nicht brauchbar.
|
|
|
14.01.2011, 19:27
Beitrag #2
|
Richard
LVF-Gelegenheitsschreiber
Beiträge: 70
Registriert seit: Jun 2009
8.6,9.0,9.1,10.0,11.0
2008
DE_EN
80797
Deutschland
|
"On Focus"-Event
Hallo,
für das auf ein Control klicken gibts das Event Mouse Down.
Für das Tab kannst du ja ein Event erstellen, das auf App-Ebene auf Keydown reagiert und bei Tab-Key den Keyfocus ausliest und bei dem gewünschten Control den Code ausführt.
Bei Tab auf OK wird das VI beendet.
Gruß Richard
tab_event.vi (Größe: 7,37 KB / Downloads: 378)
|
|
|
17.01.2011, 14:51
Beitrag #3
|
Lupin
LVF-Grünschnabel
Beiträge: 21
Registriert seit: Feb 2010
2012
2008
EN
1234
Oesterreich
|
"On Focus"-Event
Genau dieses Zusammenbasteln aus anderen Events wollte ich vermeiden. Das ist alles andere als wartungsfreundlich. Es verdoppelt Code ganz abgesehen von der zusätzlich notwendigen Logik, ob es überhaupt ein "on focus" war (nicht jeder Klick auf ein Control ist ein solches Event). Und bei jedem Keydown ein Event zu generieren, obwohl ich nur Tabs und nur in bestimmte Controls abfangen will, ist auch nicht grade "sauber". Ich bin etwas verwundert, dass soetwas, das es in anderen Programmiersprachen seit Jahrzehnten gibt, nicht verfügbar ist (und eben weil ich's nicht glauben können habe, habe ich hier gefragt). Da muss ich wohl schauen, ob ich ohne die Funktionalität auskomme und hoffen, dass es irgendwann mal implementiert wird.
|
|
|
17.01.2011, 23:14
Beitrag #4
|
|
|
18.01.2011, 17:26
Beitrag #5
|
Lupin
LVF-Grünschnabel
Beiträge: 21
Registriert seit: Feb 2010
2012
2008
EN
1234
Oesterreich
|
"On Focus"-Event
' schrieb:Wozu brauchst Du das "On Focus" Ereignis?
Für mehrere kleine Dinge, die einem Benutzer hoffentlich helfen:
Als erstes möchte ich in einem String-Control einen Default-Text haben, der gelöscht wird, sobald es Fokus hat (z. B. "Dateinamen hier angeben..."). Und wenn man das Feld verlässt und es steht nichts darin, soll wieder dieser Text auftauchen.
Zweitens möchte ich für bestimmte Controls eine Hilfe (in einem zusätzlichen Text-Feld) anzeigen, sobald es Fokus hat.
Drittens soll die Farbe die Zusammengehörigkeit (die sich ändern kann) von Controls andeuten (Ich möchte darstellen, welche Felder durch das jeweils ausgewählte beinflusst werden).
Alles Dinge, für die ein "OnFocus"-Event genau das richtige wäre.
|
|
|
18.01.2011, 21:01
Beitrag #6
|
|
|
18.01.2011, 21:30
(Dieser Beitrag wurde zuletzt bearbeitet: 18.01.2011 21:44 von GerdW.)
Beitrag #7
|
GerdW
______________
Beiträge: 17.467
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
"On Focus"-Event
Hallo Lupin,
bis es ein echtes KeyFocus-Event gibt, kannst du ja folgendes machen:
- Referenzen der betreffenden Controls in einem Array bündeln
- in einer Schleife regelmäßig den "KeyFocus" dieser Referenzen abfragen
- UserEvent erzeugen unter Verwendung der Referenz, die gerade KeyFocus hat...
Ja, ist Polling. Aber würde funktionieren.
Um eine andere Lösung zu beschleunigen: NI IdeaExchange! Edit: new idea
@Unicorn:
Funktioniert die Kontexthilfe auch bei einer Exe mit eigenem (oder abgeschaltetem) Menü?
|
|
|
18.01.2011, 23:51
Beitrag #8
|
|
|
19.01.2011, 07:56
Beitrag #9
|
|
|
| |