Maski formatowania danych¶
Do ograniczenia lub formatowania wprowadzanych danych można wykorzystać maski. W NeosExpercie definiuje się je w sekcji Walidacja we właściwościach pola modelu danych.
Maski w kliencie desktop (VCL)¶
W zależności od typu pola maska powinna mieć postać:
- maski VCL dla pól CALC,
- wyrażenia regularnego dla pól tekstowych.
Pola CALC¶
Maski dla pól CALC definiuje się w następujący sposób:
| Znak | Opis |
|---|---|
| 0 | cyfra - wypełniane zerem jeśli brak |
| # | cyfra - ignorowane jeśli brak |
| . | separator dziesiętny |
| , | separator tysięcy |
| pozostałe | znak jest wstawiany do maski |
Przykład
0.00 zł - liczba z dwoma miejscami po przecinku, uzupełnianymi zerami + ciąg zł
Uwaga!
- jeśli wpisano więcej cyfr po przecinku niż zdefiniowano w masce (np.
3.1415dla maski0.00), pole zapisze właściwą wartość, jednak wyświetli wartość zaokrągloną - jeśli liczba będzie dłuższa niż przewidziana maska (np.
1234dla maski###), pole wyświetli prawdziwą wartość (wartość nie będzie ucięta)
Pola tekstowe¶
Maskę dla pola EDIT definiuje się za pomocą wyrażenia regularnego.
Maski w kliencie WEB¶
Pola CALC¶
Klient WEB wyświetla pola typu CALC posługując się kontrolką Kendo NumericTextBox, do której maska formatująca zostanie bezpośrednio przekazana. Formatowanie NumericTextBox ma taką samą formę jak opisano wyżej.
Pola tekstowe¶
Walidacja standardowego pola tekstowego polega zwykle na sprawdzeniu zgodności ze wskazanym wyrażeniem regularnym, w pewnych prostych przypadkach natomiast możliwe jest wykorzystanie kontrolki maskowanego pola edycyjnego (MaskedTextBox). Na podstawie wyrażenia regularnego walidacji pola klient WEB automatycznie decyduje, której kontrolki użyć. Ponieważ format maski jest w tym wypadku inny, podejmowana jest próba automatycznej konwersji wyrażenia regularnego na format maski Kendo. Jeśli próba się powiedzie, zostanie utworzone pole maskowane, w przeciwnym wypadku zastosowane będzie standardowe pole tekstowe. Do konwersji wymagane jest, by liczba znaków oraz ich rodzaj były jawnie określone, pola te nadają się więc do prostych przypadków typu kod pocztowy, nr konta itp.
Ze względu na powyższe ograniczenie kontrolka MaskedTextBox zostanie użyta, jeśli wyrażenie regularne ma ograniczoną postać, to znaczy:
- liczba poszczególnych znaków jest jawnie określona, np.
\d{4},.\d(nie można używać? + * {n,} {n,m}), - nie wykorzystuje się grupowania ani odwołań wstecznych,
- w nawiasach kwadratowych mogą wystąpić jedynie przedziały
0-9,A-Za-z(jeśli wykorzystywane są litery, muszą być użyte duże i małe jednocześnie), nie jest obsługiwane wyłączenie, nie można podawać zbiorów znaków (np. nie są akceptowane:[a-f],[^abc],[_-xa]), - wyrażenie nie zawiera alternatyw, np. nie może wystąpić
(abc|def).
Dopuszczalne symbole: . \w \d \W \D {n} [0-9A-Za-z]
Przykład
\d{2}-\d{3}
\d{4}-\d{4}-\d{4}-d{4}
Uwaga!
- MaskedTextBox wpisuje znak podkreślenia (
_) w miejsce nieuzupełnionych znaków, \wakceptuje znaki podkreślenia,- nierozpoznane (nie wspomniane wyżej) znaki zostaną wstawione do maski, np.
\dE\d->_E_.
UWAGA¶
Od wersji 6.0 mechanizm masek zostaje rozdzielony. Dla klienta VCL mechanizm się nie zmienia, natomiast dla klienta WEB zostają w pełni wykorzystane kontrolki MaskedTextBox oraz NumericTextBox
Pola CALC¶
Klient WEB wyświetla pola typu CALC posługując się kontrolką Kendo NumericTextBox, do której maska formatująca zostanie bezpośrednio przekazana. Formatowanie NumericTextBox można znaleźć tutaj. Należy pamiętać, aby uzupełnić również pole "Ilość miejsc po przecinku" na formie
Pola tekstowe¶
Kontrolka MaskedTextBox wymaga aby liczba znaków oraz ich rodzaj były jawnie określone, pola te nadają się więc do prostych przypadków typu kod pocztowy, nr konta itp. Dokładny opis budowania maski dla MaskedTextBox można znaleźć tutaj
Jeżeli chcemy weryfikować bardziej skomplikowane wartości, zalecane jest utworzenie odpowiedniej metody na walidację.
Zobacz też¶
DevExpress Mask Editors Overview\ Kendo MaskedTextBox\ Kendo Number Formatting