Functietoetsen (F1 - F12) Programmeren

Status
Niet open voor verdere reacties.

Nickdude

Gebruiker
Lid geworden
2 dec 2004
Berichten
88
Beste lotgenoten,

Ik ben al een tijdje bezig, maar kom hier niet uit.

Wat ik wil; In MS Access 2003 per form de functietoetsen (F1 t/m F12) kunnen programmeren. Ik weet dat het mogelijk is om een macro te maken onder de naam autokeys, maar dan kan ik een std. functie invoeren, maar ik wil per form de toets een andere functie geven.

Wanneer ik een macro maak onder de naam autokeys en ik vul geen functie in en voer in het form een functie in onder "KeyDown" dan werkt deze niet meer dankzij de autokeys macro.

Wanneer ik enkel de KeyDown gebruik, werkt dat wel, maar wordt ook de std. functie in access nog gedaan (bijv. de spellingscontrole).

Hopelijk heeft een van jullie hier een oplossing voor!!!
 
Zo iets?

Code:
Private Sub TekstVak_KeyDown(KeyCode As Integer, Shift As Integer)
    Select Case KeyCode
  
         Case vbKeyF3
         KeyCode = 0
         MsgBox "F3 ingedrukt.."
  
         Case vbKeyF4
         KeyCode = 0
         MsgBox "F4 ingedrukt.."
  
         Case vbKeyF5
         KeyCode = 0
         MsgBox "F5 ingedrukt.."
  
    End Select
 End Sub

Waar het om gaat is de code KeyCode=0. Hiermee schakel je de oorspronkelijke functie van de toets uit. Dit voorbeeld is een Keydown op een tekstvak, maar uiteraard op andere objecten toe te passen.
 
Wat ik wil; In MS Access 2003 per form de functietoetsen (F1 t/m F12) kunnen programmeren
Als je op formulierniveau de functietoetsen wilt 'afvangen' dan moet je:
* bij de gebeurtenissen van het formulier "toets voorbeeld" (Key Preview) op Ja zetten
* en bij Form_KeyDown, een code zoals in de vorige bijdrage staat
 
Dan krijg je zo'n constructie:

Private Sub Form_Load()
Me.KeyPreview = True
End Sub

Code:
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    Select Case KeyCode
        Case vbKeyF2
             KeyCode = 0
            ' Process F2 key events.
        Case vbKeyF3
             KeyCode = 0
            ' Process F3 key events.
        Case vbKeyF4
             KeyCode = 0
            ' Process F4 key events.
        Case Else
    End Select
End Sub
 
Helemaal top mannen! Ongelooflijk dat het leven soms zo simpel kan zijn!

Mijn dank is wederom ongelooflijk groot!
 
Was ik zo enthousiast, loopn ik tegen een ander probleem aan....

Wanneer de focus is op een subform in mijn mainform, werkt de functie met de F-toetsen niet meer. Ik denk dat wanneer de focus is op een subform, dat deze kijkt naar de keydown code van de subform.

Hoe valt dit op te lossen...?
 
Heb je de code ook op het subformulier gezet?
 
ja wanneer ik de code gebruik op het subform werkt dit gewoon, echter hoopte ik dat er een manier is om door te linken naar de keydown code op het mainform
 
En de code staat uiteraard ook op het hoofdformulier?
 
ja uiteraard heb ik de code op het hoofdform gezet. Dit alles werkt ook, totdat de focus in een subform komt (wat vervolgens dan weer een continuous form is). Op dat moment werkt de KeyDown functie van het hoofdform niet meer.
 
Misschien moet je er een algemene functie van maken, die de code zet op het actieve formulier. (Niet dat ik zo gauw weet hoe ;) ) Dus afvangen welk formulier de focus heeft, en die laten werken met de functietoetsen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan