名前 題名 ▼ takiさん > Edit1に顧客番号、Edit2にふりがな、Edit3に氏名を入力していますが、 > Edit2のふりがなをうっかり変換してしまい困っていました。 > > サンプルプログラム452を参考にして、 > Edit2Enter手続きでまず以前の設定をdwConversionBK、dwSentenceBKに保存し、 > その後、IMEの「ひらがな無変換」モード設定をしました。 > ふりがな入力が済むと、Edit2Exit手続きに保存した設定を使って元に戻しています。 > > こういう使い方で大丈夫ですか? 一応動いています。 > Windows7 32Bit + Delphi XE4 Starter > > > unit Unit1; > > interface > > uses > Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, > Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls; > > type > TForm1 = class(TForm) > Edit1: TEdit; > Edit2: TEdit; > Edit3: TEdit; > procedure FormShow(Sender: TObject); > procedure Edit2Enter(Sender: TObject); > procedure Edit2Exit(Sender: TObject); > private > { Private 宣言 } > public > { Public 宣言 } > end; > > var > Form1: TForm1; > > // IMEのパラメータ保存用 > dwConversionBK : DWORD; > dwSentenceBK : DWORD; > > implementation > > uses IMM; > > {$R *.dfm} > > procedure TForm1.Edit2Enter(Sender: TObject); > var > Imc : HIMC; > dwConversion : DWORD; > dwSentence : DWORD; > begin > //IMEをオープン > SetImeMode(Edit2.Handle, imOpen); > //入力コンテキストを取得 > Imc := ImmGetContext(Edit2. Handle); > > try > // パラメータの内容を保存する > ImmGetConversionStatus(Imc, dwConversionBK, dwSentenceBK); > > //パラメータを設定 > dwConversion := IME_CMODE_NATIVE or IME_CMODE_FULLSHAPE; > dwSentence := IME_SMODE_NONE; > > //IMEの状態を設定 > ImmSetConversionStatus(Imc, dwConversion, dwSentence); > finally > //ImmGetContextしたら必ず解放する > ImmReleaseContext(Edit2.Handle, Imc); > end; > end; > > procedure TForm1.Edit2Exit(Sender: TObject); > var > Imc : HIMC; > begin > //IMEをオープン > SetImeMode(Edit2.Handle, imOpen); > //入力コンテキストを取得 > Imc := ImmGetContext(Edit2. Handle); > > try > //保存していたIMEの状態を設定 > ImmSetConversionStatus(Imc, dwConversionBK, dwSentenceBK); > finally > //ImmGetContextしたら必ず解放する > ImmReleaseContext(Edit2.Handle, Imc); > end; > end; > > procedure TForm1.FormShow(Sender: TObject); > begin > Edit1.ImeMode := imClose; // 顧客番号 > Edit2.ImeMode := imHira; // ふりがな > Edit3.ImeMode := imHira; // 氏名 > end; > > end. > > なお、dwConversionBKには25(00011001)が入っていました。 > ローマ字・全角・NATIVEという意味みたいです。 > dwSentenceBKには8(00001000)で、 > 連文節変換という意味みたいです。 GIF,JPEG,PNG画像ファイル及びLZH,ZIPファイルをアップロードできます.600 x 1200 ピクセルを超える画像は縮小表示されます(画像クリックで拡大表示). (上限122000(120k)バイト) 削除キー Link