喫茶XRAYトップページ

[スレッド全体
]

[4878] Re2:TStringGridでの日本語入力返信 削除
2011/6/15 (水) 10:51:20 Sara
▼ Mr.XRAYさん
朝早く、ご苦労様ですm(_ _)m。 まさか寝てないなんてことは・・・(^^;

> これはですね.仕様のようですね.
> あるセルが選択されている状態で,何かキーを押すと編集状態,
> つまり,インプレースエディタが起動するようになっています.
> この時,セルの移動に使用する,矢印キーなどは動作対象外のようです.

そうなんですよね。なので、OnKeyDown等で自分で次のセルに送ったりする
わけですが、単純に移動させてしまうと、編集中に矢印キーが使えない・・・
ので、EditModeを確認して編集中でなければ、移動しているわけです。
でも、keybd_eventで常に編集中にしてしまうと、これができない・・・

> 日本語IMEはインプレースエディタが起動します.したがって,編集状態に
> 入らないと,IMEは起動しません.
> つまり,最初の1文字が半角となるわけです.
> かと言って,IMEを最初から起動しておくと,インプレースエディタが起動
> していない,つまり,入力用のエディタがないので,予想(想定外?)の位置
> に入力窓が表示されてしまいます.

そうなんですよね・・・すごく気に入らない(^^;
さらに、エクセルをならできるのにとか言われると、もっと気に入らない・・・(^^;;;


> さて,どうするか.どうしましょう.
どうしましょうねぇ・・・困った・・・

あっ! GetCaretposを使ってTInplaceEdit内のカーソル位置が先頭か末尾なら、
それぞれ前後のセルへ移動するとどうだろう・・・

ちょっと、やってみる・・・・(時間経過)

おぉ、それなりに、よさげな感じ・・・ちょっと、せこいけど・・・(またか?)
とりあえず、これで作っておくか・・・(^^;

もっと、良い方法を見つけたら、教えてください。(^^;

[4879] Re3:TStringGridでの日本語入力返信 削除
2011/6/15 (水) 15:04:25 Sara
▼ Mr.XRAYさん

//  keybd_event(VK_F2, 0, 0, 0);
//  keybd_event(VK_F2, 0, KEYEVENTF_KEYUP, 0);
こんなこと、しなくても、StringGrid1.Optionsに[goAlwaysShowEditor]を
付けたり消したりすれば、事は済むんですね・・・(^^;




[4880] Re3:TStringGridでの日本語入力返信 削除
2011/6/15 (水) 15:07:19 Mr.XRAY
▼ Saraさん

> あっ! GetCaretposを使ってTInplaceEdit内のカーソル位置が先頭か末尾なら、
> それぞれ前後のセルへ移動するとどうだろう・・・


なるほど.そうですよね.
これ,まっとうな方法じゃないんですか.そう思いますけど.

セルの編集可否を制御するのは,
OptionsにgoAlwaysShowEditorを追加しておいて,

  if ACol = 1 then begin
    if not (goEditing in StringGrid1.Options) then
      StringGrid1.Options := StringGrid1.Options + [goEditing];
  end;

  if ACol = 2 then begin
    if (goEditing in StringGrid1.Options) then
      StringGrid1.Options := StringGrid1.Options - [goEditing];
  end;

こんな感じでもできるようです.


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82