"Fast alle" Tastenkombinationen können abgeblockt werden. Das Modul hat 2 Funktionen:
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 !!!!!! Das KeyDown-Ereignis des Formulars beachten, falls schon verwendet... uuu. Falls für andere Formulare oder Controls andere Tasten blockiert werden sollen, müssen die globalen Konstanten usw. mit Endung ..2 versehen werden. 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.672 mal aufgerufen.
Anzeige
![]() ![]() ![]() 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. |
sevISDN 1.0 ![]() Überwachung aller eingehender Anrufe! Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Tipp des Monats ![]() Manfred Bohn IndexOf für mehrdimensionale Arrays Die generische Funktion "IndexOf" ermittelt das erste Auftreten eines bestimmten Wertes in einem n-dimensionalen Array Neu! sevEingabe 3.0 ![]() Einfach stark! Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. |
||||||||||||||||
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. |