Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: Klaas am 19.08.10 - 10:53:24

Titel: Shortcut zu Bestimmten Feld
Beitrag von: Klaas am 19.08.10 - 10:53:24
Hallo,

ich würde am liebsten einen Shortcut hinterlegen mit dem ich bei einer Eingabe-Maske zu einem bestimmten Feld gehe.

Dabei das bei jedem Verlassen eines Felds möglich sein.

Gibt es da ne Möglichkeit?
Vielleicht irgendwie in der Aktion Exiting abfragen ob eine Taste gedrückt ist?

Danke für Eure mühe.
In den letzten Wochen habe ich hier richtig viel gelernt von euch. :-)

Titel: Re: Shortcut zu Bestimmten Feld
Beitrag von: ascabg am 19.08.10 - 11:08:33
Hallo,

Meines Wissens nach gibt es dies nicht.
Du kannst "nur" die Reihenfolge bestimmen, in welcher die Felder angewaehlt werden durch Betaetigen der Tab-Taste.

Und bei "Exiting" bringt aus meiner Sicht eigentlich nichts, da zum Ausloesen dieses Events das betreffende Feld verlassen werden muss, was bei einem Shortcut (Taskenkombination) nicht immer der Fall ist.


Andreas
Titel: Re: Shortcut zu Bestimmten Feld
Beitrag von: Axel am 19.08.10 - 11:12:54
In der Formelsprache geht das mit @Command([EditGotoField] ; Feldname )

In Script sieht's so aus:

  Dim workspace As New NotesUIWorkspace
  Dim uidoc As NotesUIDocument
  Set uidoc = workspace.CurrentDocument
  Call uidoc.GoToField( "Description" )


Du kannst das Ganze in ein Exiting-Event einfügen. Das muss aber dann für jedes Feld geschehen. Aber du kannst nicht sicher sein, dass das Exiting - Event auch immer zuverlässig ausgeführt wird.

Was soll denn das Ganze werden. Vielleicht gibt's ja noch eine andere Lösung.

Axel

Titel: Re: Shortcut zu Bestimmten Feld
Beitrag von: Klaas am 19.08.10 - 11:27:26
Danke für deine Antwort doch das bringt mich nicht weiter....denn es ist unterschiedlich von welchem feld der user zum sagen wir ende feld kommen will.
Feld1Shortcut 
Feld2|             
Feld3|              Shortcut
Feld4|              |
Feld5|              |
Feld6(Endfeld)
Titel: Re: Shortcut zu Bestimmten Feld
Beitrag von: Demian am 19.08.10 - 11:35:38
denn es ist unterschiedlich von welchem feld der user zum sagen wir ende feld kommen will.

Wenn das von der Eingabe in Feldern abhängig ist, würde ich mit den Feld Hide-When-Formeln arbeiten.

Titel: Re: Shortcut zu Bestimmten Feld
Beitrag von: Klaas am 19.08.10 - 11:42:03
Hallo Demian,

kann man das was in dem Bild Rot gekennzeichnet damit machen?
Also von einem beliebigen Feld in ein Bestimmtes Springen?
Sorry das ich vorher nicht die passenden Worte dafür gefunden habe.

Die Blauen "Paint"-Striche ist der momentane Weg.
Die Roten "Paint"-Striche der gewünschte Weg.
Titel: Re: Shortcut zu Bestimmten Feld
Beitrag von: Axel am 19.08.10 - 12:35:31
Dann bleibt dir nur der Exiting - Event der entsprechenden Felder.

Dort packst du jeweils das untenstehende Script rein.

   Dim workspace As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Set uidoc = workspace.CurrentDocument
   Call uidoc.GoToField( "Name des Leistungsfeldes" )

Wenn der User die Felder z.B. mit der Tab-Taste verlässt, dann sprint er zum Leistungsfeld. Ein andere Möglichkeit sehe ich nicht.

Axel
Titel: Re: Shortcut zu Bestimmten Feld
Beitrag von: Grischu am 20.08.10 - 12:57:35
Die einzige möglichkeit die ich sehe wäre über externe Aufrufe


in der Maske in den Deklarationen

Code
Declare Function GetKeyboardState Lib "user32.dll" (Byval vKey As Variant) As Boolean
Const VK_SHIFT = 16


in Exiting Event des Feldes:
Code
	Dim ws As New notesuiworkspace
	Dim Keys(255) As Byte
	
	GetKeyboardState(Keys)
	If keys(VK_SHIFT)>127 Then
		ws.CurrentDocument.GotoField("<FELDNAME>")
	End If


Es funktioniert zwar, aber eigentlich mag ich solche Sachen nicht so besonders. Es schränkt die Verwendbarkeit auf Windowsclients ein.

Welche Codes für welche Tasten findest du hier  http://msdn.microsoft.com/en-us/library/ms645540(VS.85).aspx (http://msdn.microsoft.com/en-us/library/ms645540(VS.85).aspx)
Titel: Re: Shortcut zu Bestimmten Feld
Beitrag von: Klaas am 20.08.10 - 14:25:45
Cool,
Danke Grischu,

mit Shift Funktioniert das jetz auch.
Leider Brauche ich aber eine andere Taste. VK_F2

Code
Const VK_F2 = 16	
	Dim ws As New notesuiworkspace
	Dim Keys(255) As Byte
	
	GetKeyboardState(Keys)
	If keys(VK_F2)>113 Then
		ws.CurrentDocument.GotoField("CalcLeistungsNr")
	End If
Ich habe auch 0x71 von Binär in Dezimal umgerechnet aber das brachte auch nichts.
Wo liegt der Fehler
Titel: Re: Shortcut zu Bestimmten Feld
Beitrag von: Grischu am 20.08.10 - 14:29:37
so

Code
Const VK_F2 = 113
	Dim ws As New notesuiworkspace
	Dim Keys(255) As Byte
	
	GetKeyboardState(Keys)
	If keys(VK_F2)>127 Then
		ws.CurrentDocument.GotoField("CalcLeistungsNr")
	End If


wenn die Taste gedrückt ist wird Bit 8 gesetzt welches denn Wert 128 hat


/edit

"If keys(VK_F2)>128 Then"  war falsch von mir muss  "If keys(VK_F2)>127 Then" sein !
Titel: Re: Shortcut zu Bestimmten Feld
Beitrag von: Mirko am 20.08.10 - 14:50:30
Hallo Klaas,
ich habe den Sinn noch nicht ganz begriffen;-( Wenn einer aus dem Feld "Fegen" schon wegspringt, dann gibt er doch bei "Rauchen" nichts mehr ein. Ist das Absicht? Dann würde es doch mit einem Feld für die Minuten und einem Listenfeld für die Tätigkeit gehen.
Aber mal nebenbei: wollen Eure Nutzer nicht mit der Maus arbeiten ? Das wäre ja der unkomplizierteste Weg.

Viele Grüße
Mirko
Titel: Re: Shortcut zu Bestimmten Feld
Beitrag von: Klaas am 20.08.10 - 15:00:01
also das ganze stammt aus eine prämienlohnabrechnung.
als backround ich arbeite in einer großwäscherrei und nicht an jedem arbeitsplatz gibt es einen pc.
eine dame bekommt also zettel da steht drauf personalnummer arbeitsbegin und so weiter.
das heist die hackert dann eine halbe stunde jeden tag nur die zettel ein.
und damit sie nicht bei jedem nichtraucher das feld raucher überspringen muss wollte ich die möglichkeit schaffen einen shortcut zu nuten um gleich in das leistung zu kommen.
denn es ist total unterschiedlich welche der oberen felder für den aktuellen tag gebraucht werden oder nicht.
Titel: Re: Shortcut zu Bestimmten Feld
Beitrag von: Mirko am 20.08.10 - 15:09:50
Dann bliebe noch die Möglichkeit einer Aktion in der Aktionsleiste der Maske. Diese kann man mit der "Alt"-Taste und einer Ziffer anspringen.

Viele Grüße
Mirko
Titel: Re: Shortcut zu Bestimmten Feld
Beitrag von: Klaas am 24.08.10 - 09:34:25
Hallo @All,

danke für eure Antworten.

Ich habe das Sqript von Grischu ausprobiert. Leider war es nicht so Altags Tauglich wie ich gedacht hätte.
Dann habe ich die Lösung mit der Aktionsleiste Probiert. Das geht erstaunlich gut. Mal sehen wie es die User finden.
Titel: Re: Shortcut zu Bestimmten Feld
Beitrag von: Demian am 24.08.10 - 09:36:56
Moin,

also grundsätzlich versuche ich auch immer den Usern soviel Komfort zu ermöglichen, wie es in meiner Macht steht, aber wo ist der Unterschied, ob jemand ALT + Taste drückt oder 2-3 mal die Tab-Taste?
Titel: Re: Shortcut zu Bestimmten Feld
Beitrag von: Axel am 24.08.10 - 10:22:04
... und was machst du, respektive die Dame, wenn jemand gefegt und geraucht hat? Oder gibt's da nur fegende Nichtraucher oder rauchende Nichtfeger?   >:D

Ich bin der Ansicht, das es für die eingebende Dame einfacher ist entsprechend oft die TAB-Taste zu drücken (weil Windows - konformer) als irgendeine Tastenkombination wo man sich unter Umständen die Finger bricht.

Axel
 
Titel: Re: Shortcut zu Bestimmten Feld
Beitrag von: Klaas am 24.08.10 - 10:34:09
Fegen und Rauchen geht auch. Die Aktionen in der Aktionsleiste funktionieren ja mit
ALT +1 = nächsten Feld = Tab
ALT +2 = zur Leistung
ALT +3 = Aktuelles Doc speichern, neues Doc öfnen.
Momentan gebe ich diese Daten in die Datenbank ein...und ich finde das eigentlich ganz komfortabel.
Mit der Linken Hand ALT+ Zahl.
Mit der Rechten Hand Nummblock.
Und wer will kann ja trotzdem die Maus benutzen.