Numerieke toetsen op het scherm

Status
Niet open voor verdere reacties.

Chrisss

Gebruiker
Lid geworden
20 jan 2006
Berichten
72
Beste Accessers!
Kan een van jullie mij vertellen hoe nummerieke toetsten/knoppen in een accessformulier kan maken zodat getallen kunnen worden ingetoetst zonder gebruik te maken van een keyboard.
Dus simpelweg: knoppen die de getallen 0 t/m 9 naar een veld in een formulier brengen.
(Met waardeInstellen lukt het niet want dan overschijft deze steeds de vorige waarde en is het dus niet mogelijk om getallen van meer dan 2 cijfer in te toetsen...)

Kan dit!?
 
Ik zou dit even vragen aan onze vriend Gates. Mogelijk, denk het niet, tenzij je een functie kan schrijven die een num. keyb. matrix vervangt. Zoals je kalender sturing, maar dit gaat mij boven het petje.
 
je maakt 11 knoppen op het formulier. 10 knoppen met voor de getallen 0 t/m 9 en noem deze bijvoorbeeld n0, n1 etc. Maak ook een resetknop waarmee je het veld waarin het getal moet verschijnen leeg kan maken.

als actie bij n0 geef je als instructie

me.txtwaarde.value=me.txtwaarde.value & "0"

waarbij dan txtwaarde de naam is van je veld met het getal dat je op wil bouwen.
de resetknop bevat de instructie

me.txtwaarde=null

dit zou het moeten doen. Anders zoek eens naar een voorbeeld van een rekenmachine in visual basic of access.

succes
 
Laatst bewerkt:
Suggestie.

In Windows heb je de toepassing Calculator (Start/ Uitvoeren - typ Calc en klik OK). Denk eens aan deze toepassing, je hebt alle knoppen e.d. tot je beschikking, ook optellen, aftrekken e.d. De waarde kan je naar het veld kopieren (Ctrl+C / Ctrl+V) - of met code.

1. Maak op je Access-formulier een knop om de calculator te starten.

2. a. Schrijf een procedure in het formulier achter de gebeurtenis OnActivate. Dan test je of de calculator openstaat en zo ja of die een waarde bevat. b. Indien ja, dan haal je de waarde van de Calculator naar het actieve veld over.

Succes.
 
In Windows (zeker in XP, maar ook eerdere versies) zit voor de 'behinderde' mens een online-toetsenbord. Misschien is dat nog het meest simpel.

Zie afbeelding.
 

Bijlagen

  • OnlineToetsenbord.gif
    OnlineToetsenbord.gif
    23 KB · Weergaven: 41
Toepassing met Calculator - opzetje - wie helpt bij de afwerking?

In bijgaande toepassing vind je een formulier met 2 tekstvakken en een knop om de Calculator te starten (routine: cmdCalc_Click). Als de Calculator al open staat wordt die geactiveerd.

Om de cursor terug te zetten in het juiste tekstvak (txt) of keuzelijst (cbo) wordt de naam van het veld even opgeslagen (routine: cmdCalc_MouseMove).

De gebruiker maakt dan een rekensom of alleen een waarde in de Calculator. Als hij terugkeert op het formulier en de recordselector aanklikt, wordt de waarde in het veld gekopieerd ((routine: Form_Click). Het werkt, maar dit vind ik nog armoedig - moet beter kunnen. Iemand een idee?

Code:
--------------------------------------

Option Compare Database
Option Explicit

Dim dblRetVal As Double
Dim strFieldname As String

' -----------------------------------------------------------------------
Private Sub cmdCalc_Click()
On Error GoTo cmdCalc_Click_Err

' Activeert Calculator
AppActivate dblRetVal

cmdCalc_Click_Exit:
Exit Sub

cmdCalc_Click_Err:
Select Case Err.Number
Case 5
' Start Calculator
dblRetVal = Shell("CALC.EXE", vbNormalFocus)
Case Else
dblRetVal = 0
MsgBox Err.Description & " (" & Err.Number & ")"
Resume cmdCalc_Click_Exit
End Select

End Sub

' -----------------------------------------------------------------------
Private Sub cmdCalc_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

Dim strCtrl As String
Dim strPrefix As String

strPrefix = "txt cbo "
strCtrl = Me.ActiveControl.Name

If InStr(1, strPrefix, Left$(strCtrl, 3)) > 0 Then
strFieldname = strCtrl
Me.lblCtrlActive.Caption = strFieldname
End If

End Sub

' -----------------------------------------------------------------------
Private Sub Form_Click()
On Error GoTo Form_GotFocus_Err

If dblRetVal <> 0 Then
AppActivate dblRetVal ' Activeert Calculator
SendKeys "^C" ' Kopieert het totaal naar het Klembord
SendKeys "%{F4}", True ' Verstuurt ALT+F4 om de Rekenmachine te sluiten.
dblRetVal = 0

' Zet cursor terug in het juiste veld
Me.Controls(strFieldname).SetFocus
DoCmd.RunCommand acCmdPaste ' Kopieert het totaal in het veld
End If

Form_GotFocus_Exit:
Exit Sub

Form_GotFocus_Err:
' Calculator is niet geopend of andere fout trad op
dblRetVal = 0
Resume Form_GotFocus_Exit

End Sub

--------------------------------------
 

Bijlagen

opgelost

volgens mij zat het probleem in de regel:

Code:
me.txtwaarde.value=me.txtwaarde.value [B]&[/B] "0"

dus het samenvoegen van een string, waarbij het '&'-teken van belang is.

Dit is vrij basale kennis, dus ik vraag me af of de goede ideeen van femda-punt-com niet te hoog gegrepen zijn voor Chrisss.

Is het probleem opgelost?
 
Super bedankt voor jullie reacties! Ik ga ze gelijk checken en kijken of er iets voor me bijzit! Uiteraard laat ik gelijk weten hoe dit afloop!
Thanx!
Chris
 
YES! De oplossing van thomrob volstaat prima voor wat ik wil bereiken!
Ben ik erg blij mee!!!

Ik probeer namenlijk een 'programmaatje' in elkaar te knutselen dat dmv een touchscreen kan worden bediend. Waardoor muis en toetsenbord niet meer nodig zijn dus.
Ben ik alleen ook tegen iets anders aangekomen;
het vakje met het dropdown-pijltje van een keuzelijst met invoervak lijkt me te klein om met een vinger te bedienen. Weet iemand hier misschien iets op? Kan dit knopje groter of is er wellicht ook een commando om een keuzelijst te openen?
 
Oké, maar dat lukt niet zonder een toetsenbord...
Ik zoek verder! Bedankt!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan