Przejdź do treści

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

Uwaga!

  • jeśli wpisano więcej cyfr po przecinku niż zdefiniowano w masce (np. 3.1415 dla maski 0.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. 1234 dla 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,
  • \w akceptuje 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