Еще одна статья от Александра (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); } }; [/sourcecode] И использовать это уже гораздо проще. <strong>Example.cpp</strong> [sourcecode language="cpp"] #include "wxLoginValidator.h" /* ... */wxTextCtrl* m_LoginCtrl = new wxTextCtrl(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 120,20 ), 0, wxLoginValidator()); m_LoginCtrl->SetMaxLength(8); /* ... */
Введение Уже долгое время не пишу статьи о разработке, хотя сам процесс написания мне очень…
I can see that there is still a lot of topics at wxWidgets forums related…
I've just published the source code of wxToolBox component and a couple of sample apps at…
Microsoft released their Kinect SDK several days ago. So, for those wxWidgets developers who are…
JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to…
Вдохновленнный читаемой нынче книгой My Job Went to India: 52 Ways to Save Your Job…