Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Zahleneingabe auf Touchscreen mit Numpad in Formular

Begonnen von berndi, Januar 05, 2015, 18:44:35

⏪ vorheriges - nächstes ⏩

berndi

Hallo Zusammen,
ich habe ein Win 8 Tablett und möchte in einem Formular zahlen erfassen. Da ich das mit dicken Fingern  >:( machen muss, dachte ich, dass ich einfach 10 Schaltflächen einbaue und via Sendkey die Zahlen in mein Textfeld übertrage.
Pustekuchen!
Das Textfeld verliert natürlich den Fokus und deshalb landet die Zahl vermutlich im Nirwana. Da ich schon seit Jahren nicht mehr programmiert habe und von Access 2003 auf 2013 umgestiegen bin, bin ich ganz schön überfordert. Alles ist neu ;O(

vielleicht kann mir ja jemand einen Tipp geben.

viele Grüße

Bernd

MzKlMu

Hallo,
Sendkey ist hier völlig fehl am Platz und ohnehin zu vermeiden.
Nimm eine Optionsgruppe zur Darstellung der Buttons und übergebe die Werte per VBA an das Eingabefeld.

Im Anhang ein einfaches Beispiel.
Das sollte noch um eine Rücktaste und eine Löschfunktion erweitert werden, wegen Fehleingaben.
Gruß Klaus

berndi

#2
Hallo Klaus,
es hat ein wenig gedauert, bis ich verstanden habe, wie es funktioniert, aber es ist eine klasse Lösung.
Jetzt hätte ich nur noch eine Frage: Ich möchte mit diesem NumPad verschiedene Textfelder füllen können, je nachdem in welchem der Curser stand bevor er eine Nummer gedrückt hat. (Halt wie eine richtige Tastatur) wie löst man das elegant?

Ein anderes Problem ist aufgetaucht. Ich kann jede Taste nur einmal hintereinander betätigen. Das tritt sowohl beim Ereignis "nach Aktualisierung" als auch "beim Klicken" auf. D.h. ich kann keine Zahl "111" tippen.
Anwas kann denn sowas liegen?

Vielen Dank bis dahin ;O)

Bernd

database

Hallo,

zu mehren Textfeldern:
Ändere MzKlMu's Beispiel wie folgt ab.

Benenne das vorhanden Textfeld um in Textfeld1 und lege ein weiteres Feld an mit dem Namen Textfeld2
Dann ändere den Code im Beispiel wie folgt ab

Option Compare Database
Option Explicit

Public Feldname As String

Private Sub Form_Open(Cancel As Integer)
    Me.Rahmen0 = Null
    Feldname = "Textfeld1"
End Sub

Private Sub Rahmen0_AfterUpdate()
    Me.Controls(Feldname) = Me.Controls(Feldname) & Me.Rahmen0
    Me.Rahmen0 = Null
End Sub

Private Sub Textfeld1_GotFocus()

    Feldname = "Textfeld1"

End Sub

Private Sub Textfeld2_GotFocus()

    Feldname = "Textfeld2"

End Sub


Zum anderen Problem kann ich nichts sagen, ich kenne deinen Code nicht - im Beispiel von Klaus funktioniert's einwandfrei.

p.s. das geänderte Beispiel ist im Anhang