テキストエディタの入力制限をしたいのですが、MAXLENGTH関数以外を使ってどのようにすればいいのでしょうか?(VERSION DELPHI5)
TEditであれば、OnKeyPressイベントはいかがですか?
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (Key in ['a'..'e']) then
Key := #0;
end;
すみません、説明不足でした。私がお伺いしたかったのは、入力文字数の制限です。たとえば、このテキストエディタに対しては、10文字までなど入力でき、それ以上はタイプしても表示されないということです。ちなみに、入力の型も制御できるでしょうか(このテキストエディタには数値のみなど)?
よろしくお願いいたします。
>このテキストエディタ
テキストエディタというのは、TEditのことですか?
TEditでしたら、先ほどのOnKeyPressイベントで
そのTEditの文字数を数え、入力文字数に達していた場合、
Key := #0;
にするというのは、いかがですか?
igyさん、迅速な返答ありがどうございます。はい、TEditとのことです。TEditともじをカウントする方法ですが、maxlengthを使用すればよいでしょうか?つまり、書き方としては、
begin
if maxlength(ID.Text) > 10
then
key :=#0;
end;
になるのでしょうか?
また、先ほどお伺いした、TEditの入力型を制限する方法はプロパティなどの設定でかのうでしょうか?keypressで数字だけしか受け付けないにすれば、できると考えているのですが。。
よろしくお願いします。
>はい、TEditとのことです。
バイト数でよいならば、OnKeyPressイベントを使わずに
MaxLength プロパティに指定すればよいかと思います。
>keypressで数字だけしか受け付けない
試していませんが、
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (Key in ['0'..'9']) then
Key := #0;
end;
はいかがですか?
>もじをカウントする方法ですが、maxlengthを使用すればよいでしょうか?
全角文字を含まれないのであれば、Length関数でよいかと思います。
ありがとうございます。最後に、全角の場合の文字カウントに関してお伺いしたいのですが、テキストフィールドが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;
で大丈夫でしょうか?
>で大丈夫でしょうか?
Maxlength
MbPos
は、知らないのですが、(API?それともDelphiに標準搭載している関数?)
コンパイルしてみて、動作確認した場合、どうなります?
解決しました。ありがとうございました。
ツイート | ![]() |