TRichEditにMaxLengthを指定した時の不具合について

解決


yk  2015-02-21 01:48:56  No: 47059

Textの長さが、MaxLength以上の状態で、TRichEditのRecreateWndが呼び出されると、RichEdit内のテキストが破壊され、MaxLengthが無効になります。

<例> フォームにRichEdit1を配置し、FormCreateに以下を記述
begin
  RichEdit1.MaxLength := 3;
  RichEdit1.Text := 'abc';
  RichEdit1.Perform(CM_RECREATEWND, 0, 0);
end;

※実際にはCM_RECREATEWNDではなく、WordWrapやScrollBarsの設定で起きています。
この現象を回避するには、一時的にMaxLengthを0にして戻すという方法しか無いのでしょうか?

開発環境はDelphi XE7、OSはWindows7Proです。


yk  2015-02-25 21:32:25  No: 47060

MaxLengthを一旦0として長さ制限を解除し、
上記の設定後、再度MaxLengthの値を設定する様にして対応しました。

また、上記命令を使用すると、テキストの破壊とは関係なく
MaxLengthの指定が無効になるので、これらを使うときは、
一旦MaxLengthを0にする必要がありそうです。


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

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






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