困ったこと:
前提として、自分とこのシステムは、フォームを直接Accessで印刷プレビューして、そのまま印刷できるように作ってある。
しかし、リボンに印刷プレビューを閉じるボタンがある一方で、フォームの右に閉じるボタンが表示されているので、後者をユーザーが誤って押してしまうことがある。
すると印刷プレビューを終えるつもりがフォームを閉じることになってしまう。
再度、呼び出したいフォームを探して開くのは面倒・・・。
やりたかったこと:
リボンの印刷プレビューをクリックすると、フォームウィンドウを最大化してプレビューする(ここは簡単、DoCmd.Maximizeで)。
印刷プレビューを閉じると、フォームウィンドウのサイズが元に戻る(ここがわからん)。
難しかったこと:
印刷プレビューを閉じた際のイベントトリガーがAccessにあるのかないのかわからず、調べるのにずいぶん時間がかかった。
以下の達人のブログを拝見し、イベントを追跡する方法があることを発見し、フォームのプロパティの各所にイベントトラップを仕掛けて、調査した。感謝。
■T’sWare イベント徹底活用 1 ~フォームのオープン・クローズ~
できた:
フォームの「レコード移動時」イベントに記述した処理で、目的が達成できることを発見。
具体的には、以下のコードでOK。
Private Sub Form_Current() '印刷プレビューから戻るときにフォームのサイズを変える '■T'sWare イベント徹底活用 1 ~フォームのオープン・クローズ~ 'http://tsware.jp/study/vol5/event_01.htm DoCmd.Restore End Sub