Delphi Programming / Object Pascal
[掲載 2005年02月01日] [更新 2014年01月23日] Delphi サンプルプログラム集 |
440_漢字変換中の文字色 ( TRichEdit 専用 ) |
動作確認等 |
Windows 7 U64(SP1) + Delphi 2007-R2 Pro + Microsoft Office IME 2007
Unicode 版の RichEdit では機能しない |
|
440_IMEColor.zip [233 KB] 2014年01月23日版 (EXE 同梱) |
漢字変換中の文字の色 ( TRichEdit 専用 ) |
かな漢字変換中の文字の色と背景色等の設定方法例です.TRichEdit専用です.
TRichEdit では,各種メッセージ処理や定数などが定義されていて,この例のような処理を可能にしています.
このサンプルで使用している EM_SETIMECOLOR メッセージは, Unicode 版の RichEdit では機能しません.実行すると,戻り値が 0 となりメッセージの処理に失敗します. |
|
図1
実行時画面
|
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, RichEdit;
type
TForm1 = class(TForm)
RichEdit1: TRichEdit;
procedure FormCreate(Sender: TObject);
private
{ Private 宣言 }
public
{ Public 宣言 }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
//=============================================================================
// 漢字変換中の文字や文字の背景色の設定(RichEdit専用)
//
// usesにRichEditが必要
//=============================================================================
procedure TForm1.FormCreate(Sender: TObject);
var
//CompColor構造体の配列
CompColor : array[0..3] of TCompColor;
begin
//現在のIME構成カラーをCompColor構造体に取得
SendMessage(RichEdit1.Handle, EM_GETIMECOLOR, 0, Longint(@CompColor));
//入力中の文字列の色と背景色・書式設定
CompColor[0].crBackGround := clRed;
CompColor[0].crText := clWhite;
CompColor[0].dwEffects := CFE_ITALIC or CFE_BOLD;
//変換中(文節内)の文字列の色と背景色・書式設定
CompColor[1].crBackGround := clBlue;
CompColor[1].crText := clYellow;
// CompColor[1].dwEffects := CFE_STRIKEOUT or CFE_UNDERLINE;
//変換済(変換済文節内)文字列の色と背景色・書式設定
CompColor[2].crBackGround := clLime;
CompColor[2].crText := clBlack;
CompColor[2].dwEffects := CFE_ITALIC;
//文節長変換中文字・背景色・書式設定
//変換済をユーザーが入力文字(かなやアルファベット)に戻した文字列
CompColor[3].crBackGround := clGreen;
CompColor[3].crText := clRed;
CompColor[3].dwEffects := CFE_BOLD;
//IME構成カラーを設定
SendMessage(RichEdit1.Handle, EM_SETIMECOLOR, 0, Integer(@CompColor));
end;
end.
|