• 締切済み

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での処理方法がありましたらお教え下さい。宜しくお願い致します。

みんなの回答

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

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

TinyPine
質問者

お礼

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

関連するQ&A

  • VB.net 割り込みの禁止

    Borland C-Builder++の内容をVB.net 2010に書き換えて居る者です。 TextBox等の割り込みを一時的に禁止したいのですが、良い方法はありませんでしょうか。 無ければフラグを用いて、フラグが立っている時のみ処理をバイパスさせる事を考えて居ます。 Builder では ComboBox1->OnChange = NULL ; とコーディングする事により、 void __fastcall TForm1::ComboBox1Change(TObject *Sender) { Edit1->Text = ComboBox1->Text; } への割り込みを禁止出来、 ComboBox->OnChange = ComboBox1Change; とコーディングする事により割り込みを再開出来ました。 これを void __fastcall TForm1::ComboBoxChange(TObject *Sender) {     ComboBox1->OnChange = NULL ; Edit1->Text = ComboBox1->Text;     ComboBox->OnChange = ComboBox1Change; } とコーディングする事により、2重割り込みを防止していました。 VBでこの様にイベント割り込みを一時的に禁止にする方法はありますでしょうか。 宜しくご回答下さい。

  • VB.net comboboxの操作で

    下記ソースでiiによってCombobox1の値を変更したいのですが 「ComboBox1.Text =」にすると ComboBox1_SelectedIndexChanged にかかれたプログラムが動いてしまいます。 ComboBox1_SelectedIndexChangedが動かずに ComboBox1に値設定する方法ないでしょうか。 ------------------------------------------------program ComboBox1.Items.Add("みかん") ComboBox1.Items.Add("りんご") ComboBox1.Items.Add("すいか") if ii=1 then ComboBox1.Text = "みかん" if ii=2 then ComboBox1.Text = "りんご" if ii=3 then ComboBox1.Text = "すいか" 環境 VB 2008 express OS Windows XP

  • VB2010 ComboBoxの使い方について、教えてください。

    VB2010 ComboBoxの使い方について、教えてください。 From[デザイン]にて、ComboBoxを配置し、タスクの「項目編集・・・」で項目を設定しました。 項目の内容は、以下の四つ。 AAA BBB CCC DDD イベントが発生すると Private Sub ComboBox_SelectedIndexChanged(....)に入り、この中で Dim index As Integer index = Me.ComboBoxFU.SelectedIndex とすれば、indexの値が変わると踏んでいましたが、値が変わりません。 Webで調べてみましたが、皆ソース上での設定しか書いていないようです。 初期設定での設定方法を教えてください。 以上、よろしくお願いします。

  • comboboxの選択

    こんにちわ、よろしくお願いします。 WinXP VB6.0 oracle10g使用 comboboxとTextBoxと連動したいと思っています。 担当者のデータ コード、名前  1   山田  2   佐藤 3   足立 55   安藤 999 不明 とあるのですが、TextBoxに"3"と入力したら (Text1_LostFocusイベントでやってみました) comboBoxは"安藤"と出るように(選択状態)したいと思っています。 ListIndexでやってみましたが、コードが必ずしも順番に入っている状態ではないので困っています。 (DBからよんでくる時、FORM_LOADイベントでも実行したいです。) よろしくお願いします。

  • ComboBoxの表示について

    VB入門者ですがよろしくお願いします。 2005を使用しているのですが、 ComboBoxのtextの内容を中央に表示したいのですが、 どうしたらよいのでしょうか? (TextBoxの.TextAlignのようなもの) 教えてください。

  • VB6で

    現在、VB5からVB6への移行作業をしています。 VB6でimComboというComboBoxコントロールを使用しているのですが、ある処理が終わると画面が初期化されこのComboBoxが何も選択されていない状態したいのですが上手くいきません。。(Imputman7.0使用) PcCombo.selectindex = -1 や PcCombo.Value ="" や PcCombo.Text = VbNullString や PcCombo.Text ="" など試行錯誤してみたのですがダメです。。 分かる方よろしくお願いします。

  • vb2005のcomboboxについて

    <form name="frm1"> <select name="permit"> <option value="0">いいよ</option> <option value="3">駄目!</option> </select> <input type="button" value="OKv" onClick='alert(frm1.permit.value)'> <input type="button" value="OKt" onClick='alert(frm1.permit.text)'> </form> Web上でこういうセレクトボックスがあったとして、画面上では「駄目!」が選択されているとします。 ここで「OKv」ボタンをクリックすると、その セレクトボックスpermit のvalueである"3"が表示されます。 ここで「OKt」ボタンをクリックすると、その セレクトボックスpermit のtextである"駄目!"が表示されます。 ウェブ上ではたったこれだけのことなんですが。 が、これをvb.net(vb 2005)でやろうとするとどうするのかわかりません・・。 comboboxのどこのプロパティに何をどうセットするのでしょうか。 ちょっと調べてみるとDataSource をセットして、DisplayMember がどうとか出てきましたが、そういうことをしないといけないのでしょうか。 こちらはDataSource も何もなく、手動で(コード上で)valueとtextを設定・取得したいだけなんですけど・・。 何か凄い間違ってるような気もするのですが・・そうでしたらその旨ご指摘くださいますようお願いします。

  • Comboboxについて

    コンボボックスを利用して、項目を選択できるようにしようと考えています。 検討課題は2つ。 1、コンボボックスでリスト以外の文字は入力ができないようにする。 2、前回選択した内容を次回起動時に設定する。 と言うことです。 1について DropDownStyleを「DropDownList」にすることで入力は出来なくなりましたが、 初期表示が空白になってしまいます。 初期表示でリストの先頭を表示させることはできるでしょうか? 2について 同様だと思うのですが、リストの表示を制御することは出来るのでしょうか? DropDownStyleを「DropDown」にするとTextを一致させることで実現できましたが、「DropDownList」ではTextではできないみたい。 ご存知の方がいらっしゃいましたら教えてください。 よろしくお願いいたします。 VB.NET 2002使用

  • Comboboxの選択値をパラメータにしたい

    VS2010でComboboxを作成し、 選択されたパラメータを別のファンクションで利用したい。 プログラムの内容はPC上で認識されているCOMポートを Comboboxにリストアップ、 ユーザが選択したCOMポートを利用するような流れです。 現状: Private Sub GetSerialPortNames() With SP_Select .Text = "None" .Items.Clear() For Each sp As String In My.Computer.Ports.SerialPortNames .Items.Add(sp) Next .EndUpdate() .SelectedIndex = 0 End With End Sub 上記コードでデフォルトはNoneと表示され、 COMポートデバイスが接続された際に、 自動的にComboboxにポートの名前が表示されます。 さらに選択したCOMポートを変数に代入して使うには、 どうしたらいいでしょうか。(どう書いたらいいでしょうか) 初歩的な質問ですが、どなたが教えて下さい。

  • ComboBoxについておしえてください。

    1.ComboBox1.Clear 2.ComboBox1.AddItem "あああ" ComboBox1.AddItem "いいい" ComboBox1.AddItem "ううう" コーディングしたのですが、text部分をクリックすると  入力でき内容訂正できてしまうのですが?  上記内容で あああ・いいい・うううの選択しかできないように  したいのですが、どうすればいいのか教えてください。  できれば、下向きの三角印のとこをクリックすると       あああ・いいい・うううの選択画面が表示して       選択できますよね。       これと同じようにtext部分をクリックしても       おなじようにしたいのですが  よろしくお願いします。