DELPHI FIVE EDITTEXTの入力制限

解決


LUKU  2010-01-02 00:19:03  No: 36612

テキストエディタの入力制限をしたいのですが、MAXLENGTH関数以外を使ってどのようにすればいいのでしょうか?(VERSION DELPHI5)


igy  2010-01-02 00:52:21  No: 36613

TEditであれば、OnKeyPressイベントはいかがですか?

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
    if not (Key in ['a'..'e']) then
        Key := #0;
end;


LUKU  2010-01-02 03:40:35  No: 36614

すみません、説明不足でした。私がお伺いしたかったのは、入力文字数の制限です。たとえば、このテキストエディタに対しては、10文字までなど入力でき、それ以上はタイプしても表示されないということです。ちなみに、入力の型も制御できるでしょうか(このテキストエディタには数値のみなど)?

よろしくお願いいたします。


igy  2010-01-02 04:42:01  No: 36615

>このテキストエディタ

テキストエディタというのは、TEditのことですか?

TEditでしたら、先ほどのOnKeyPressイベントで
そのTEditの文字数を数え、入力文字数に達していた場合、
 Key := #0;
にするというのは、いかがですか?


LUKU  2010-01-02 05:33:30  No: 36616

igyさん、迅速な返答ありがどうございます。はい、TEditとのことです。TEditともじをカウントする方法ですが、maxlengthを使用すればよいでしょうか?つまり、書き方としては、

begin 
 if maxlength(ID.Text) > 10
  then
   key :=#0;
 end;

になるのでしょうか?
また、先ほどお伺いした、TEditの入力型を制限する方法はプロパティなどの設定でかのうでしょうか?keypressで数字だけしか受け付けないにすれば、できると考えているのですが。。

よろしくお願いします。


igy  2010-01-02 05:47:12  No: 36617

>はい、TEditとのことです。

バイト数でよいならば、OnKeyPressイベントを使わずに
MaxLength プロパティに指定すればよいかと思います。

>keypressで数字だけしか受け付けない

試していませんが、

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
    if not (Key in ['0'..'9']) then
        Key := #0;
end;

はいかがですか?


igy  2010-01-02 05:54:08  No: 36618

>もじをカウントする方法ですが、maxlengthを使用すればよいでしょうか?

全角文字を含まれないのであれば、Length関数でよいかと思います。


LUKU  2010-01-02 07:21:34  No: 36619

ありがとうございます。最後に、全角の場合の文字カウントに関してお伺いしたいのですが、テキストフィールドがAddress.Textで10文字で制御したい場合、
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
    if Maxlength(WideString(Address.Text)) > 10 then
        Key := #0;
end;

または、
    if MbPos(Address.Test) > 10 then
        key := #0
end;

で大丈夫でしょうか?


igy  2010-01-02 08:03:20  No: 36620

>で大丈夫でしょうか?

Maxlength
MbPos
は、知らないのですが、(API?それともDelphiに標準搭載している関数?)

コンパイルしてみて、動作確認した場合、どうなります?


LUKU  2010-01-08 07:44:45  No: 36621

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


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








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