|
Sprawdzanie czy ktoś w InputBoxie nic nie wpisał i kliknął w przycisk OK czy tylko kliknął w przycis |
|
|
|
Napisał Administrator
|
|
niedziela, 12 luty 2006 |
|
Sprawdzanie czy w InputBox nic nie wpisano i kliknięto w OK, czy kliknięto w Cancel
'Autor: marcin_an Funkcja sprawdzająca, czy użytkownik klinął na 'Cancel' czy nic nie wpisał w InputBoxie:
_______________________
Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Function InputBoxCanceled(ByRef sReturnedValue As String) As Boolean ' sReturnedValue - tutaj należy podać Stringa zwróconego przez InputBox ' ' Zwracane wartości: ' True użytkownik kliknął 'cancel' ' False użytkownik nic nie wpisał i kliknął 'ok'
Dim tmp As Long
CopyMemory tmp, sReturnedValue, 4 If tmp Then InputBoxCanceled = False Else InputBoxCanceled = True End If End Function _______________________
Zasada działania: W MSDN można przeczytać, że jeżeli użytkownik kliknie na 'Cancel', to zostanie zwrócony pusty ciąg (""). Pokrywa się to z przypadkiem, gdy użytkownik wpisze "" i kliknie 'ok'. Ale Microsoft wyraził się nieprecyzyjnie. Okazuje się bowiem, że po naciśnięciu Cancel tak naprawdę wogóle nie zwraca ciągu znaków, a jedynie wskaźnik z wartością NULL. Istnieje możliwość zapisania takiego wskaźnika poprzez stałą vbNullString, jednak VB nie daje możliwości wykorzystania tego w porównaniach. Dla niego vbNullString = "" podczas porównywania. Ta funkcja właśnie sprawdza, czy wskaźnik jest równy NUL, czy nie i w zależności od tego stwierdza co zaszło.
Aby dodać komentarz zaloguj się. Jeśli nie masz konta, załóż je sobie. Tylko zarejestrowani użytkownicy mogą pisać komentarze. Powered by AkoComment 2.0! |