Discussion:
Pfeiltasten / Endlosformular
(zu alt für eine Antwort)
Urs Meyer
2007-09-29 14:31:36 UTC
Permalink
Hallo Leute

In einem Endlosformular möchte ich den Datensatzzeiger bewegen, ohne dass
mit der Maus ein Feld im Detailbereich aktiviert wird. Der Fokus befindet
sich meistens im Formularkopf, die Anwendung soll nur über die Tastatur
bedient werden können. Mittels DoCmd.MoveNext im KeyUp-Ereignis lässt sich
dies realiseren, allerdings gibts dann ein Problem, wenn der Fokus im
Detailbereich steht (was auch möglich sein muss). Dann springt der
Datenzeiger logischerweise auch 2 Schritte vor- oder zurück.

Wenn der Datensatzzeiger mit der Maus aktiviert wird, wird kein
Click-Ereignis ausgelöst. Trotz intensiver Recherge konnte ich keinen Ansatz
dafür finden, wie man die doppelten Sprünge unterbinden oder den
Datensatzzeiger anders bewegen kann.

Hat jemand eine Idee?

Gruss Urs
Peter Doering
2007-09-29 14:44:29 UTC
Permalink
Hallo,
Post by Urs Meyer
In einem Endlosformular möchte ich den Datensatzzeiger bewegen, ohne dass
mit der Maus ein Feld im Detailbereich aktiviert wird. Der Fokus befindet
sich meistens im Formularkopf, die Anwendung soll nur über die Tastatur
bedient werden können. Mittels DoCmd.MoveNext im KeyUp-Ereignis lässt sich
dies realiseren, allerdings gibts dann ein Problem, wenn der Fokus im
Detailbereich steht (was auch möglich sein muss). Dann springt der
Datenzeiger logischerweise auch 2 Schritte vor- oder zurück.
Wenn der Datensatzzeiger mit der Maus aktiviert wird, wird kein
Click-Ereignis ausgelöst. Trotz intensiver Recherge konnte ich keinen Ansatz
dafür finden, wie man die doppelten Sprünge unterbinden oder den
Datensatzzeiger anders bewegen kann.
www.donkarl.com?FAQ4.10

Das funktioniert auch, wenn sich der Fokus im Kopf befindet. Und
wahrscheinlich fehlt dir KeyCode=0. Das verhindert den doppelten
Zeilenvorschub.

Gruss - Peter
--
Ich beantworte keine Fragen per Email.
Mitglied im http://www.dbdev.org
FAQ: http://www.donkarl.com
Urs Meyer
2007-09-30 10:48:49 UTC
Permalink
Hallo Peter
Post by Peter Doering
wahrscheinlich fehlt dir KeyCode=0. Das verhindert den doppelten
Zeilenvorschub.
Mensch bin ich doof.... ist ja logisch. Habe zwar den KeyCode bei anderen
Tastencodes auf 0 gesetzt, hier aber aus nicht. Und wegen sowas Stunden
verbraten...

Vielen Dank
Urs

Urs Meyer
2007-09-29 14:42:03 UTC
Permalink
UUps.. Falsche Aussage: Das Endlosformular ist ein Unterformular und der
Cursor steht meist im übergeordneten, also nicht im Formularkopf.

Urs
Peter Doering
2007-09-29 15:49:43 UTC
Permalink
Hallo,
Post by Urs Meyer
UUps.. Falsche Aussage: Das Endlosformular ist ein Unterformular und der
Cursor steht meist im übergeordneten, also nicht im Formularkopf.
Ok, das ist was anderes. Du kannst aber trotzdem mit dem Ansatz aus FAQ
4.10 arbeiten, musst allerdings vorher den Fokus auf das UFo legen:

Select Case KeyCode
Case vbKeyDown
Me!DeinSubForm.SetFocus
KeyCode = 0
DoCmd.GoToRecord , , acNext
Case vbKeyUp
Me!fA.SetFocus
KeyCode = 0
DoCmd.GoToRecord , , acPrevious
End Select

Wenn du wieder ins HF zurueckspringen willst, muesstest du nach GoToRecord
jeweils wieder Me.SetFocus setzen.

Gruss - Peter
--
Ich beantworte keine Fragen per Email.
Mitglied im http://www.dbdev.org
FAQ: http://www.donkarl.com
Loading...