MaskEditで文字の入力制限をするには?

解決


やまだ  2013-09-22 01:06:59  No: 45319

こんにちは。

いつもお世話になっております。
開発環境は、win7(sp1)、delphiXE3 enterpriseです。

現在MaskEditを使って和暦入力を実現しようと考えています。
Editのときに使った、以下のコードで対応しようと考えました。
書き込んだイベントはKeyPressです。

strAccept:='mtsh';
if (Pos(Key,strAccept)=0) then Key:=#0;

EditMaskプロパティは「A99.99.99」にしています。

しかし、Editのときは数字入力の制限だったんですが、Editのときのように
動かなくて、アルファベットのA〜Zが先頭文字だけですが入力されてしまいます。

MskEditでKeyPressの制限はできないのでしょうか?

よろしくおねがいします。


DEKO  2013-09-22 01:48:42  No: 45320

MaskEdit1 の EditMask を ">!L99.99.99;1; " にして、

procedure TfrmMain.MaskEdit1KeyPress(Sender: TObject; var Key: Char);
begin
  if (Sender as TMaskEdit).SelStart = 0 then
    if not CharInSet(UpCase(Key), ['M', 'T', 'S', 'H']) then
      Key:=#0;
end;

これでどうでしょう?


DEKO  2013-09-22 01:56:38  No: 45321

> MaskEdit1 の EditMask を ">!L99.99.99;1; " にして、
元々の意味だと ">L99.99.99" ですかね。

> Editのときは数字入力の制限だったんですが
ちなみに TEdit で数値だけの入力に制限するのであれば、
NumbersOnly プロパティを True にするのが簡単です (Delphi 2009 以降) 。

[Delphi2007 と TEdit (ついでに TComboBox)]
http://ht-deko.minim.ne.jp/tech022.html


やまだ  2013-09-22 02:09:12  No: 45322

ごめんなさい。
本当に申し訳ございません。

Onkeypressの紐付けが違うものになっていました。

動かないのは当然でした。

本当にすみませんでした。

あと、教えていただいたコードで思う通りになりました。

ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加