これを行う場合:
Edit1.Text := StringOfChar('X', 37440);
テキストが表示されますが、これを行うと:
Edit1.Text := StringOfChar('X', 37441);
テキストは表示されません。
誰も理由を知っていますか?
これがエラーである場合、既存のすべてのコンポーネントを TMemo に置き換えるのではなく、別の調整方法がありますか?
とにかくなぜ37440なのですか?
これを行う場合:
Edit1.Text := StringOfChar('X', 37440);
テキストが表示されますが、これを行うと:
Edit1.Text := StringOfChar('X', 37441);
テキストは表示されません。
誰も理由を知っていますか?
これがエラーである場合、既存のすべてのコンポーネントを TMemo に置き換えるのではなく、別の調整方法がありますか?
とにかくなぜ37440なのですか?
EM_LIMITTEXT
一見すると、次のメッセージを使用してこれを制御できるはずです。
EM_LIMITTEXT メッセージは、ユーザーが入力できるテキストのみを制限します。メッセージの送信時にエディット コントロールに既に存在するテキストには影響しません。また、WM_SETTEXT メッセージによってエディット コントロールにコピーされたテキストの長さにも影響しません。アプリケーションが WM_SETTEXT メッセージを使用して、EM_LIMITTEXT メッセージで指定されているよりも多くのテキストをエディット コントロールに配置する場合、ユーザーはエディット コントロールの内容全体を編集できます。
EM_LIMITTEXT が呼び出される前に、ユーザーがエディット コントロールに入力できるテキストの量の既定の制限は 32,767 文字です。
そして、このメッセージは のMaxLength
プロパティによって公開されますTEdit
。
ただし、MaxLength
大きな値に設定しても効果がないようです。1 行のエディット コントロールに多数の文字を表示させることはできません。
実行可能な唯一のオプションは、複数行の編集コントロールを使用することだと思いますTMemo
。
MS は、単一行の編集コントロールは何千もの文字を保持するように設計されていないため、そのコントロールをより機能的にする動機がないと主張するでしょう。
FWIW、コントロールの Unicode バージョンでは、カットオフは 37440 ではなく 37444 のように見えます!