喫茶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


[4898] Re5:TStringGridにTEditを表示返信 削除
2011/6/19 (日) 07:01:42 Mr.XRAY
> http://mrxray.on.coocan.jp/Delphi/zipothers/StringGrid_TEdit.zip

ちょっとだけ修正しました.
矢印キーの移動も追加してみました.
これって,全セルTEditでもいいような気がしてきました.(^^;


[4899] Re6:TStringGridにTEditを表示返信 削除
2011/6/19 (日) 11:03:53 Sara
▼ Mr.XRAYさん

こんにちは Saraです。

> > http://mrxray.on.coocan.jp/Delphi/zipothers/StringGrid_TEdit.zip
>
> ちょっとだけ修正しました.
> 矢印キーの移動も追加してみました.
> これって,全セルTEditでもいいような気がしてきました.(^^;


そうですね、私もそんな気がしてきています。(^^;
(自分のやりたいことが、ほぼ実現できてきました)

Syakeさん TInplaceEditより全然良いです。
さすが >TStringGrid使いといえば私です。(^_^)V
です。(^^)V

ところで、マスター、上記のURLのデモ、矢印で
Editの表示列からEditの表示されない列移動すると、
表示されない列の内容が書き換わりますが(^^;

[4901] Re7:TStringGridにTEditを表示返信 削除
2011/6/19 (日) 14:49:45 Mr.XRAY
▼ Saraさん

> ところで、マスター、上記のURLのデモ、矢印で
> Editの表示列からEditの表示されない列移動すると、
> 表示されない列の内容が書き換わりますが(^^;


仕様です.
スミマセン.ダウンロードされた方,修正してご利用ください.




[4902] Re8:TStringGridにTEditを表示返信 削除
2011/6/19 (日) 21:40:47 Sara
こんばんは、Saraです。

> DrawCellでEditにフォーカスを与えるときに、マウスの位置が
> StringGrid上にあるかどうかを確認しないと、StringGrid外に
> ボタン等を配置したときに、ボタン等のイベントが起きないです。
> (ボタンを連射しているとたまにイベントが起きますが(^^; )
>
> なので、こんな感じで・・・(もっと良い方法があるかな・・・ Syakeさん)


と、書きましたが、StringGrid1.Focusedを調べるだけで良いですね・・・(^^;


[4903] Re9:TStringGridにTEditを表示返信 削除
2011/6/19 (日) 22:22:54 Mr.XRAY
▼ Saraさん

> と、書きましたが、StringGrid1.Focusedを調べるだけで良いですね・・・(^^;

あっ,なるほど.
前に業務アプリでコンボボックスで選択する方式のを作成したのですが,
その時は,タブキーに移動,マウスホイールで,コンボボックスのリストが
変化しないようにしたりしたのですが,コードがどこに...

でも,こういう情報欲しいですね.
そうすれば,サンプルプログラム集のコードもいろいろ修正して提供できる
んですが...


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