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

Еще одна статья от Александра (sandy) Илюшенко о создании собственного валидатора для wxTextCtrl.

Наверное каждый сталкивался с проблемой ввода логина пользователя, особенно если необходимо запретить ввод кириллических букв. Для реализации этой столь простой задачи напрашивается использовать wxTextValidator и его метод SetExcludes. Но, как по мне, не очень элегантно перед объявлением wxTextCtrl создавать экземпляр wxTextValidator и впихивать в него запрещенные для ввода символы. По-моему, гораздо удобнее использовать унаследованный от wxTextValidator класс. К тому же, его использование может быть неоднократным.

Вот потому лучше не полениться и один раз реализовать такой класс.

wxLoginValidator.h

#pragma once
#include 

class wxLoginValidator : public wxTextValidator {
public:
    wxLoginValidator() : wxTextValidator(wxFILTER_EXCLUDE_CHAR_LIST)
    {
        wxArrayString a;
        wxString s=wxT("АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюяЁёЄєЇїІі");
        for (size_t i=0;iExample.cpp

#include "wxLoginValidator.h"
/* ... */
wxTextCtrl* m_LoginCtrl = new wxTextCtrl(this, wxID_ANY, wxEmptyString,
	wxDefaultPosition, wxSize( 120,20 ), 0, wxLoginValidator());
m_LoginCtrl->SetMaxLength(8);
/* ... */

Leave a Reply

Your email address will not be published. Required fields are marked *

Please leave these two fields as-is: