リスト ボックスに重複した値を含めることができないのはなぜですか?これを実行すると:
lb = List Box({"qwerqwerr", "qwerqwerr"});
nwTest = New Window("Test ListBox Duplicate values", lb);1行だけのリストボックスを取得します。 なぜ?
リスト ボックスはリストを受け入れます。リストには重複した値を含めることができます。なぜリス ボックスには重複した値を含めることができないのですか?
重複する値を含むリストをリスト ボックスに渡すと、リスト ボックスに表示されるのは、追加の警告またはエラーとともに渡されたリストではありません。
それは仕様ですか? なぜ? 回避策はありますか?
高度な統計モデリング実験計画法Re: リスト ボックスに重複した値を含めることができないのはなぜですか?2 つの異なるウィンドウの 2 つの異なる String Col Box に同じ名前を付けました。 したがって、2 番目の割り当ては最初の割り当てを上書きします。
おかしな動作 => どのウィンドウのボタンを押しても、2 番目のウィンドウが更新されます。
Re: リスト ボックスに重複した値を含めることができないのはなぜですか?その「コントロール」は、アウトラインボックスで始まる複合オブジェクトです。 アウトライン ボックスを右クリックし、[編集] > [ツリー構造の表示] を選択すると、構造 (ツリーの表示) を調べることができます。 リストは、最初に作成したオブジェクトと同じリスト ボックスに表示されます。

Re: リスト ボックスに重複した値を含めることができないのはなぜですか?あなたが言った、 " 「scb」には別の名前を使用するべきでした。その結果、現在のような非常におかしな動作が発生しました。 」 どうして?
Re: リスト ボックスに重複した値を含めることができないのはなぜですか?分かりました、ありがとう!
「scb」には別の名前を使用するべきでした。その結果、現在のような非常におかしな動作が発生しました。
とにかく、ここで使用されているコントロールは次のとおりです。

私のスクリプトでは、同様の GUI を使用して 2 つの列を一致させました。全体が少し複雑になっているだけで、2 番目の列には、「height=height」行に表示したくない補助列が多数含まれている可能性があります。 したがって、値が重複する可能性があります。
現時点では、すべてを一意にするために「height=height;sex,name,age」として表示するように設定していますが、理想的にはメイン列のみを表示したいと考えています。
Re: リスト ボックスに重複した値を含めることができないのはなぜですか?ドキュメントでは、リスト ボックスが提供されたリスト内の固有の項目を使用することを指摘する必要があることに同意します。 list 引数には一意の項目を含める必要はありません。 ドキュメントを使用する人は誰でも準備を整える必要があります。つまり、あらゆる動作が想定されます。
したがって、例が仮説であっても、オブジェクトの選択はその目的によって異なります。 ここでは、パス全体で一意ではない可能性があるステップのリストを表示する例に基づいた 2 つのアプローチを示します。 1 つの方法では直接更新を使用し、もう 1 つの方法では永続化のためのステップのリストを使用します。 (最初の方法では、必要に応じて文字列列ボックスからリストを取得できます。)
Names Default to Here( 1 );
// directly update list of steps
New Window( "Move It 1",
H List Box(
Outline Box( "Control",
Line Up Box( N Col( 3 ),
Text Box( "" ),
Button Box( "Up",
scb << Add Element( "Up" )
),
Text Box( "" ),
Button Box( "Left",
scb << Add Element( "Left" )
),
Text Box( "" ),
Button Box( "Right",
scb << Add Element( "Right" )
),
,
Text Box( "" ),
Button Box( "Down",
scb << Add Element( "Down" )
),
Text Box( "" )
)
),
Outline Box( "Path",
Table Box(
scb = String Col Box( "Step", {} )
)
)
)
);
//use list as an intermediary structure
updatePath = Function( { list, text, obj },
Insert Into( list, Eval( text ) );
obj << Set( list );
Return( list );
);
path = List();
New Window( "Move It 2",
H List Box(
Outline Box( "Control",
Line Up Box( N Col( 3 ),
Text Box( "" ),
Button Box( "Up",
path = updatePath( path, "Up", scb );
),
Text Box( "" ),
Button Box( "Left",
path = updatePath( path, "Left", scb );
),
Text Box( "" ),
Button Box( "Right",
path = updatePath( path, "Right", scb );
),
Text Box( "" ),
Button Box( "Down",
path = updatePath( path, "Down", scb );
),
Text Box( "" )
)
),
Outline Box( "Path",
Table Box(
scb = String Col Box( "Step", path )
)
)
)
);Re: リスト ボックスに重複した値を含めることができないのはなぜですか?リストボックスはリストではないことを理解しています。 それはそれです受け入れるリストを入力として使用します。 ドキュメントのどこにも、リストには一意の値のみが必要であるとは記載されていません。 それは予期せぬ行動でした。
たとえば、文字列を入力として受け入れるテキスト ボックスがあると想像してください。 したがって、文字「a」で始まらない限り、この文字列はボックス内に表示されます。文字列が「a」で始まる場合は何も表示されません。 そしてそれはどこにも文書化されていません。 テキスト ボックスが時々空になる原因をトラブルシューティングしようとしている人にとっては、なんと残念なことでしょう?
Re: リスト ボックスに重複した値を含めることができないのはなぜですか?1. リストボックスはリストではありません。 データ構造として正確に期待されるものやインターフェイスはありません。 インタラクティブな双方向コミュニケーションです。 連想配列が「問題」を解決します。 多くのユーザーはこれらの構造に慣れていないか、慣れていませんが、リストは自然に操作できると感じています。 リストは、リスト ボックスがその機能を実行するために必要なデータを提供するための単なる引数です。 便利なことに、重複は自動的に破棄されます。
2. リスト ボックスは、一意の選択肢のリストを表示するオブジェクトであり、1 つ以上の項目を選択する必要があるユーザーとの対話を容易にするため、重複が発生する UI コンポーネントとしては間違った選択です。 目的に応じて別のオブジェクトを選択する必要があります。 ユースケースでは、UI の他の場所で行われた選択の順序付きリストを保存する必要があります。 この目的には、文字列列ボックスが適している可能性があります。
Re: リスト ボックスに重複した値を含めることができないのはなぜですか?@David_Burnham 、 @Mark_Baileyと@txnelson
私のポイントは 2 つあります。
1. リストを入力として受け入れる場合、リストを変更せず、そのまま表示する必要があります。 基本的に、コントロールに入力された内容が表示されないのは良い動作ではありません。 一意である必要がある場合は、リストを許可せず、キーが行、値が無視されるか、その他のものである連想配列にします。 または、重複する値を含むリストが入力として提供された場合、少なくとも何らかの警告または例外をスローします。
2. 同一の値を区別するにはどうすればよいですか? そうですね、リストには順序がありますよね? ユーザーがアルゴリズムのステップ、ユーザーが組み立てた同一オブジェクトのセット、実行するレポートなどを反映するためにこの種のコントロールを使用するユースケースはたくさんあります。
たとえば、「左」、「右」、「上」、「下」の 4 つのボタンがあります。 特定の結果を達成するには、ユーザーは何らかのアルゴリズムを設定する必要があります。 彼はボタンを連続して押すことでこれをプログラムします。 ボタンを押すたびにリストにステップが追加されます。 手順のリストを作成します。 このリストには同一の手順が含まれています。 右、右、上、右、下、下、左。 これはリストです。 List Box() と呼ばれるものではない場合、そのようなリストはどこに表示すればよいでしょうか?
Re: リスト ボックスに重複した値を含めることができないのはなぜですか?として@Mark_Bailey示されているように、リスト ボックスは仕様によりこのように動作します。
リスト ボックスは、ユーザーがリストから値を選択できるようにするユーザー インターフェイス要素として設計されています (例: {"ImpurityA","ImpurityB","ImpurityC","ImpurityD"})。{"ImpurityA","ImpurityB","ImpurityC","ImpurityD","ImpurityB"} のようなリストを提示した場合、ユーザーは 1 番目または 2 番目の「ImpurityB」を選択するかどうかをどのようにして知ることができるでしょうか。論理的には、ユーザーには一意の値のリストが表示されるべきであり、それがリスト ボックスの機能です。
しかし、私はメッセージを書き込むスクロール ログとして ListBox をよく使用しているので、この質問には同感です。すでに書き込まれているログに行を書き込む場合、同じ行を 2 回書き込むことができないため、問題が発生します。この使用例では、通常、文字列メッセージを改行で保持し、複数行のテキスト ボックスを使用して文字列を表示します。
ユースケースの場合はユーザーが選択できるようにするには、上記の例の 2 つの ImpurityB を区別する二次情報があると考えられます。その場合、リスト ボックスに表示される複合項目のリストを作成できます。
{"不純物 A/バッチ 1",不純物 B/バッチ 1", ..., "不純物 B/バッチ 2"}
Re: リスト ボックスに重複した値を含めることができないのはなぜですか?リスト ボックスは、ユーザー インターフェイスで選択できる項目を表示することを目的としています。 このオブジェクトの動作を指摘しただけです。 同じ値を持つ場合、ユーザーはどのアイテムが欲しいのかをどうやって知るのでしょうか? おそらく、あなたが共有していない別のディスプレイボックスがあなたの目的を果たすでしょう。
Re: リスト ボックスに重複した値を含めることができないのはなぜですか?リスト ボックスに値の一意のリストのみが表示されることを指定するドキュメントは見つかりませんでしたが、テストしたところ、リスト ボックスに関連付けられたリスト ボックス内の特定の値ごとに 1 つのエントリのみが表示されるように見えました。 () 物体..