OOobbs2/92
質問
日付フィールドの値をセルに書き込むマクロを作成し、テキストが変更された時に実行されるようにしています 日付フィールドをキーボードから編集するとエラーになってしまいます(ありえない日付を入力したばあい) ドロップダウンのカレンダーのみを有効にし、キーボードからの編集を無効にすることは出来ないでしょうか? ご存知の方 よろしくお願いいたします 回答
日付フィールドの「フォーカスを得たとき」および「フォーカスを失ったとき」のイベントにマクロを割り当てます。 FocusGained をフォーカスを得たときに、FocusLost をフォーカスを失ったときに割り当てます。 Global oKeyHandler As Object Sub FocusGained If IsNull(oKeyHandler) Then oKeyHandler = CreateUnoListener( _ "KeyHandler_","com.sun.star.awt.XKeyHandler") End If GetController.addKeyHandler(oKeyHandler) End Sub Sub FoculLost GetController.removeKeyHandler(oKeyHandler) End Sub Function GetController() GetController = ThisComponent.getCurrentController() End Function Function KeyHandler_keyPressed( oEv ) KeyHandler_keyPressed = True End Function Function KeyHandler_keyReleased( oEv ) KeyHandler_keyReleased = False End Function Sub KeyHandler_disposing( oEv ) End Sub 日付フィールドがフォーカスを得たとき、キーハンドラを作成してハンドラをドキュメントのコントローラに割り当てます。そして、フォーカスを失ったときにキーハンドラの割り当てを解除します。 キーハンドラはキーが押されたときの操作を次のハンドラに送らないように返り値を True にします。 上記のように設定すればフィールド上でのキー操作が一切無効になり、ドロップダウンボタンもしくはスピンボタンでの操作のみしかできなくなります。
感想,コメント,メモ
|