5

これを行う場合:

  Edit1.Text := StringOfChar('X', 37440);

テキストが表示されますが、これを行うと:

  Edit1.Text := StringOfChar('X', 37441);

テキストは表示されません。

誰も理由を知っていますか?
これがエラーである場合、既存のすべてのコンポーネントを TMemo に置き換えるのではなく、別の調整方法がありますか?
とにかくなぜ37440なのですか?

4

1 に答える 1

4

EM_LIMITTEXT一見すると、次のメッセージを使用してこれを制御できるはずです。

EM_LIMITTEXT メッセージは、ユーザーが入力できるテキストのみを制限します。メッセージの送信時にエディット コントロールに既に存在するテキストには影響しません。また、WM_SETTEXT メッセージによってエディット コントロールにコピーされたテキストの長さにも影響しません。アプリケーションが WM_SETTEXT メッセージを使用して、EM_LIMITTEXT メッセージで指定されているよりも多くのテキストをエディット コントロールに配置する場合、ユーザーはエディット コントロールの内容全体を編集できます。

EM_LIMITTEXT が呼び出される前に、ユーザーがエディット コントロールに入力できるテキストの量の既定の制限は 32,767 文字です。

そして、このメッセージは のMaxLengthプロパティによって公開されますTEdit

ただし、MaxLength大きな値に設定しても効果がないようです。1 行のエディット コントロールに多数の文字を表示させることはできません。

実行可能な唯一のオプションは、複数行の編集コントロールを使用することだと思いますTMemo

MS は、単一行の編集コントロールは何千もの文字を保持するように設計されていないため、そのコントロールをより機能的にする動機がないと主張するでしょう。

FWIW、コントロールの Unicode バージョンでは、カットオフは 37440 ではなく 37444 のように見えます!

于 2013-07-04T19:45:02.767 に答える