- - PR -
スプレッドのファンクションキー
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-11-04 22:27
お世話になっております。
ただいま、VB.NET,SPREAD for .NET Windows forms Ed ver1.0.3.0 の環境でスプレッドの帳票を作成しております。 フォーム内にボタンを設け、F2が押された時、 そのボタンのクリック処理をするという関数を作成しました。 しかし、スプレッド内では、F2,F3,F4をクリックしてもキーダウン処理が おこなわれなく、F2で処理をすることができません。 スプレッド内でF2,F3,F4を自由につかうためにはどうしたらいいでしょうか。 ご教授おねがいします。 | ||||
|
投稿日時: 2004-11-05 09:09
おはようございます。
VB.NET,SPREAD は使用した事がないので分かりませんが、例えばPanelコントロールを 使用してその中にテキストボックス等を配置した場合は、そのPanelコントロール自体が フォーカスを受取っているかどうか判断出来ればその中でのKeyDownを拾う事が出来ます。 フォームのKeyDownイベントで、 If Me.Panel1.ContainsFocus = True Then End If つまり階層構造になっている1つ上の階層のコントロールがフォーカスを受取っていれば・・・ という事ですね。VB.NET,SPREADも階層構造になっていると思いますのでスプレッド内の 各オブジェクトの1つ上の階層のオブジェクトのフォーカスの状態を見て判断できないでしょうか? 実際にVB.NET,SPREADをみていないので、あくまでも予測ですが・・・。 | ||||
|
投稿日時: 2004-11-05 10:13
お返事ありがとうございます。
「フォームのKeyDownイベントで」とおっしゃりましたが そのKeyDownイベントもひろうことができません。 スプレッド内でのF2,F3,F4はスプレッド特有の機能があり、 KeyDownイベントを受けつけなくなってるみたいです。 これはスプレッドの仕様で、変更できないものなのでしょうか。 | ||||
|
投稿日時: 2004-11-05 10:28
こんにちは。
スプレッドがなくても無理ですか?普通のテキストボックスやボタンのみのフォームでは どうでしょう?KeyPreviewプロパティはTrueになっていますよね? スプレッドの仕様は分かりません。 あとノーマルのDataGridで言わせてもらうと、DataGridでも各セルの中ではKeyDownイベント は拾えませんが、直前にDataGridにフォーカスを移してやると拾うことが出来ます。 | ||||
|
投稿日時: 2004-11-05 10:56
入力マップのカスタマイズでは、解決しませんか? F2キーの動作を無効にする/別の機能にすることができます。 マッピングについては、Spread付属のヘルプに書いてあります。 サンプルコードも掲載されているので、試してみてください。 KeyDownイベントを受け付けないってことはないと思います。 | ||||
|
投稿日時: 2004-11-05 11:55
お返事ありがとうございます。
スプレッドがない場合のフォームではKeyDown処理はなんら問題なく動きます。 KeyPreviewもTrueになっています。 F2,F3,F4以外のキーを押した場合、 KeyDownイベントはスプレッドでもフォームでもひろえます。 しかし、 スプレッドにフォーカスがあたってない場合は フォームのKeyDown処理はF2,F3,F4もひろうことができます。 スプレッド内でのF2,F3,F4のKeyDownイベントだけがひろえないのです。 どうしたらいいでしょうか。 | ||||
|
投稿日時: 2004-11-05 13:52
「入力マップのカスタマイズ」は試されましたか? | ||||
|
投稿日時: 2004-11-05 14:57
お返事ありがとうございます。
メッセージを送るタイミングがかぶっていて トージ。さんのメッセージを見ずおくってしまいました。 すみませんでした。 トージ。さんにいわれたとおり、今、入力マップのカスタマイズを 試してみたところ、うまく操作できるようになりました。 本当にありがとうございました。 |
1