[[20121223190848]] 『コマンドボタンも自動選択について』(zarigani) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『コマンドボタンも自動選択について』(zarigani)
いくつかのTextBoxに数値を入力した後で、一つ目のコマンドボタンをクリックして、処理結果が正しいか確認します。そのとき、カーソルでコマンドボタンを選択しなくてもすでにコマンドボタンが選択されていて、リターンを押すだけで処理ができます。
続いて、その処理内容が正しいと、二つ目のボタンをクリックして処理を確定するようにプログラムが構成されています。
このとき、初めのコマンドボタンはリターンを押すだけで、マウス操作は必要ないのですが、二つのボタンに自動的に移動しないので、マウスでボタンをクリックしないと処理できません。

前置きが長くなりましたが、一つ目のコマンドボタンでリターンしたら、二つめのコマンドボタンに移って、マウス操作をせずにリターンだけで処理ができるようにしたいのですが。TabIndexの数値をいろいろいじくってみたんですが上手くいきません。
よろしくお願いいたします。


 質問のポイントだけから言えば

 Private Sub CommandButton1_Click()
    '諸々の判定処理
    'もし判定OKで、次のコマンドボタンに移動させたければ
    CommandButton2.SetFocus
 End Sub

 だけど、どうなんだろうね?
 もし、操作者が1つめのコマンドボタンをクリックせずに、2つめのコマンドボタンをクリックしたらどうなる?
 もし、そのような操作も大丈夫なようにロジックがくまれているとすれば、なぜ、2つにわけるのかな?
 現在、2つのコマンドボタンでそれぞれ処理しているものを、1つにすればいいのでは?

 (ぶらっと)

 (ぶらっと)
ありがとうございます。
SetFocusも使ってみたのですが、なぜかエラーを起こしてしまいました。
(なぜエラーが発生したのかわかりませんが。)

しかし、アドバイスに基づいて再度トライしてみたら上手く移動できるみたいです。
ありがとうございました。先に進めてみます。


(ぶらっと)
簡単なフォームを作って試してみたら上手くいったんですが、実際に必要なプログラムで確認してみたらやはりエラーが出ました。

エラーの詳細は次のようなものです。

実行時のエラー'2110'
コントロールが表示されていない、りようできない、またはフォーカスを持てないため、
そのコントロールにフォーカスを移すことはできません。

このコメントはちょっと敷居が高くて、なんのことか分かりません。

テストでは、4つほどのコマンドボタンを準備して、
それがクリックされる毎に、他のボタンに移動できるようSetFocusしてみました。
これは上手くいったんですが、実際のプログラムでは、Frameなんかのなかにボタンが
入っていたりしているので、この辺も悪さしているのかも知れませんが。


 考えられる理由は、実行のタイミングで
 CommandButton2 あるいは、そのボタンが含まれる Frame が
 ・EnabledプロパティがFalse になっている。
 ・Visibleプロパティ が、Falseになっている。
  
 どんな制御が必要なのか、要件もコードも見えないので具体的にはアドバイスできないけど
 SetFocusの前に、 そのコントロール.そのプロパティ = True としてやればいかが?

 (ぶらっと)

 (ぶらっと)さん
 ありがとうございました。
 無事解決することができました。極めて単純なミスでした。


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.