web-dev-qa-db-ja.com

フォームで抽象データ型を表す方法は?

プログラマーがライブラリーを使いやすくするためのグラフィカル・ツールを作成しています。ライブラリには、AbstractTypeと呼ぶデータタイプがあります。これは、すべてのタイプから継承されます-ImageFileなど。オブジェクトタイプのリストは列挙可能です。

ユーザーがプロパティシートでAbstractTypeオブジェクトを指定している場合、フォームをどのように配置すればよいですか?


私の現在の考えはこのようなものです:

mockup

download bmml sourceBalsamiq Mockups で作成されたワイヤーフレーム

基本的に、一方のタブでタイプが変更され、もう一方のタブでフォームが変更されます。したがって、Imageを選択した場合、他のタブには「幅」、「高さ」などのフィールドがありますが、次にFileに変更すると、他のタブのフィールドが変更され、 「パス」フィールド。

13
Justin

簡単に言うと、タブを使用しないでください。

これはタブの目的ではないので、持っているボックスを使用してください。ユーザーがタイプを選択したら、最初のボックスにある選択フィールドのすぐ下にある2番目のタブにあるフィールドを表示します。 基本的に: 1つのボックスのみを使用してタブを削除すると、 "抽象型"はまったく使用されなくなります。エルゴ問題が解決され、タイプは常に表示されます。ラベルは必要ありません。ユーザーは、ドロップダウンを変更することで、必要に応じてタイプを変更できることを認識できます。

29
Devin

デヴィンのポイントを拡張するには...

変更を明確にする

タブは状態の変化を隠し、視覚的な手がかりなしで何が欲しいかをユーザーに知らせます。相互作用が他の何かの状態を変えるとき、その変化を自明にします。この場合、最初のコントロールを変更すると、追加のコントロールがすぐに表示されます(変更をやわらげるための小さなアニメーションは常に高く評価されています)。

Interaction with first control makes additional controls appear

可能であれば、事前に何を期待すべきかをユーザーに知らせておくと便利です。追加のコントロールが1つの「オブジェクトタイプ」から次のコントロールに正規化された場合、無効な状態で表示できます。あなたの場合、追加のパラメータ(存在する場合)はオブジェクトタイプごとに異なるように思えます。そのような場合、私はオンデマンドでそれらを投入することを好みます。

15
plainclothes