- サマリ: CalcのDialogが表示されているとき、キーボードからのショートカットキーでマクロを実行させる方法
- 環境: Calc
- 状態: 解決
- 投稿者: Suou?
- 投稿日: 2014-05-18 (日) 18:33:32
質問 
いつも、実践的なご教示ありがとうございます。
さて、CALCで実行させるDIALOGに、アクティブ行を一行上へ移動させるコマンドボタンと一行下へ移動させるコマンドボタンを貼り付けてあります。もちろん、マウスでこれらのコマンドボタンをクリックすれば、表の上のアクティブ行を上下に移動させることはできます。しかし、マウスをそこまでもって行かずに、キーボードから直接、上矢印キーなり下矢印キーによって、これらのコマンドボタンに登録したマクロを起動させることができれば、より使い勝手が向上すると思います。
表計算のコマンドバーから、ツール→カストマイズ→キーボードをたどってマクロを登録してみましたが、これはDaialogが起動してない状態での作動になってしまいます。また、ツール→カストマイズ→イベントにも適当なものがありません。ダイアログのコマンドボタンに割り当てるイベントにも適当なものがありません。
結局ダイアログのどこかにマクロを関連付けるしかないのでしょうか?
回答 
- 無理ですね。関係がありませんが、ダイアログはノンモダルということでしょうね。キーイベントはフォーカスのあるドキュメントやウィンドウで処理されます。ドキュメントの場合、キーハンドラーでトラップしてさらにキー操作を消費できます(次の処理系に渡さない)。しかし、ダイアログがドキュメントのサブウィンドウとして開かれていたとしても、ダイアログのコンポーネントにフォーカスがあるとキーハンドラは呼ばれないはずです。また、ダイアログのボタンにフォーカスがある場合、キーイベントは親ウィンドウのダイアログには渡されません。ダイアログのどのコンポーネントにフォーカスがあってもキーイベントを実行させたければ、全てのコンポーネントにキーイベント処理を設定しなければいけません。 -- はにゃ?
感想,コメント,メモ 
- やはり無理ですね。無理な理由がわかりましたので、あきらめがつきます。大変ありがとうございました。 -- suou