喫茶XRAYトップページ

[スレッド全体
]

[4875] TStringGridでの日本語入力返信 削除
2011/6/14 (火) 23:14:23 Sara
皆さんこんにちは、Saraです。

最近、TStringGridを使ったプログラムを作っているのですが、
日本語入力で、ちょっと納得いかないところがありまして・・・

お知恵を拝借できれば幸いです。

問題点:
例えば、1列目が日本語入力On、2列目がOff、3列目がOnという
StringGridを作ったとして、OnGetEditTextにてImeMode(imOpen)等を
使って、IMEを制御するとします。

このとき、1列目に入力するにあたりF2キーを押すなどして編集モード
にすれば、問題なく日本語入力できますが、いきなり日本語を入力しようと
すると、最初に押したキーだけが半角文字で入力されてしまいます。

そこで、OnSelectCellにて、
     keybd_event(VK_F2, 0, 0, 0);
     keybd_event(VK_F2, 0, KEYEVENTF_KEYUP, 0);
として、擬似的にF2キーを押して編集モードにすると、とりあえず日本語
入力が期待したとおりに動作するのですが、セルを移動すると直ぐに編集モード
になってしまい、左右の矢印キーにてセルの移動ができなくなります。
(できるようにすると、文字列の編集に矢印キーが使えなくなる)

(そもそも、やっていることが間違ってますかね・・・(^^; )

なにか妙手はないでしょうか?

[4881] Re:TStringGridでの日本語入力返信 削除
2011/6/15 (水) 15:30:44 Syake
▼ Saraさん
こんにちは

TStringGrid使いといえば私です。(^_^)V

・・・冗談です。

私はCellをそのまま編集するのは面倒なので、適時TEditなどオーバーラップ
!?させて使ってます。

まあ、見た目はStringGridを直接編集しているのと変わりませんのでいかがで
しょうか?

てなとこで、一応問題点のような問題は起きませんが、完全に問題点の回答に
はなっていません。m(_ _)m

[4882] TStringGridにTEditを表示返信 削除
2011/6/15 (水) 16:31:06 Mr.XRAY
▼ Syakeさん,ってば.

> TStringGrid使いといえば私です。(^_^)V

これは大変失礼しました!!

> 私はCellをそのまま編集するのは面倒なので、適時TEditなどオーバーラップ
> !?させて使ってます。


なるほど,なるほど.
TEditにあらかじめIMEの設定をしておけばいいということですね.

そういえば,最近記事にした
[051_セルの結合とZColorStringGridコンポ]のZColorStringGridは
TMemoをオーバーラップして使用しています.
TMemoだと複数行の入力も,他の制御も可能ですから...
うまいことを考えるもんだと思っていたら,やはり同じような方が
いらっしゃるということですね.

http://mrxray.on.coocan.jp/Delphi/plSamples/051_ZColorStringGridCompo.htm


[4883] Re:TStringGridにTEditを表示返信 削除
2011/6/15 (水) 16:36:40 Mr.XRAY
参考までに,
[15_複数行入力できるStringGrid]
では,インプレースエディタそのものを複数行対応に設定して表示する
方式です.

http://mrxray.on.coocan.jp/Delphi/plSamples/050_TStringGrid_OnDrawCell.htm#15


[4884] Re2:TStringGridにTEditを表示返信 削除
2011/6/15 (水) 17:52:01 Sara
▼ Mr.XRAYさん
▼ Syakeさん
こんにちは


>私はCellをそのまま編集するのは面倒なので、適時TEditなどオーバーラップ
>!?させて使ってます。

ん? これって、InplaceEditを使うのと何が違うのでしょうか?
確かにEditの各種イベントが記述しやすいけど・・まだ何かあります?

なにか、サンプルをいただけると、イメージがしやすいのですが(^^;



[4885] Re3:TStringGridにTEditを表示返信 削除
2011/6/15 (水) 18:47:21 Syake
▼ Saraさん

> 確かにEditの各種イベントが記述しやすいけど・・まだ何かあります?

何もありません。
身も蓋もなくてすいません。m(_ _)m
TEdit以外も使うもので、慣れてしまいました。

 

[4886] Re4:TStringGridにTEditを表示返信 削除
2011/6/15 (水) 19:07:02 Mr.XRAY
▼ Syakeさん
▼ Saraさん

> 何もありません。

いや,結構いろいろTEditで設定できるのでいいと思いますです.
サンプル作ってみました.
矢印キー等でのセル移動は実装していません.
必要であれば,TEditのOnKeyPressとかOnKeyDownに書いてくださいませ.
Rectの位置と大きさも調整が必要かも...

http://mrxray.on.coocan.jp/Delphi/zipothers/StringGrid_TEdit.zip


[4887] Re5:TStringGridにTEditを表示返信 削除
2011/6/15 (水) 19:37:06 Mr.XRAY
> サンプル作ってみました.

あぅ,ゴメンなさい.

> TStringGrid使いといえば私です。(^_^)V

と豪語するSyakeさんを差し置いて,大変失礼しました.


[4888] Re6:TStringGridにTEditを表示返信 削除
2011/6/15 (水) 22:18:39 Sara
▼ Mr.XRAYさん
▼ Syakeさん
こんばんは


▼ Syakeさん
>TEdit以外も使うもので、慣れてしまいました。
あぁ、なるほど、それもメリットの1つですね。
しかも、結構重要かも・・・(^^; InplaceEditのことしか頭になかった。

▼ Mr.XRAYさん
> サンプル作ってみました.
仕事が速いですねぇ (・o・)吃驚

サンプル確認しました。なるほど・・・

ちょっと、いじり倒してみます。(^^;

ありがとうございました。m(_ _)m

[4889] Re7:TStringGridにTEditを表示返信 削除
2011/6/15 (水) 22:54:41 Mr.XRAY
> 仕事が速いですねぇ (・o・)吃驚

いえいえ,最近UPしたStringGridのサンプルにひな形がありますからね.
手間は大してかかりません.
それよりも,TEditを使うとはね.
マルチライン(複数行)入力ならTMemoという頭はあったのですが.
これも,Saraさんが話題を提供してくれたおかげですね.
サンクスです.

ネットで,編集中のセルの背景を変更したいというのがあったので,
サンプルを作成したのですが,TEditかTMemo使った方が柔軟性はある
ような気がします.


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