Categories: wxWidgets

Создание собственных валидаторов значения текстового поля в wxWidgets

Еще одна статья от Александра (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&#91;i&#93;));
        }
        SetExcludes(a);
    }
};
&#91;/sourcecode&#93;
И использовать это уже гораздо проще.

<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);
/* ... */
T-Rex

Share
Published by
T-Rex

Recent Posts

Разработка кроссплатформенных модульных приложений на C++ с библиотекой wxWidgets

Введение Уже долгое время не пишу статьи о разработке, хотя сам процесс написания мне очень…

10 years ago

wxWidgets App With Plugins (Windows/Linux/Mac) – Sample Source Code

I can see that there is still a lot of topics at wxWidgets forums related…

11 years ago

wxToolBox is Now Open-Source!

I've just published the source code of wxToolBox component and a couple of sample apps at…

11 years ago

Microsoft Kinect Helper Library and Sample for wxWidgets

Microsoft released their Kinect SDK several days ago. So, for those wxWidgets developers who are…

13 years ago

wxJSON 1.1.0 Released

JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to…

14 years ago

wxRuby. Оно даже работает!

Вдохновленнный читаемой нынче книгой My Job Went to India: 52 Ways to Save Your Job…

15 years ago