Delphi 7EM_SETTEXTMODEのコントロールで使用しようとしています。RichEdit
新しいプロジェクトを作成し、TRichEditコントロールとTButtonコントロールを追加して、次のコードをボタンのクリック ハンドラーに追加するだけです。
SendMessage(RichEdit1.Handle, WM_SETTEXT, 0, LPARAM(PChar('')));
Button1.Caption := IntToStr(SendMessage(RichEdit1.Handle, EM_GETTEXTMODE, 0, 0));
Button1.Caption := Button1.Caption + ' ' + IntToStr(SendMessage(RichEdit1.Handle, EM_SETTEXTMODE, TM_PLAINTEXT, 0));
Button1.Caption := Button1.Caption + ' ' + IntToStr(SendMessage(RichEdit1.Handle, EM_GETTEXTMODE, 0, 0));
ボタンをクリックした後、ボタンのキャプションは に設定されます。38 0 38これは、テキスト モードがまったく変更されなかったことを意味します。38TM_RICHTEXT or TM_SINGLELEVELUNDO or TM_MULTICODEPAGESETTEXTMODE038
のテキストは、ドキュメントで提案されているように、RichEdit使用する前にクリアされます。EM_SETTEXTMODE
で異なる値を設定しようとしましEM_SETTEXTMODEたが、常にそのまま38です。
コントロールを呼び出す前にテキストが含まれていても、常に (成功)EM_SETTEXTMODEを返すことに気付きました。0RichEdit
RichEdit1.Perform代わりに使用してみましたSendMessage-違いはありません。
この問題に関するさまざまなフォーラムでいくつかのスレッドを見つけましたが、いずれのスレッドでも解決されていません。
なぜこれが機能しないのですか?
