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
これは、テキスト モードがまったく変更されなかったことを意味します。38
TM_RICHTEXT or TM_SINGLELEVELUNDO or TM_MULTICODEPAGE
SETTEXTMODE
0
38
のテキストは、ドキュメントで提案されているように、RichEdit
使用する前にクリアされます。EM_SETTEXTMODE
で異なる値を設定しようとしましEM_SETTEXTMODE
たが、常にそのまま38
です。
コントロールを呼び出す前にテキストが含まれていても、常に (成功)EM_SETTEXTMODE
を返すことに気付きました。0
RichEdit
RichEdit1.Perform
代わりに使用してみましたSendMessage
-違いはありません。
この問題に関するさまざまなフォーラムでいくつかのスレッドを見つけましたが、いずれのスレッドでも解決されていません。
なぜこれが機能しないのですか?