Cross-Platform Programming with wxWidgets
Just Make It Cross-Platform
Subscribe to Feed
  • Home
  • Projects
  • Links

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

wxWidgets Add comments |

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

January 20th, 2009 |

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

Leave a Reply

Please leave these two fields as-is:

  • This blog is about…

    Articles Code::Blocks Components Controls Database DatabaseLayer Document/View Eclipse Localization NetBeans Networking News Printing Reports SQLite Tutorilas Video Visual Studio wxAUI wxButton wxDev-CPP wxGrid wxHelpController wxJavaScript wxJSON wxLocale wxLog wxPaintDC wxPropertyGrid wxRuby wxSQLite3 wxThread wxValidator wxWidgets wxWinCE wxZipInputStream wxZipOutputStream XML Библиотека Книги Статьи
  • Showcase

    Visit wxToolBox Homepage

    Buy wxToolBox (with source code)

  • Archives

    • November 2009
    • September 2009
    • August 2009
    • May 2009
    • April 2009
    • March 2009
    • February 2009
    • January 2009
    • December 2008
    • September 2008
    • August 2008
    • July 2008
    • June 2008
    • May 2008
    • April 2008
    • March 2008
    • February 2008
    • January 2008
    • December 2007
    • June 2007
    • May 2007
    • January 2007
  • Recent Comments

    • T-Rex on Getting Acquainted with Document/View Framework – Simple Image Viewer
    • T-Rex on Сделайте мне красиво – Часть II – wxAUI в Multi-View приложений
    • Mardiko on Getting Acquainted with Document/View Framework – Simple Image Viewer
    • marty on Сделайте мне красиво – Часть II – wxAUI в Multi-View приложений
    • T-Rex on Перевод книги Julian’а Smart’а – Глава VI – Обработка данных с устройств ввода
  • Buttons

    Locations of visitors to this page

    Rambler's Top100
    Рейтинг@Mail.ru

Copyright © 2010 Cross-Platform Programming with wxWidgets All Rights Reserved
RSS Log in