C++ Builder XE4, 10.2 Tokyo > TEdit > {数値|アルファベット}だけを許可する > Indy使用


動作環境
C++ Builder XE4
RAD Studio 10.2 Tokyo Update 2 (追記: 2018/01/05)

Indy使用

テキストボックスにおいて、{数値|アルファベット]のみの入力を許可する。

http://www.tek-tips.com/viewthread.cfm?qid=1561967
はDelphiコードであるが、inはC++ Builderでは使えない?

Indyの関数を使う処理にしてみた。

code

バックスペースキーは使える方がUIとして良いので許可した。
デリートキーは使えるようだ。

Unit1.cpp
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------

#include <IdGlobal.hpp> // IsAlphaNumeric()

__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{

}
//---------------------------------------------------------------------------

static const int kCode_BackSpace = 0x08;

void __fastcall TForm1::Edit1KeyPress(TObject *Sender, System::WideChar &Key)
{
    if (Key == kCode_BackSpace) {
        return;
    }
    if (IsAlphaNumeric(Key) == false) {
        Key = 0x00;  // discard the key
        return;
    }
}
//---------------------------------------------------------------------------

NCC-74656と入力したところ。

マイナスや下線など、ファイル名として使う文字については許可してもいいかもしれない。

関連

WinAppDev > 不正なフォルダ名 > フォルダ名変更時に"/"入力すると(ファイル名に対する)不正文字を表示することができる