フォーラム


ゲスト  

ようこそ ゲスト さん。このフォーラムに投稿するには 登録が必要です。

ページ: [1]
トピック: MaxLengthをどうにかするについて
love56more
メンバー
投稿数: 2
MaxLengthをどうにかするについて
on: 2017/09/27 15:25 Wed

お世話になります。love56moreと申します。
DelphiXE4を使用しています。

MaxLength をどうにかする (Delphi 7 ~ Delphi 2007)
http://ht-deko.com/tech043.html#tech087

を参照して、MaxLengthでとまるエディットフィールドを実装しています。
今日、客先から言われたのですが、
途中に文字を入力されると、後ろの文字が消えていくのをなんとかしたいと思っています。
(それ以上の文字を入力できなくしたい)

ヒントとかお知恵を拝借できませんでしょうか。
キーワードだけでもいただければ、ググってなんとかしたいと思います。

皆様、お忙しいところすいませんが、教えてください。
よろしくお願いします。

DEKO
管理者
投稿数: 2691
Re: MaxLengthをどうにかするについて
on: 2017/09/27 15:42 Wed

深い意味はないのですが、と前置きした上でお話ししますね。

> Delphi XE4
例のコードは Delphi 2007 以前の ANSI 版 Delphi 向けのコードですから、XE4 では正しく動作しないハズなのですが?
単純に文字制限を行うのであれば、OnChange イベントハンドラは不要です。

例のコードは Delphi 2007 以前で作られたバイナリにアプリケーションマニフェスト (XPMan とか) を適用して実行すると、MaxLength (バイト数) で指定したハズなのに (Unicode) 文字数で入力できてしまうのが問題で、それを回避するためのコードです。

つまり、Delphi 2009 以降の場合の MaxLength は文字数 なので、文字数制限で困る事はないハズなのですが、ここの所はどうなっているのでしょうか?

もし、"全角文字 = 2 byte" 計算での文字数制限…つまり文字幅での制限を行おうとされているのであれば、MECSUtils 等を使って制御してやる必要があります。

[MECSUtils リファレンス]
http://ht-deko.com/tech021.html

DEKO
管理者
投稿数: 2691
Re: MaxLengthをどうにかするについて
on: 2017/09/27 15:48 Wed

文字幅での制限を行うべきではない理由についてはこちらの資料をどうぞ。

[Delphi での文字コードのハンドリングについて]
http://edn.embarcadero.com/print/images/40483/devcamp_encore_20100415_Full.pdf

love56more
メンバー
投稿数: 2
Re: MaxLengthをどうにかするについて
on: 2017/09/28 09:55 Thu

お返事ありがとうございます。
教えていただいたことを参考にして対策考えます。

ページ: [1]
WP Forum Server by ForumPress | LucidCrew
バージョン: 1.7.5 ; ページロード: 0.034 sec.