3. ročník
Validace kontrola platnosti dat kontrola povinnosti údajů kontrola rozsahu čísel kontrola e-mailové adresy, telefonního čísla nutná součást každého software zamezuje zbytečnému pádu aplikace často více validačního kódu než funkcionality
Dva způsoby validace 1. validace na úrovni formuláře celková kontrola formuláře před odesláním 2. validace na úrovni položek kontrola hodnoty položky po jejím vyplnění
validace na úrovni formuláře zadaná data se kontrolují až při potvrzení po kliknutí na OK výhoda: všechny informace jsou k dispozici možnost kontroly na základě více vyplněných položek nevýhoda: uživatel se nedozví o chybě, dokud neodešle formulář možná frustrace z chyb
Public Class Form1 ' kliknutí na tlačítko Private Sub Button_OK_Click( ) Handles Button_OK.Click End Sub If Me.IsFormValid() = True Then Me.DialogResult = Windows.Forms.DialogResult.OK Me.Close() End If ' funkce pro test validity formuláře Private Function IsFormValid() As Boolean ' validační pravidla Return True End Function End Class
Vysvětlení: po kliknutí na OK se zkontroluje formulář zavolání metody IsFormValid() v případě pozitivního výsledku: zavření standardní metodou (DialogResult & Close) metoda IsFormValid() provede validaci položek formuláře vrátí: True pokud všechny položky splňují kritéria False pokud alespoň jedna položka kritéria nesplňuje
Princip testovacích podmínek Private Function IsEmpty(str As String) As Boolean Return String.IsNullOrWhiteSpace(str) End Function nebo Private Function IsEmpty(str As String) As Boolean str = str.trim() If str = "" Then Return True Else Return False End If End Function
Private Function IsValid() As Boolean Dim valid As Boolean = True ' otestujeme, zda je hodnota v textboxu prázdná If Me.IsEmpty(Me.TextBox1.Text) = True Then ' zkazime validitu valid = False End If Return valid End Function v testovací funkci se kontrolují kritéria položek
Způsob jak oznámit chyby uživateli: MessageBox neefektivní Label množství labelů nebo jeden nepřehledný ErrorProvider speciální komponenta k oznamování chyb
nevizuální komponenta zobrazuje informaci o chybě vedle komponenty
Přidání chyby ke komponentě Me.ErrorProvider1.SetError(komponenta, "text chyby") příklad: If Me.IsEmpty(Me.TextBox_Jmeno.Text) = True Then Me.ErrorProvider1.SetError(Me.TextBox_Jmeno, "Pole nesmí být prázdné") End If Nastavený ErrorProvider
Odstranění chyby u komponenty: Me.ErrorProvider1.SetError(Me.TextBox_Jmeno, Nothing) text chyby se nastaví na hodnotu Nothing Vymazání všech chyb: Me.ErrorProvider1.Clear()
validace na úrovni položky hodnota se kontroluje při opuštění položky okamžitá kontrola výhoda: hodnota je okamžitě zkontrolována uživatel ihned víc, co je špatně nevýhoda: horší kontrola souvisejících položek
Public Class Form1 ' validace polozky Private Sub TextBox_Jmeno_Validating( ) Handles TextBox1.Validating Me.ErrorProvider1.SetError(Me.TextBox1, Nothing) If Me.IsEmpty(Me.TextBox_Jmeno.Text) = True Then Me.ErrorProvider1.SetError(Me.TextBox_Jmeno, "Hodnota nesmí být prázdná") End If End Sub ' funkce pro test prazdneho retezce Private Function IsEmpty(str As String) As Boolean Return String.IsNullOrWhiteSpace(str) End Function End Class
Vysvětlení: po opuštění položky se vyvolává metoda událost Validating v této události se provádí validace vhodné je nastavit zprávu do ErrorProvider před započetím validace nutnost odstranit starou chybovou zprávu
Opuštění nevalidní položky nastavení vlastnosti Cancel objektu události If Me.IsEmpty(Me.TextBox_Jmeno.Text) = True Then e.cancel = True Me.ErrorProvider1.SetError(Me.TextBox_Jmeno, "Pole nesmí být prázdné") End If e.cancel = true: e.cancel = false: nevalidní pole není možné opustit nevalidní pole je možné opustit