ABOUT Visual Basic Programmieren Programmierung Download Downloads Tips & Tricks Tipps & Tricks Know-How Praxis VB VBA Visual Basic for Applications VBS VBScript Scripting Windows ActiveX COM OLE API ComputerPC Microsoft Office Microsoft Office 97 Office 2000 Access Word Winword Excel Outlook Addins ASP Active Server Pages COMAddIns ActiveX-Controls OCX UserControl UserDocument Komponenten DLL EXE
Diese Seite wurde zuletzt aktualisiert am 07.05.2001

Diese Seite wurde zuletzt aktualisiert am 07.05.2001
Aktuell im ABOUT Visual Basic-MagazinGrundlagenwissen und TechnologienKnow How, Tipps und Tricks rund um Visual BasicActiveX-Komponenten, Controls, Klassen und mehr...AddIns für die Visual Basic-IDE und die VBA-IDEVBA-Programmierung in MS-Office und anderen AnwendungenScripting-Praxis für den Windows Scripting Host und das Scripting-ControlTools, Komponenten und Dienstleistungen des MarktesRessourcen für Programmierer (Bücher, Job-Börse)Dies&Das...

Themen und Stichwörter im ABOUT Visual Basic-Magazin
Code, Beispiele, Komponenten, Tools im Überblick, Shareware, Freeware
Ihre Service-Seite, Termine, Job-Börse
Melden Sie sich an, um in den vollen Genuss des ABOUT Visual Basic-Magazins zu kommen!
Informationen zum ABOUT Visual Basic-Magazin, Kontakt und Impressum

Zurück...

Punkt statt Komma

Zurück...


Anzeige

(-hg) mailto:hg_decimaldot@aboutvb.de

Normalerweise können Sie den Effekt eines Tastendruckes ändern, indem Sie im KeyDown-Ereignis den Wert des übergebenen Parameters KeyCode manipulieren. Sie können den Wert 0 zurückgeben, um den Tastendruck gewissermaßen zu "schlucken". Oder Sie geben einen anderen möglichen Wert zurück, etwa die KeyCode des Cursortasten und ähnliche - solange der KeyCode nicht ein darstellbares Zeichen betrifft. Die Codes dieser Zeichen können Sie dagegen im KeyPress-Ereignis manipulieren, indem Sie dort einen geänderten Zeichen-Code (KeyAscii) zurückgeben.

Für die meisten Tasten werden in beiden Ereignissen eindeutige Codes angeliefert (siehe auch die gegenüber den vorhandenen VB-Konstanten erweiterten Codes in Gedrückte Tasten"Gedrückte Tasten"). Eine Ausnahme bilden jedoch die Tasten des Nummernblocks. Für diese werden im KeyDown-Ereignis andere KeyCodes übergeben, als für die Tasten im Hauptteil der Tastatur, während im KeyPress-Ereignis die Herkunft des Zeichen-Codes anhand des übergebenen KeyAscii-Wertes nicht mehr unterscheidbar ist.

In der Regel reicht auch die Unterscheidungsmöglichkeit im KeyDown-Ereignis, weil letztlich das gewünschte Zeichen in jedem Fall erscheinen soll. Falls Sie jedoch eines dieser Zeichen abhängig von seiner Herkunft manipulieren wollen, etwa das Komma als Dezimaltrennzeichen im Nummernblock des deutschen Tastatur-Layouts gegen einen "echten" Dezimalpunkt vertauschen wollen, müssen Sie die Unterscheidung im KeyDown-Ereignis und die Ersetzung im KeyPress-Ereignis vornehmen (Denn das Komma als normales Satzzeichen soll ja wohl weiterhin eingeben werden können, und nicht ebenfalls als Punkt erscheinen). Sie brauchen lediglich das Ergebnis der Unterscheidung im KeyDown-Ereignis ins KeyPress-Ereignis hinüber zu retten.

Dazu dient eine im gleichen Modul deklarierte Hilfsvariable (Datentyp Boolean) mit modulweitem Gültigkeitsbereich. Wird im KeyDown-Ereignis der KeyCode der Dezimalzeichen-Taste des Nummernblocks (Konstante vbKeyDecimal = 110) übergeben, wird diese Hilfsvariable (mDecimal) auf True gesetzt. Wird der KeyCode des gewöhnlichen Kommas (deutsches Tastatur-Layout: 188) übergeben, bleibt der sicherheitshalber zu Beginn der Ereignisprozedur auf False gesetzte Wert von mDecimal weiterhin False. Ein Beispiel für die Eingabe in einer TextBox:

Private mDecimal As Boolean

Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
  mDecimal = False
  Select Case KeyCode
    Case vbKeyDecimal
      If Shift = 0 Then
        mDecimal = True
      End If
    ' ...
  End Select
End Sub

Im KeyPress-Ereignis wird in beiden Fällen als Zeichen-Code der Wert 44 eintreffen, der Standard-Ascii-Code des Kommas. Hier können Sie nun, falls im KeyDown-Ereignis mDecimal auf True gesetzt worden ist, den Wert 46 für den Punkt zurückgeben.

Private Sub Text1_KeyPress(KeyAscii As Integer)
  Select Case KeyAscii
    Case 44
      If mDecimal Then
        KeyAscii = 46
      End If
  End Select
End Sub

Artikel
Mail an den Autor dieses Artikels

KnowHow
Zur KnowHow-Übersicht

KnowHow-Themen
Themen - Allgemeines
Themen - Entwicklungsumgebung (VB-IDE)
Themen - Forms
Themen - Steuerelemente (Controls)
Themen - Grafik
Themen - Dateien
Themen - UserControls
Themen - Einsteiger-Tipps
Themen - Wussten Sie...?

Übersicht nach Titeln in alphabetischer Reihenfolge
Übersicht nach Erscheinungsdatum

Schnellsuche




Zum Seitenanfang

Copyright © 1999 - 2017 Harald M. Genauck, ip-pro gmbh  /  Impressum

Zum Seitenanfang

Zurück...

Zurück...

Download Internet Explorer