Еще одна статья от Александра (sandy) Илюшенко о создании собственного валидатора для wxTextCtrl.
Наверное каждый сталкивался с проблемой ввода логина пользователя, особенно если необходимо запретить ввод кириллических букв. Для реализации этой столь простой задачи напрашивается использовать wxTextValidator и его метод SetExcludes. Но, как по мне, не очень элегантно перед объявлением wxTextCtrl создавать экземпляр wxTextValidator и впихивать в него запрещенные для ввода символы. По-моему, гораздо удобнее использовать унаследованный от wxTextValidator класс. К тому же, его использование может быть неоднократным.
Вот потому лучше не полениться и один раз реализовать такой класс.
wxLoginValidator.h
#pragma once
#include <wx/valtext.h>
class wxLoginValidator : public wxTextValidator {
public:
wxLoginValidator() : wxTextValidator(wxFILTER_EXCLUDE_CHAR_LIST)
{
wxArrayString a;
wxString s=wxT("АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюяЁёЄєЇїІі");
for (size_t i=0;i<s.Len();i++) {
a.Add(wxString(s[i]));
}
SetExcludes(a);
}
};
И использовать это уже гораздо проще.
Example.cpp
#include "wxLoginValidator.h" /* ... */ wxTextCtrl* m_LoginCtrl = new wxTextCtrl(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 120,20 ), 0, wxLoginValidator()); m_LoginCtrl->SetMaxLength(8); /* ... */
Tags: wxValidator, wxWidgets, Статьи
Related Posts
- Перевод книги Julian’а Smart’а – Глава IX – Написание собственных диалогов – Часть I
- Перевод книги Julian’а Smart’а – Глава XIII – Структуры данных (Часть 1)
- Кастомизация класса wxHtmlEasyPrinting для печати отчетов в wxWidgets
- Taking Screenshots with wxWidgets under Mac OS is Really Tricky.
- Привязка данных к элементам управления и проверка корректности ввода данных в wxWidgets

