Еще одна статья от Александра (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…