Page 59 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼フォームフッターへのTABでの移動 山プ〜 02/10/1(火) 10:37 ┗Re:フォームフッターへのTABでの移動 こうちゃん 02/10/1(火) 11:24 ┗Re:フォームフッターへのTABでの移動 山プ〜 02/10/1(火) 11:39 ┗フォームフッターからのTABでの移動 山プ〜 02/10/1(火) 12:04 ┗Re:フォームフッターからのTABでの移動 yu-ji 02/10/7(月) 13:29 ┗Re:フォームフッターからのTABでの移動 山プ〜 02/10/8(火) 17:14 ┗Re:フォームフッターからのTABでの移動 山プ〜 02/10/8(火) 17:44 ┗GoToRecordのacFirstでうまくいかない? yu-ji 02/10/8(火) 18:16 ┗Re:GoToRecordのacFirstでうまくいかない? 山プ〜 02/10/9(水) 13:54 ┗Re:GoToRecordのacFirstでうまくいかない? yu-ji 02/10/9(水) 16:33 ─────────────────────────────────────── ■題名 : フォームフッターへのTABでの移動 ■名前 : 山プ〜 ■日付 : 02/10/1(火) 10:37 -------------------------------------------------------------------------
いつもお世話になっております。質問ばかりで恐縮ですが・・。 表形式のフォームを作成してテーブルの内容をフォームの「詳細」に表示させています。 そして、「フォームフッター」にいくつかボタンを配置しています。 画面上のTABの移動順を設定したのですが、「詳細」だけ、「フォームフッター」だけのTAB順は設定できるのですが、「詳細」の最後の項目の次にTABボタンで「フォームフッター」にフォーカスが飛んでほしいのですが、やり方がわかりません。逆に、「フォームフッター」のボタンの最後の次は「詳細」の項目にとんでほしいのですが・・。 何か方法があるようでしたら、教えていただきたいと思います。 よろしくお願いします。 |
山プ〜 さん、こんにちは > いつもお世話になっております。質問ばかりで恐縮ですが・・。 >表形式のフォームを作成してテーブルの内容をフォームの「詳細」に表示させています。 >そして、「フォームフッター」にいくつかボタンを配置しています。 >画面上のTABの移動順を設定したのですが、「詳細」だけ、「フォームフッター」だけのTAB順は設定できるのですが、「詳細」の最後の項目の次にTABボタンで「フォームフッター」にフォーカスが飛んでほしいのですが、やり方がわかりません。逆に、「フォームフッター」のボタンの最後の次は「詳細」の項目にとんでほしいのですが・・。 >何か方法があるようでしたら、教えていただきたいと思います。 >よろしくお願いします。 「詳細」の最後の項目のLostFocusイベントで、「フォームフッター」の最初の項目にフォーカスするのではいけませんか? ただ、これだとShift+Tabとかでも、「フォームフッター」側に移動しちゃいますが^^; Private Sub テキスト2_LostFocus() テキスト4.SetFocus End Sub |
こうちゃん さん、早速のお返事ありがとうございます。 > >「詳細」の最後の項目のLostFocusイベントで、「フォームフッター」の最初の項目にフォーカスするのではいけませんか? >ただ、これだとShift+Tabとかでも、「フォームフッター」側に移動しちゃいますが^^; > >Private Sub テキスト2_LostFocus() > テキスト4.SetFocus >End Sub ただ、フォームは表形式ですので、対象レコードが複数あると数行表示されます。 その最終行で移動したいので上記の例だと1行目の最後の項目でフォーカスがフッターの項目に移動してしまうと思うのですが・・。 とりあえず、試してみます。ありがとうございました。 |
>ただ、フォームは表形式ですので、対象レコードが複数あると数行表示されます。 >その最終行で移動したいので上記の例だと1行目の最後の項目でフォーカスがフッターの項目に移動してしまうと思うのですが・・。 >とりあえず、試してみます。ありがとうございました。 表形式の場合、最終行の項目にはNullが入ってくるので、それで判別の材料として最終行でフッターの項目に移動することはできました。しかし、フッターからTABで戻ろうとすると、最終行から移動したため、最終行に戻ってしまいます。先頭行の先頭項目に戻す方法はないでしょうか?たびたびの質問で申し訳ありませんが、よろしくお願いします。 |
こんにちは。 ▼山プ〜 さん: >>ただ、フォームは表形式ですので、対象レコードが複数あると数行表示されます。 >>その最終行で移動したいので上記の例だと1行目の最後の項目でフォーカスがフッターの項目に移動してしまうと思うのですが・・。 >>とりあえず、試してみます。ありがとうございました。 > >表形式の場合、最終行の項目にはNullが入ってくるので、それで判別の材料 >として最終行でフッターの項目に移動することはできました。しかし、 >フッターからTABで戻ろうとすると、最終行から移動したため、最終行に >戻ってしまいます。先頭行の先頭項目に戻す方法はないでしょうか?たびたび >の質問で申し訳ありませんが、よろしくお願いします。 最終行かどうかのチェックは If Me.RecordsetClone.RecordCount = CurrentRecord Then こいつで、できるはずです。 先頭行に戻すのは、 DoCmd.GoToRecord acDataForm, "フォーム名", acFirst で、いけます。 |
▼yu-ji さん: 回答ありがとうございます。 > >先頭行に戻すのは、 > >DoCmd.GoToRecord acDataForm, "フォーム名", acFirst > >で、いけます。 上記コマンドで実行してみたところ、フォームフッター内の 最初のボタンにフォーカスが移動してしまいました。 私が希望する動きは、表形式のフォームの「詳細」内の先頭レコードに フォームフッターのボタンからTABで移動することですので どうもうまくいかないようです。 お手数をおかけしますが、他の方法、もしくは上記に追加するコード等 ありましたら教えていただきたいと思います。 よろしくお願いします。 |
>>先頭行に戻すのは、 >> >>DoCmd.GoToRecord acDataForm, "フォーム名", acFirst >> >>で、いけます。 >上記コマンドで実行してみたところ、フォームフッター内の >最初のボタンにフォーカスが移動してしまいました。 >私が希望する動きは、表形式のフォームの「詳細」内の先頭レコードに >フォームフッターのボタンからTABで移動することですので >どうもうまくいかないようです。 >お手数をおかけしますが、他の方法、もしくは上記に追加するコード等 >ありましたら教えていただきたいと思います。 >よろしくお願いします。 上記コードをもとにいろいろ試してみたらなんとかできるようになりました。 ありがとうございました。 |
▼山プ〜 さん: >>>先頭行に戻すのは、 >>> >>>DoCmd.GoToRecord acDataForm, "フォーム名", acFirst >>> >>>で、いけます。 >>上記コマンドで実行してみたところ、フォームフッター内の >>最初のボタンにフォーカスが移動してしまいました。 >>私が希望する動きは、表形式のフォームの「詳細」内の先頭レコードに >>フォームフッターのボタンからTABで移動することですので >>どうもうまくいかないようです。 GoToRecordのacFirstで、そんな動きをするはずがないと思うのですが。。。。 こちらで試しても、やはりちゃんと詳細の先頭レコードに飛びますが。。。 >上記コードをもとにいろいろ試してみたらなんとかできるようになりました。 >ありがとうございました。 自分は、こういう質問掲示板は、他の方の質問とその解決方法を、他人が見れる 為に存在していると思ってます。 なので、自己解決した場合も、他の方の参考になる場合があると思うので、解決 方法を記述していただけるとありがたいです。 #とりあえずこの件は、自分が参考にしたいので(笑) |
>自分は、こういう質問掲示板は、他の方の質問とその解決方法を、他人が見れる >為に存在していると思ってます。 >なので、自己解決した場合も、他の方の参考になる場合があると思うので、解決 >方法を記述していただけるとありがたいです。 >#とりあえずこの件は、自分が参考にしたいので(笑) 参考までにつたないコードですが記載します。 「コマンド18」が「詳細」内のボタンです。 「コマンド16、17」が「フォームフッター」のボタンです。 Private Sub コマンド18_Enter() Dim form1 As Form Set form1 = Forms![ファイル名] If IsNull(form1!buka_code) Then '移動したレコードにデータがあるかのチェック If flag1 = 1 Then flag1 = 0 DoCmd.GoToRecord acDataForm, "ファイル名", acFirst End If End If End Sub Private Sub コマンド18_LostFocus() Dim form1 As Form Set form1 = Forms![ファイル名] If IsNull(form1!buka_code) Then コマンド16.SetFocus 'フォームフッターのボタンへのフォーカスの移動 Else flag1 = 0 End If End Sub Private Sub コマンド17_LostFocus() 'フォームフッターのボタン On Error GoTo Err_process flag1 = 1 コマンド18.SetFocus '実行するとこの行のsetfocusでエラーとなり Exit_function: '終了すると先頭行にフォーカスが行くので、エラー処理を Exit Sub '作成し、エラー「2110」の時何もしないようにしてます。 Err_process: Select Case Err.Number Case 2110 Case Else MsgBox Err.Description Resume Exit_function End Select End Sub エラーが出ているのに強引に終了させているのできれいなやり方ではありませんが 一応これで問題なくTABが移動するようになりました。 ちなみにAccessはOfficeXPのものです。 以上、参考になりましたでしょうか。 では。 |
LostFocusを使われているんですね(^^; デバッグ時にコードの処理の流れを追えないから不便じゃないですか? Exitの方が使いやすいと思いますが。 で。エラーの確認はできましたが、エラーの原因はよく分かりませんでした。 が、以下のコードのようではエラーは出ませんでした。 #自分が使ってるのはAccess2000ですが。 エラーが気になるのであれば、試してみてはいかがですか? #既に解決されているので、わざわざ試す必要がないということであれば #流してもらって結構です。 *************** Private Sub コマンド17_Exit(Cancel As Integer) コマンド18.SetFocus DoCmd.GoToRecord acDataForm, "ファイル名", acFirst End Sub Private Sub コマンド18_Exit(Cancel As Integer) If Me.RecordsetClone.RecordCount = CurrentRecord Then コマンド16.SetFocus End If End Sub |