Rubrik: Datum/Zeit und Timer · Datums- und Zeitfunktionen | VB-Versionen: VB5, VB6 | 04.09.03 |
Datumseingaben auf Plausibilität prüfen II Datum auf Plausibilität prüfen und im richtigen (System-)Format ausgeben | ||
Autor: Dieter Otter | Bewertung: | Views: 13.971 |
www.tools4vb.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Mag sein, dass der erste Tipp zum prüfen eines Datums etwas flexibler ist (siehe Datumseingaben auf Plausibilität prüfen), aber einfacher gehts mit IsDate. Auch hier ist es dem Anwender möglich das Datum vereinfacht einzugeben (solange er sich auch an seine selbst definierten Einstellungen hält).
Ausserdem sollte man doch nicht so star auf DD.MM.YYYY beharren. Was macht es denn für einen Sinn, wenn man das gewünschte Datumsformat in Windows einstellen kann und irgendwelche "Hardcore"-Programmierer machen es so wie sie wollen (und nicht der Anwender)?
' Benötigte Deklarationen Private Declare Function GetLocaleInfo Lib "kernel32" _ Alias "GetLocaleInfoA" ( _ ByVal Locale As Long, _ ByVal LCType As Long, _ ByVal lpLCData As String, _ ByVal cchData As Long) As Long
' Datumsformat ermitteln Public Function GetShortDateFormat() As String Const LOCALE_SYSTEM_DEFAULT As Long = &H800 Const InfoID As Long = &H1F Dim lngRet As Long Dim strBuffer As String Dim lngLocale As Long lngRet = GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, InfoID, _ vbNullString, 0) If lngRet > 0 Then strBuffer = String$(lngRet, 0) If GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, InfoID, _ strBuffer, Len(strBuffer)) Then If InStr(strBuffer, vbNullChar) Then GetShortDateFormat = Left$(strBuffer, _ InStr(strBuffer, vbNullChar)) Else GetShortDateFormat = strBuffer End If End If End If End Function
Und so könnte das dann z.B. beim Verlassen eines Eingabefeldes (LostFocus) aussehen:
Private Sub Text1_LostFocus() If IsDate(Text1.Text) Then Text1.Text = Format(Text1.Text, GetShortDateFormat()) End If End Sub