名前 題名 ▼ takiさん > 列によって数字と文字の入力を切り替えたいと思いました。 > > http://homepage1.nifty.com/MADIA/delphi/delphi_bbs/200604/200604_06040024.html > http://delfusa.main.jp/delfusafloor/archive/www.nifty.ne.jp_forum_fdelphi/samples/00034.html > > を参考にしました。 > > imOpen,imHira,imCloseは正常に動作するのですが、 > imCloseの代わりにimDisableを使うとうまく動きません。の報告です。 > > Windows7 Pro + Microsoft Office IME 2010 SP2 > Delphi XE4 Starter > > 新規作成 > フォームにStringGrid1,StringGrid2を配置 > オブジェクトインスペクタより > OptionのgoEditing,goAlwaysShowEditor,goTabsをTrueに設定 > > 以下コードです。 > > unit Unit1; > > interface > > uses > Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, > Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Grids; > > type > _TGrid = class(TCustomGrid); // 継承のクラス > > TForm1 = class(TForm) > StringGrid1: TStringGrid; > StringGrid2: TStringGrid; > procedure StringGrid1GetEditText(Sender: TObject; ACol, ARow: Integer; > var Value: string); > procedure StringGrid2GetEditText(Sender: TObject; ACol, ARow: Integer; > var Value: string); > private > { Private 宣言 } > public > { Public 宣言 } > end; > > var > Form1: TForm1; > > implementation > > {$R *.dfm} > > // 継承を使う方法 > procedure TForm1.StringGrid1GetEditText(Sender: TObject; ACol, ARow: Integer; > var Value: string); > begin > with TEdit(_TGrid(Sender).InplaceEditor) do > case ACol of > 1: ImeMode := imHira; // Openと同じ > 2: ImeMode := imClose; // imDisableを使うと変になる > 3: ImeMode := imOpen; > 4: ImeMode := imClose; > end; > end; > > // SetImeMode()を使う方法 > procedure TForm1.StringGrid2GetEditText(Sender: TObject; ACol, ARow: Integer; > var Value: string); > begin > case ACol of > 1: SetImeMode( Handle, imHira ); > 2: SetImeMode( Handle, imClose ); // imDisableを使うと変になる > 3: SetImeMode( Handle, imOpen ); > 4: SetImeMode( Handle, imClose ); > end; > end; > > end. > > ちなみに、継承を使う方法は理解できていません。マスターすみません。(^^; GIF,JPEG,PNG画像ファイル及びLZH,ZIPファイルをアップロードできます.600 x 1200 ピクセルを超える画像は縮小表示されます(画像クリックで拡大表示). (上限122000(120k)バイト) 削除キー Link