online 1
gast (50)

/ Forum / Datenbanken

DatenbankenDatenbanken

Fragevon lemmy49 vom 21.10.2020, 13:28 Options

Lösung

wie deaktiviere ich im Textfeld eines Formulars die Tasteneingabe Alt + Return?

Zeilenumbruch in Access geht nur über Strg + Return (Enter), daher möchte ich obige Kombination deaktivieren, das hierbei das Eigenschaftsfenster aufgeht. Evtl. wurde schon mal eine Lösung gezeigt, leider fand ich nichts.


Antwort schreiben

Antwort 1 von Marie vom 21.10.2020, 14:47 Options

zum Beispiel bei dem Ereignis VorAktualisieren des Formulars:

If instr(Me!DeinFeld, vbcr) > 0 OR
instr(Me!DeinFeld, vblf) > 0 then
MsgBox "Zeilenumbrüche sind nicht erlaubt."
Cancel = True
Me!DeinFeld.SetFocus
End If


Gruß Marie

Antwort 2 von lemmy49 vom 21.10.2020, 14:59 Options

Hallo Marie, vielen Dank für Antwort.
Ist aber nicht das was ich meinte.

Im Feld sollte schon ein Zeilenumbruch erlaubt sein, aber die Tastenkombination Alt + Return erzeugt das Popup der Feldeigenschaft.
Ich will nur Strg + Return (Enter) erlauben.
Ansonsten soll keine Aktion erfolgen bzw. zum Testen eine Meldung.

Was ich fand ist:
If (Shift And acAltMask) > 0 Then
Msgbox "Meldung"

Aber mir fehlt noch zusätzlich Return/Enter.

Evtl. gibt es noch andere Möglichkeiten.

Danke und Gruß Dieter

Antwort 3 von lorf55 vom 22.10.2020, 11:43 OptionsLösung

Lösung
Hallo Dieter,
um für ein textfeld Alt+ENTER abzufangen, geht:
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
    Dim intAltGedr As Integer

    ' Bit-Masken einsetzen, um die gedrückte Taste zu ermitteln.
    intAltGedr = (Shift And acAltMask) > 0
    ' Per Meldung dem Benutzer mitteilen, welche Taste gedrückt wurde.
    If intAltGedr And (KeyCode = vbKeyReturn) Then MsgBox "Sie haben ALT+Return gedrückt."
End Sub


Um für das ganze Formular Alt+ENTER abzufangen, geht:
Private Sub Form_Load()
    Me.KeyPreview = True
End Sub

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    Dim intAltGedr As Integer
    ' Bit-Masken einsetzen, um die gedrückte Taste zu ermitteln.
    intAltGedr = (Shift And acAltMask) > 0
    ' Per Meldung dem Benutzer mitteilen, welche Taste gedrückt wurde.
    If intAltGedr And (KeyCode = vbKeyReturn) Then MsgBox "Sie haben ALT+Return gedrückt."
End Sub
Wichtig ist, dass über Form_Load die Tastenvorschau für das Formular eingeschaltet wird .


Allerdings wird so das Ereignis nicht aus der Messagequeue (auch nicht durch DoCmd.CancelEvent) bzw. erst durch die Msgbox entfernt. Deshalb ersetzt du die MsgBox durch:
       KeyCode = 0
       Shift = 0
Das verhindert, dass der Tastencode an andere Ereignisprozeduren weiter gegeben wird, so dass Form_KeyDown denn so aussieht:
    Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    Dim intAltGedr As Integer
    ' Bit-Masken einsetzen, um die gedrückte Taste zu ermitteln.
    intAltGedr = (Shift And acAltMask) > 0
    If intAltGedr And (KeyCode = vbKeyReturn) Then
       '   ALT+Return gedrückt
       KeyCode = 0
       Shift = 0
    End If
End Sub


Ich hoffe, du kannst damit was anfangen.
Gruß
lorf

Antwort 4 von lemmy49 vom 22.10.2020, 12:58 Options

Hallo Lorf, supiii !
Genau so muß es gehen.
Hast mir sehr geholfen, Danke.

Habe im Internet nach Lösungen gesucht und nichts gefunden, auch mein Buch über VBA Lösungen gab nichts her.

Es gibt halt doch Spezialisten; da bin ich noch ein kleines Lichtchen.

Grüße Dieter

Antwort 5 von lorf55 vom 22.10.2020, 14:57 Options

Hallo Dieter,
Danke gleichfalls, war mir eine Freude.
Ob du es mir glaubst oder nicht, es steht alles in der Hilfe drin. Allerdings musste man es sich noch zusammenreimen. Das wird einem allerdings nicht unbedingt leicht gemacht. Vielleicht sollte ich mich Reimer, Dichter oder Klempner nennen.
Schön, wenn es funktioniert. Denn können wir ja einen Haken dran machen (Lsg) und uns freuen.

Denn bis die Tage

Gruß
lorf

Ähnliche Themen

Aktuellen Datensatz eines Formulars als Textdatei ausgeben
hannes1965de  03.05.2007 - 161 Hits - 3 Antworten

bedingter Zeilenwechsel im Textfeld
mbalrog  20.08.2007 - 10 Hits - 2 Antworten

Beim schließen eines Formulars ein anderes aktualisieren
AndiS  29.02.2008 - 47 Hits - 2 Antworten

Datenbanksuche mit Textfeld
Helena123  04.04.2008 - 15 Hits - 1 Antwort

Textfeld-Eigenschaften
maxim66  20.08.2008 - 43 Hits - 7 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Mon Jan 26 01:23:17 2026