vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: Access   |   VB-Versionen: VBA23.12.02
ACCESS 2000 (beliebige) Tasten sperren

Verbotene Tasten (-Kombinationen) 1x eintragen, Einzelne Controls oder/und GANZES Formular

Autor:   Richard MittelstädtBewertung:     [ Jetzt bewerten ]Views:  30.035 
ohne HomepageSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11kein Beispielprojekt 

"Fast alle" Tastenkombinationen können abgeblockt werden.

Das Modul hat 2 Funktionen:

  1. Enzelnes Control für Tasten und Tasten-Kombinationen sperren
  2. Alle Controls eines Formulars für Tasten und Tasten-Kombinationen sperren

Alle Tasten bzw-Tastenkombinationen müssen nur 1x im Modul angegeben werden. Die zu sperrenden Tasten werden dann in einem globalen Datenfeld Key_ARRAY2 beim 1. Tastendruck gespeichert. Eine ausreichende Feldgröße muss dimensioniert werden (1 Eintrag), falls noch mehr als 20 Tasten gesperrt werden sollen.

Im folgenden Code steht alles Wichtige jeweils am Anfang der Funktionen !!!!!!
Genauso sollen Eigenschaften, Sub's und FunktionsParameter gesetzt werden.

Das KeyDown-Ereignis des Formulars beachten, falls schon verwendet... uuu.
Modul funktioniert bei mir, z.B. Ctrl+F4, F12 ... ,
Ist etwas aufwendig, aber geht.

Falls für andere Formulare oder Controls andere Tasten blockiert werden sollen, müssen die globalen Konstanten usw. mit Endung ..2 versehen werden.
Man kann also auf 3 ... erweitern. Na ja , nich übertreiben.., Was Besseres wäre besser.

Option Compare Database
Option Explicit
 
Global KeyCode2 As Integer        ' KeyCode kann hiermit jetzt global verarbeitet werden!
Global Shift2 As Integer          ' Shift (Shift-, Ctrl- und Alt-Taste)
Global K_ARRAY2(20, 1) As Integer ' Feld für zu sperrende Keys (Dimension ggf. anpassen!)
Global K_ARRAY2_OK As Boolean     ' Merker für Feld
 
Public Function TastenAbblocken()
' ***** Abblocken von Tasten Für EINZELNE  Steuerelemte: !!! ******
' * - Im EigenschaftsFenster des Steuerelementes :
' *      TasteAb        (.OnKeyDown)  auf  "=TastenAbblocken()"
' *   Im EigenschaftsFenster des Formulars :
' *      Tastenvorschau (.KeyPreview) auf  "Ja"
' *      TasteAb        (.OnKeyDown)  auf  "[Ereignisprozedur]" mit:
' *                KeyCode2 = KeyCode
' *                Shift2 = Shift
' *                Call TastenAbblocken
' *
' * oder besser! :
' * - In Ereignisprozedur (_Sub...KeyDown) des Steuerelementes :
' *                KeyCode2 = KeyCode
' *                Shift2 = Shift
' *                Call TastenAbblocken
' *****************************************************************
 
  If Not K_ARRAY2_OK  Then
    ' nur, wenn globales Key-Array noch nicht gefüllt!
    Dim i As Long
    On Error GoTo ErrHandler
 
    ' Hier im Feld für abzublockende Keys "K_ARRAY2" die vbKonstanten eintragen!!
    ' K_ARRAY2(1, 0) = vbKeyF1  ' Hilfe kann bleiben...
    K_ARRAY2(2, 0) = vbKeyF2    ' Objekt umbenennen
    K_ARRAY2(3, 0) = vbKeyF3
    ' K_ARRAY2(4, 0) = vbKeyF4  ' Kombifeld DropDown
    K_ARRAY2(5, 0) = vbKeyF5    ' Aktualisieren des Datenbankfensters
    K_ARRAY2(6, 0) = vbKeyF6
    K_ARRAY2(7, 0) = vbKeyF7    ' Rechtschreibprüfung
    K_ARRAY2(8, 0) = vbKeyF8
    ' K_ARRAY2(9, 0) = vbKeyF9  ' F9 ist und bleibt für Aktualisierungen
    K_ARRAY2(10, 0) = vbKeyF10  ' Aktivieren Menüleiste
    K_ARRAY2(11, 0) = vbKeyF11  ' DatenbankFenster in Vordergrund (->Extras, Start,Weitere)
    K_ARRAY2(12, 0) = vbKeyF12  ' Objekt speichern ..  !!!!!
 
    K_ARRAY2(13, 0) = vbKeyF4   ' STRG F4  geöffnetes Fenster schliessen !
    K_ARRAY2(13, 1) = acCtrlMask
 
    K_ARRAY2(14, 0) = vbKeyF6   ' STRG F6 Wechseln zwischen geöffneten Fenstern
    K_ARRAY2(14, 1) = acCtrlMask
 
    K_ARRAY2(15, 0) = vbKeyF11  ' STRG F11 Benutzerdefinierte <-> eingebaute Menüleiste
    K_ARRAY2(15, 1) = acCtrlMask
 
    K_ARRAY2(16, 0) = vbKeySpace ' ALT LEERTASTE  'Zum Anzeigen des Systemmenüs
    K_ARRAY2(16, 1) = acAltMask
 
    K_ARRAY2(17, 0) = vbKeyF4    ' ALT F4  'ACCESS schliessen !
    K_ARRAY2(17, 1) = acAltMask
 
    K_ARRAY2_OK = True      ' Merken: globales Key-Array wurde bereits gefüllt!
  End If
 
  For i = 0 To UBound(K_ARRAY2, 1)
    If K_ARRAY2(i, 0) = KeyCode2 And K_ARRAY2(i, 1) = Shift2 Then
      ' MsgBox K_ARRAY2(i, 0) & "....." & K_ARRAY2(i, 1)
      DoCmd.CancelEvent
    End If
  Next i
  Exit Function
 
ErrHandler:
  MsgBox Err.Number & "   " & Err.Description
End Function
Public Function TastenAbblockenAutoAll(frm1, DO_IT)
' *************** Abblocken von Tasten Für ein GANZES Formular !!! *********
' * - Diese Funktion sollte beim Laden des Formulars aufgerufen werden: 
' *        Call TastenAbblockenAutoAll(Me, True)                        
' *   DO_IT True/False aktiviert/deaktiviert das Abblocken              
' *                                                                     
' * - Ausserdem TasteAb-Ereignis des Formulars :                        
' *    Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)   
' *    'KeyCode2 = KeyCode                                              
' *    'Shift2 = Shift                                                  
' *    'Call TastenAbblocken                                            
' *                                                                     
' * - Controls, die bereits ein KeyDown-Ereignis eingetragen haben:     
' * - Zusätzlich in _Sub...KeyDown des Steuerelementes :                
' *                KeyCode2 = KeyCode                                   
' *                Shift2 = Shift                                       
' *                Call TastenAbblocken                                 
' **************************************************************************
 
  Dim ctl1 As Control
 
  frm1.KeyPreview = DO_IT          ' Tastenvorschau für's Formular !
  If DO_IT = True Then
    ' frm1.OnKeyDown = "[Ereignisprozedur]" ' Prozedur aktivieren deutsch
    frm1.OnKeyDown = "[Event Procedure]"    ' Prozedur aktivieren englisch 2005-03-07 Rimi
  Else
    frm1.OnKeyDown = ""                     ' Prozedur deaktivieren
  End If
 
  On Error Resume Next    ' zB. Bezeichnungsfelder uebergehen
  For Each ctl1 In frm1.Controls
    If ctl1.Enabled Then
      If DO_IT = True Then
        If ctl1.OnKeyDown = "" Then     ' nur leere Einträge ändern !
          ctl1.OnKeyDown = "=TastenAbblocken()"
        End If
      Else
        If ctl1.OnKeyDown = "=TastenAbblocken()" Then   ' nur eigene Eintraege ändern !
          ctl1.OnKeyDown = ""
        End If
      End If
    End If
  Next ctl1
  On Error GoTo 0 ' Fehlerbehandlung wieder abschalten
End Function
' ********** Liste von vbKey's (nur Kommentare) ***********************
' Konstante Wert Beschreibung
' vbKeyLButton 0x1 Linke Maustaste
' vbKeyRButton 0x2 Rechte Maustaste
' vbKeyCancel 0x3 ABBRECHEN-TASTE
' vbKeyMButton 0x4 Mittlere Maustaste
' vbKeyBack 0x8 RÜCKTASTE
' vbKeyTab 0x9 TAB-TASTE
' vbKeyClear 0xC ENTF-TASTE
' vbKeyReturn 0xD EINGABETASTE
' vbKeyShift 0x10 UMSCHALTTASTE
' vbKeyControl 0x11 STRG-TASTE
' vbKeyMenu 0x12 MENÜTASTE
' vbKeyPause 0x13 PAUSE-TASTE
' vbKeyCapital 0x14 FESTSTELLTASTE
' vbKeyEscape 0x1B ESC-TASTE
' vbKeySpace 0x20 LEERTASTE
' vbKeyPageUp 0x21 BILD-AUF-TASTE
' vbKeyPageDown 0x22 BILD-AB-TASTE
' vbKeyEnd 0x23 ENDE-TASTE
' vbKeyHome 0x24 POS1-TASTE
' vbKeyLeft 0x25 NACH-LINKS-TASTE
' vbKeyUp 0x26 NACH-OBEN-TASTE
' vbKeyRight 0x27 NACH-RECHTS-TASTE
' vbKeyDown 0x28 NACH-UNTEN-TASTE
' vbKeySelect 0x29 AUSWAHLTASTE
' vbKeyPrint 0x2A DRUCK
' vbKeyExecute 0x2B AUSFÜHREN-TASTE
' vbKeySnapshot 0x2C SNAPSHOT-TASTE
' vbKeyInsert 0x2D EINFG-TASTE
' vbKeyDelete 0x2E LÖSCHEN-TASTE
' vbKeyHelp 0x2F HILFETASTE
' vbKeyNumlock 0x90 NUM-TASTE
' 
' Die Tasten A bis Z entsprechen den ASCII-Zeichen A - Z:
' Konstante Wert Beschreibung
' vbKeyA 65 A-TASTE
' vbKeyB 66 B-TASTE
' vbKeyC 67 C-TASTE
' vbKeyD 68 D-TASTE
' vbKeyE 69 E-TASTE
' vbKeyF 70 F-TASTE
' vbKeyG 71 G-TASTE
' vbKeyH 72 H-TASTE
' vbKeyI 73 I-TASTE
' vbKeyJ 74 J-TASTE
' vbKeyK 75 K-TASTE
' vbKeyL 76 L-TASTE
' vbKeyM 77 M-TASTE
' vbKeyN 78 N-TASTE
' vbKeyO 79 O-TASTE
' vbKeyP 80 P-TASTE
' vbKeyQ 81 Q-TASTE
' vbKeyR 82 R-TASTE
' vbKeyS 83 S-TASTE
' vbKeyT 84 T-TASTE
' vbKeyU 85 U-TASTE
' vbKeyV 86 V-TASTE
' vbKeyW 87 W-TASTE
' vbKeyX 88 X-TASTE
' vbKeyY 89 Y-TASTE
' vbKeyZ 90 Z-TASTE
' 
' Die Tasten 0 bis 9 entsprechen den ASCII-Zeichen 0 - 9:
' Konstante Wert Beschreibung
' vbKey0 48 0-TASTE
' vbKey1 49 1-TASTE
' vbKey2 50 2-TASTE
' vbKey3 51 3-TASTE
' vbKey4 52 4-TASTE
' vbKey5 53 5-TASTE
' vbKey6 54 6-TASTE
' vbKey7 55 7-TASTE
' vbKey8 56 8-TASTE
' vbKey9 57 9-TASTE
' 
' Die folgenden Kontanten repräsentieren die Zahlen auf der Zehnertastatur:
' Konstante Wert Beschreibung
' vbKeyNumpad0 0x60 0-TASTE
' vbKeyNumpad1 0x61 1-TASTE
' vbKeyNumpad2 0x62 2-TASTE
' vbKeyNumpad3 0x63 3-TASTE
' vbKeyNumpad4 0x64 4-TASTE
' vbKeyNumpad5 0x65 5-TASTE
' vbKeyNumpad6 0x66 6-TASTE
' vbKeyNumpad7 0x67 7-TASTE
' vbKeyNumpad8 0x68 8-TASTE
' vbKeyNumpad9 0x69 9-TASTE
' vbKeyMultiply 0x6A MULTIPLIKATIONSZEICHEN-TASTE (*)
' vbKeyAdd 0x6B PLUSZEICHEN-TASTE (+)
' vbKeySeparator 0x6C EINGABETASTE
' vbKeySubtract 0x6D MINUSZEICHEN-TASTE (-)
' vbKeyDecimal 0x6E DEZIMALPUNKT-TASTE (.)
' vbKeyDivide 0x6F DIVISIONSZEICHEN-TASTE (/)
' 
' Die folgenden Konstanten repräsentieren die Funktionstasten:
' Konstante Wert Beschreibung
' vbKeyF1 0x70 F1-TASTE
' vbKeyF2 0x71 F2-TASTE
' vbKeyF3 0x72 F3-TASTE
' vbKeyF4 0x73 F4-TASTE
' vbKeyF5 0x74 F5-TASTE
' vbKeyF6 0x75 F6-TASTE
' vbKeyF7 0x76 F7-TASTE
' vbKeyF8 0x77 F8-TASTE
' vbKeyF9 0x78 F9-TASTE
' vbKeyF10 0x79 F10-TASTE
' vbKeyF11 0x7A F11-TASTE
' vbKeyF12 0x7B F12-TASTE
' vbKeyF13 0x7C F13-TASTE
' vbKeyF14 0x7D F14-TASTE
' vbKeyF15 0x7E F15-TASTE
' vbKeyF16 0x7F F16-TASTE

Dieser Tipp wurde bereits 30.035 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel