こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

VB.2010 ComboBox 項目選択

Builder C++ではかなりのプログラムを作成していますが、拠点でプログラムを変更出来る様にVBでプログラムを作成し直しているVBに関してはほぼ初心者です。

VBでComboBoxを使用して内容を選択させようとして居ます。
プログラムの最初でComboBoxのTextに初期値(前回選択値)を設定して居ます。

ComboBoxで選択された内容はComboBoxの内容が変更された時に次回プログラム実行時の初期表示の為にiniファイルに書き込みをして居ます。

問題はプログラムの最初に初期値を書き込んだ時にもComboBoxの内容が変更される為、内容変更の割り込みが入り、iniファイルの書き込みルーチンが動作してしまう事です。

ComboBoxのTextの書き込の時に割り込みをしなくて、選択をした時のみ割り込みが発生する割り込みがあると良いのですが、調べた範囲では無い様でした。

Builder C++ではMouseUPイベントの割り込みを使って同じ機能を実現させたのですが、VBのMouseUpイベントでは一つ前に選択された内容しか入って来て居ない様です。

MouseUpのイベント割り込み先には以下のコーディングをして居ます。

Private Sub ComboBox1_MouseUp(ByVal sender・・・・・
Label1.Text = ComboBox1->Text
End Sub

しかし、これだと選択した時は前回選択された内容が表示されてしまいます。
当然

Private Sub ComboBox1_SelectedIndexChanged(ByVal sender ・・・
Label1.Text = ComboBox1->Text
End Sub

の場合は選択された内容が表示されます。

双方共、実行後のComboBox自体の表示内容は選択されたものになって居ます。

MouseUpのイベントの時にも選択された内容が表示されれば、このイベントでは
ComboBox1->Text 初期値を設定した時はイベントが発生しないので都合が良いのですが、一つ前に選択された内容しか表示されません。

MouseUpの時には未だ内部処理が終了していないので新しい内容が表示出来ないのでしょうか。
Builder C++ には Application->ProcessMessages()と言う、他のタスクを先に実行させる関数がありますが、多分VBにもその様な関数があると思いますので、それを挿入すれば最新の状態を入手できるものでしょうか。

上記目的を達成出来る方法はありますでしょうか。

無ければフラグを使用して、ComboBox1->Text に初期値を設定した時には割り込み先でiniファイルの書き込みをしない様にプログラムする予定です。

当然、初期値を表示して居るのですから初期値設定時に再度iniファイルに書き込みがあっても問題は無いのですが、実際には動作していけないプログラムを書きますので、初期値書き込み時には割り込みが無い様にしたいのです。

VBでの処理方法がありましたらお教え下さい。宜しくお願い致します。

投稿日時 - 2013-04-20 20:06:51

QNo.8051945

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

初期状態設定中のフラグを立て、その間の各オブジェクトのイベントをキャンセルさせる。
初期状態設定が終わったら、フラグをおろして各オブジェクトのイベントを有効にする。

FormのTagでも利用すればよさそう。

投稿日時 - 2013-04-20 20:36:07

お礼

ご回答ありがとうございます。

ご回答頂きました方法は質問文にも記載してありますが、他に方法が無ければその方法を使用しようと考えております。
ただ、C++Builderでイベントの割り込み禁止等が出来たので、VBでもその様な制御が出来ないか知りたくて質問させて頂きました。

今まで他の回答が無い事を考えると、VBではこの方法しかないのでしょうね。

ありがとう御座いました。

投稿日時 - 2013-04-21 08:43:41

あなたにオススメの質問