過去の桐井戸端BBS (桐ver.9)
24710 コンボボックスで次の項目へいったら前の項目で選んだもの以外のものが表示されるよう絞り込みをしたい かおり 2004/02/10-18:34
フォームに3つのコンボボックス@ABがあります。
(選択肢はA、B、C、D、Eの5項目を値リストで設定しています。)

@は第1希望、Aは第2希望、Bは第3希望として、
もし@でAを選択したらAではA以外のアルファベットを、
同じようにBでは@A以外のアルファベットを表示したいのです。

このような事は可能でしょうか?

どなたかご教示をお願い致します。


24735 コンボリストの選択値の変更 佐田 守弘 2004/02/11-00:03
記事番号24710へのコメント
かおりさん
可能だと思いますが、試した事はありません。

コンボボックスのリスト(コンボリスト)の選択枝は、その属性で設定されています。
この属性は、「オブジェクト操作 設定」コマンドで変更できます。
A〜Eの5つの選択枝を設定する場合には、以下の通りです。

 オブジェクト操作 設定 ハンドル=@コンボリスト_nn (オブジェクト名は異なる)
      ,選択値リスト="""A"",""B"",""C"",""D"",""E"""

つまり、コンボボックス@の入力後イベントを使って、Aのコンボリストの
選択枝を設定すれば良いわけです。
もう少し詳しく言えば、@の選択値が何であるかによってケースコマンドの中で、
@の選択値毎に、Aの選択値を設定します。
要するに、以下の様になります。
=============================================
ケース開始
 ケース (&第1希望="A")
  オブジェクト操作 設定 ハンドル=@コンボリスト_nn
       ,選択値リスト="""B"",""C"",""D"",""E"""
 ケース (&第1希望="B")
   (同様に行う)
ケース終了
=============================================

但し、実際には第3希望を先に入力し、次に第1希望、最後に第1希望と入力する生徒もいるかも知れません。
そこまでを考えて処理すると、かなり複雑な設定になろうかと思います。
また一度入力した後に、取り消しを行う場合も考慮する必要があるかも知れません。
どこまで行うべきかは、考える必要があるでしょう。

いずれにしてもイベントは、教えた通りをコピーして使えるものではありませんので、
そちらの実際のフォームの上で作る必要があります。

佐田守弘(KS-00119)
24738 Re:コンボリストの選択値の変更 かおり 2004/02/11-09:33
記事番号24735へのコメント
佐田さん

ご教示頂きありがとうございます。

しかしかなり初心者としては佐田さんのご指示の中にも?な部分があります・・汗

まず3つのコンボボックスの設定は、プロパティから値リストにし、
値集合ソースをそれぞれABCDEと設定しまっても良いのでしょうか?
その上で、佐田さんご指示のように、コンボ@の入力後処理(更新後処理で良いですか?)で、
設定すれば良いのでしょうか?
何しろ初心者なものでわからないことだらけです。泣

また、ケースと言うのはselect caseのことでしょうか?

何から何まで質問してしまって申し訳ないです。

またご回答頂ければ助かります!
宜しくお願い致します。
24740 Re:コンボリストの選択値の変更 佐田 守弘 2004/02/11-10:29
記事番号24738へのコメント
かおりさん
●コンボボックスの値リスト
>まず3つのコンボボックスの設定は、プロパティから値リストにし、
>値集合ソースをそれぞれABCDEと設定しまっても良いのでしょうか?
構いません。というか、設定して下さい。その設定が初期値になります。

●実行するイベント
>コンボ@の入力後処理(更新後処理で良いですか?)で、設定すれば良いのでしょうか?
この部分は記載ミスがありました。入力後イベントではなく、ソース値更新イベントで処理を行います。

●ケースコマンド
>また、ケースと言うのはselect caseのことでしょうか?
桐のコマンドには、「select case」はなかったのでは。
「ケース」コマンドとは、一括処理・イベントで使う「ケース」コマンドの事を意味しています。
英名で書くと、「select case」ではなくて、「switch〜case〜default〜end」です。

●補足
前回コメントの最後に書いた「〜かなり複雑な設定になるかと思います。」の部分を補足します。
実際に行おうとすると、第3志望のリストボックスの値は、第1志望と第2志望に何が選ばれたかを考えて、
A〜Eと未選択の6通りどうしの掛け合わせで36通りのケースについて記述する必要があります。
同様に第1志望、第2志望についても、先に他の入力が行われた場合や、
一度入力してから未選択に戻された事を想定すると、同様に36通りのケースについての記述が必要になります。

佐田守弘(KS-00119)
24745 Re:コンボリストの選択値の変更 かおり 2004/02/11-12:08
記事番号24740へのコメント
佐田さん

早急なお返事ありがとうございます。

36通りの記述をするとなると少々大変かなと言う気がして来ました・・汗

そこで同じ値が入力されたらメッセージボックスを表示、
値をクリアにする方法で対策しようと思います。
(こちらの方が初心者の私にも扱いやすいこともあり。苦笑)

もっと勉強をして高度なコードを書けるようがんばります。

ありがとうございました!


戻る