コンボボックスへの初期値の入力について!

解決


taka  2005-11-18 03:37:16  No: 92743

VB5.0

コンボボックスで設定はドロップダウンリストで、コンボボックスは
アクセスのテーブルリストより参照しております

combo1
combo2
combo3

combo1  combo2      combo3
01哺乳類→01人間→01黒人
    →02白人        

  →02鯨  →03ザトウ鯨
    →04ミンククジラ

        →03猿

02鳥類  →04カラス
        →05インコ
        →06スズメ

03両生類→07トカゲ
        →08イモリ

上記の様にレベルによって、選択出来るようにしようと考えております。
その際、combo3を選んだ際に
combo2、combo1を自動的にコンボボックスの初期値を設定したい場合は、
どの様にしたらよいでしょうか??

値の取得は出来たのですが、combo1.text=****
を入れても出来ません。何卒ご教授お願い致します。


みい  2005-11-18 04:23:39  No: 92744

ListIndexを0にすると一覧の最初の項目を表示します。


我龍院忠太  2005-11-18 18:23:05  No: 92745

人種差別は良くないよね,こんなソフトアメリカで出したら大変なことに・・・
それと分類がおかしいような、鯨の並びはカラス、トカゲでは?
カラスの下に深山カラスとか海カラスとか、トカゲの下にコモドトカガとかオオトカゲが。
まあ分類が出来たとして、各項目に親子関係をつける必要が有るのでは、
鯨の親は哺乳類、ザトウ鯨の親は鯨とか、それで項目がクリックされたら、
上のComboBoxのテキストはクリックされた項目の親の項目をセットして、
下のComboBoxは選択された項目を親に持つ子供の先頭をテキストにセットするとか。


通ってみた  2005-11-18 18:27:56  No: 92746

やらんとしていることは何となくわかりますが、これならコンボボックスじゃなくてツリービューの方がいいのではないかと

それか、コンボボックスを親、子、孫にわけて3つ用意し、親を選んだ時点で子の内容を設定し、子を選んだら孫の内容を…とした方がいい気がします


通ってみた  2005-11-18 22:33:23  No: 92747

あ、ゴメンなさい
既に親、子、孫のコンボボックスを用意しておく仕組みになってたんですね

でしたら、上で書いた
>>親を選んだ時点で子の内容を設定し、子を選んだら孫の内容を…とした方がいい気がします
でいいかと思います


taka  2005-11-19 19:55:34  No: 92748

combo.ListIndex = combo.NewIndex
を入れる事によって無事、標準値を入れる事が出来ました。

ただ、コンボ1,2,3は、それぞ、れコンボ1_Clickにしている為、
ListIndexで標準値を設定してしまうと、初期値が入ったコンボのClickの処理が
走ってしまいます。

この様な場合、表示のみをして、clickの処理をしない方法はありますでしょうか??

説明が分かりにくいかとは思いますが、何卒よろしくお願い致します

PS、例題


taka  2005-11-19 19:56:44  No: 92749

ps.一部、例題で人種差別とご指摘されましたが、
確かに、そうとられて当然の表現でした。申し訳ございませんでした。


通ってみた  2005-11-19 21:27:15  No: 92750

Form_Loadで初期設定をしているのなら、

Private Sub Combo1_Click()

If Me.Visible = False Then Exit Sub

以下処理

End Sub

としておけば、初期設定時にはCombo1のクリックイベントは発生しないと思います


taka  2005-11-23 01:42:59  No: 92751

上記

If Me.Visible = False Then Exit Sub

では、Visibleは通常はtrueですので、常にexit  subしてしまい、
目的とは異なるのですが・・・

vb初心者の為、申し訳ございません。


いな  2005-11-23 02:01:22  No: 92752

If Me.Visible = False Then Exit Sub

If Me.Visible = False Then
   Exit Sub
End If

と同義です


taka  2005-11-23 02:23:43  No: 92753

いな様、早速のご回答ありがとうございます!

If Me.Visible = False Then
   Exit Sub
End If

は存じておりますが、Visible は実行時にコンボボックス自体を隠してしまうプロパティですよね??
何故、上記の中にプログラムを書く事によって、クリックイベントが発生しないのか、理解が出来ないのです><

よろしくお願い致します。


いな  2005-11-23 02:33:16  No: 92754

え〜と解説します。
FormのLoadが修了されていない。
⇒各コントロールは、表示されていない。
⇒表示されていない。つまりVisible=False

FormのLoadが修了する。
⇒各コントロールは、表示されている。
⇒表示いる。つまりVisible=True

よって
FormのLoadが完了しない ⇒ Visible=False
FormのLoadが完了       ⇒ Visible=True


いな  2005-11-23 02:36:45  No: 92755

>コンボボックス自体を隠してしまうプロパティ

隠してしまうプロパティというよりは、

隠れているときにはFalse
表示されているときにはTrueを返すプロパティと考えると分かるかも


taka  2005-11-23 03:19:39  No: 92756

いな様、早速のご回答ありがとうございます!

Form  load  の中ではtimerを走らす処理を書いていますので、
早速初期値を  Visible=False にし、timer の中でVisible=trueにしました。

しかし、何故これでクリックイベントが発生しなくなるのでしょうか??
何度考えても理解出来ないのです。


通ってみた  2005-11-23 03:47:15  No: 92757

1.Visible = False
2.初期値セット
3.クリックイベント発生、
    しかし、Visible = Falseのため Exit Sub
4.Timerの中でVisible = True
5.Form Load 完了

ってことですが、どういった点で腑に落ちない?


taka  2005-11-23 18:26:30  No: 92758

1.Visible = False
2.初期値セット
3.クリックイベント発生、
    しかし、Visible = Falseのため Exit Sub
4.Timerの中でVisible = True
5.Form Load 完了

上記は確かに理解出来るのですが、
Form  load完了後、通常にコンボを選択する事も出来ます。
ここまではOKなのですが、

例えば、
combo1  combo2      combo3
01哺乳類→01人間→01黒人

combo3を選択した場合には、自動的にコンボ1、2には
哺乳類、人間と初期値が入る様にしたいのですが、この場合に、
初期値が入った瞬間にクリックイベントが発生してしまいます。

その際、コンボ1のクリックでは、01の哺乳類が選択された場合は
コンボ2はそれに対応するコンボのみを表示させたいと思っております。

この場合もクリックイベントが発生してしまい、無限のループに入ってしまいます><

勉強不足で本当に申し訳ございません。


みい  2005-11-23 18:40:24  No: 92759

素直にフラグ変数を用意しておいて
・初期値を入れる前にTRUE
・初期値を入れ終わった後にFALSE
・クリックイベント先頭でフラグ変数がTRUEだったら処理せずに抜ける
では駄目?


taka  2005-11-23 23:17:08  No: 92760

皆様、丁寧なご回答ありがとうございました。
みい様にご指導頂いた方法で、無事問題が解決致しました。

フラグ変数、今後使う機会が増えそうです。
また、今回初めてBBSを使用させて頂いたのですが、
皆様のレスの速さにはビックリ致しました。

本当にありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加