HP OpenVMS Systems Documentation |
[ 前のページ ] [ 次のページ ] [ 目次 ] [ 索引 ]
ダイアログ・ボックスはメッセージを表示したり,ユーザの入力を促したりします。 この章では,有効なダイアログ・ボックスを設計するためのガイドラインを示します。
次のような場合にはダイアログ・ボックスを使用するのが有効です。
効果的なダイアログ・ボックスを設計するためには,次のことを理解しておく必要があります。
この章では,またダイアログ・ボックス作成の実施に関連した以下のトピックについても取り扱います。
DECwindowsのアプリケーションは1つ以上の1次ウィンドウとそれに関連するダイアログ・ ボックスで構成されます。ダイアログ・ボックスは2次ウィンドウとも呼ばれます。Motif ウィンドウ・マネージャのもとでは,2次ウィンドウは次の特徴を持っています。
ダイアログ・ボックスの特徴はすべてDECwindows Motifツールキットによって与えられています。 つまり,ダイアログ・ボックスがBulletinBoard またはFormウィジェットの サブクラスである限り,2次ウィンドウを親によって最小化したり復元したりするためのコーディングを行う必要はありません。
ダイアログ・ボックスにはモードなしとモード付きの2種類があります。
モードなしの場合,ダイアログ・ボックスが表示されている間も,アプリケーションの他のウィンドウで作業することができます。 たとえば,図 1-1はダイアログ・ ボックスが表示されていても, ユーザが1次ウィンドウに文字入力できることを示しています。 モードなしダイアログ・ボックスにより,ユーザの作業環境は柔軟性に富んだものになります。
ダイアログ・ボックスの大部分はモードなしで作成する方が良い結果が得られます。
省略時のダイアログ・ ボックスの設定は「モードなし」です。モードなしのダイアログ・ ボックスを使用するには,XmDialogStyleをXmDIALOG_MODELESSに設定します。
ダイアログ・ボックスをモード付きにするには, XmFormまたはXmFormのサブクラスを使用してXmDialogStyle を次の値の1つに設定します。
また,ダイアログ・ボックスをXmBulletinBoardを使用してモード付きに設定することもできます。 しかし,XmBulletinBoardは,特別なジオメトリ情報の取り扱いが必要な場合にのみ使用すべきです。
Note that XmDIALOG_PRIMARY_APPLICATION_MODALがXmDIALOG_ APPLICATION_MODALに置き替わっていることに注意が必要です。新しいアプリケーションでは,XmDIALOG_PRIMARY_APPLICATION_MODAL だけが使用されます。
モード付きの場合,ダイアログ・ボックスが表示されている間は特定のウィンドウに対する処理を禁止します。 モード付きダイアログ・ボックスは,1 次アプリケーション・モード付きとフル・アプリケーション・モード付きの2種類があります。 どちらを使用するかは,アプリケーションと表示するダイアログ・ ボックスの性質によって決まります。次にそれぞれのモード付きダイアログ・ ボックスについて説明します。
1次アプリケーション・モード付きのダイアログ・ボックスが表示されている場合, その祖先ウィンドウに対する処理を禁止します。たとえば, ブックリーダの場合は,ライブラリ選択ダイアログ・ボックスが,1 次アプリケーション・モード付きのダイアログ・ボックスです。 このボックスが表示されている間,ユーザはライブラリ・ウィンドウと会話することができません。 ただし,他のブックリーダの1次アプリケーション・ ウィンドウと会話することはできます。たとえば,先に開いてある本の次のトピックに移動することはできます。
1次モード付きダイアログ・ボックスから祖先ウィンドウにポインタを移動させた際には, 使用アプリケーションがポインタを警告ポインタの形に変え, モード付きダイアログ・ボックスを画面から消去するまでは祖先ウィンドウでは何もできないことをはっきりと示します。 この警告ポインタは「進入禁止」を表わす国際的な記号です。図 1-2 は親ウィンドウで警告ポインタを表示した例です。
プログラマはそれぞれのウィンドウ上で適切な形にポインタを変える必要があります。
ポインタを変えるには, ポインタを新規に作成し,1つのウィンドウから別のウィンドウに移動する際にそのポインタをセット, またはリセットしなければなりません。 ポインタを変える手順は,次のとおりです。
OpenVMSシステムの場合:
DEC UNIXシステム, Microsoft Windows NTシステムの場合:
caution_pointer = DXmCreateCursor (toplevel, decw$c_INACTIVE_CURSOR); XDefineCursor (XtDisplay(toplevel), XtWindow(toplevel), caution_pointer); XFlush (XtDisplay(toplevel));
XUndefineCursor (Xtdisplay (toplevel), XtWindow (toplevel));
アプリケーション・モード付きのダイアログ・ボックスは,アプリケーションのどのウィンドウに対する処理も禁止します。 たとえば,アプリケーションのメニューの項目から「終了」を選ぶとフル・ アプリケーション・ モード付きダイアログ・ボックスが現われ,終了する前にファイルを保管したいかどうかユーザに質問します。 ユーザはこの質問に答えるまで, このアプリケーションのどの部分とも会話することができません。
ユーザがポインタをアプリケーション・モード付きダイアログ・ボックスからアプリケーションの他のウィンドウに移動した際には, アプリケーションがポインタを警告ポインタの形に変えます。 この形の変更により, モード付きダイアログ・ボックスを解除するまでアプリケーションの他のウィンドウでは何も処理できないことを示します。 フル・アプリケーション付きダイアログ・ボックスを使用の場合は, この警告ポインタは,図 1-2 に示すように親ウィンドウ上に現われるだけでなく,そのアプリケーションに属する他のどのウィンドウ上にも現れます。
ユーザがアプリケーションの他のウィンドウに入力しようとしたり, マウスを使用しようとすると,アプリケーションは警告音を出し,ユーザに他のウィンドウと会話できないことを知らせます。
モード付きダイアログ・ボックスを解除したあとは,ユーザは他のどのウィンドウとも会話できるようになります。
ダイアログ・ボックスのモードを決定したら,各ダイアログ・ボックスを画面上のどこに配置するか, またネストするかどうかを決めなければなりません。
親ウィンドウ(1次ウィンドウ)の情報を見たり使用したりする必要のないようなダイアログ・ ボックスの場合は,図 1-3に示すように, 親ウィンドウの作業領域の中心にダイアログ・ ボックスを表示させてください。こうすることにより,マウスの移動とユーザの視線の移動を最小限に抑えることができます。
しかし,親ウィンドウにある情報を見たり使用したりできるようにする必要のあるダイアログ・ ボックスの場合は,ダイアログ・ボックスを親ウィンドウの横または下に配置してください。 ダイアログ・ボックスに最適な位置は, アプリケーションによって異なります。
図 1-3に示すように, 画面の左上,すなわち(0,0) にはダイアログ・ボックスを配置しないでください。この位置に配置すると, ユーザの観点からみて,アプリケーションの1次ウィンドウの位置とはほとんど関係を持たない意味のない配置となります。
ウィンドウがXmBulletinBoardDialog またはXmFormDialogの場合,ツールキットによってダイアログ・ ボックスは親ウィンドウの中心に配置されます。ウィンドウがXmBulletinBoard のサブクラスでない場合は,ダイアログ・ボックスは画面の左上の(0,0) に配置されます。この場合は,ダイアログ・ボックスのX 座標とY座標の値を指定してください。
ダイアログ・ボックスをユーザが移動した後そのダイアログ・ボックスをもう一度表示させる場合は, 必ず移動した位置を尊重してください。たとえば, 省略時にダイアログ・ボックスを親ウィンドウの中心に表示し,ユーザがそれを親ウィンドウの下に移動させたとします。 ユーザがそのダイアログ・ ボックスを次に呼び出した時はユーザが最後に移動させた場所, つまり1次ウィンドウの下に表示させるようにしてください。
ダイアログ・ボックスの位置を保管する場合は,親ウィンドウに対しての相対的な位置ではなく, 画面上の座標の位置で保管するようにしてください。 たとえば,前の例で親ウィンドウを画面の中心から右上に移動させ, その後ダイアログ・ボックスをもう一度呼び出したとします。この場合, 親ウィンドウの真下ではなく,画面の中心の下側,つまりユーザが最後に配置した場所にダイアログ・ ボックスを表示するようにしてください。
1つのダイアログ・ボックスに含めるには情報量が多すぎる場合,複数のダイアログ・ ボックスを作成します。これをダイアログ・ボックスをネストするといいます。 最初のダイアログ・ボックスには必須でかつ共通の機能を入れ, 以降のダイアログ・ボックスには共通性の低い機能を入れて, ネストしたダイアログ・ボックスを編成します。
最初のダイアログ・ボックスに最も重要でよく使う制御ボタン類を入れて, ほとんどの場合に最初のダイアログ・ボックスだけを使用すればいいように設計します。 どの制御ボタンを最もよく使用するかを理解するために, ダイアログ・ボックスの設計には実際にアプリケーションを使用するユーザにも参加してもらうとよいでしょう。 基本操作は最初のダイアログ・ ボックスのみで終了でき,2次ダイアログ・ボックスを開く必要がないように設計するべきです。 ただし,オプションが使用可能であることがユーザにわかるように設計してください。
ダイアログ・ボックスに,プッシュ・ボタンを押す操作以外に5〜7つの操作が含まれる場合は, ネストすることを考えます。たとえば,テキストを入力する, ラジオ・ボタンを選択する,リスト・ボックス内のアイテムを1 つ選択する等の操作が考えられます。ただし,ダイアログ・ボックスのネストのレベルは3 段階までにします。
1次ダイアログ・ボックス上のプッシュ・ボタンを選択して,2次ダイアログ・ ボックス(ネストしたダイアログ・ボックス)を起動します。1つの2 次ダイアログ・ボックスしか起動しない場合は,プッシュ・ボタンのラベルに「オプション... 」を使用します。図 1-4に例を示します。
反復記号(...)はボタンを押すとダイアログ・ボックスが起動することを示します。 ただし,反復記号は「ヘルプ」ボタンには使用しません。
1次ダイアログ・ボックスから複数の2次ダイアログ・ボックスを起動することもできます。 ただし,その場合はプッシュ・ボタンに操作の内容を明確にラベル表示してください。 たとえば,1つを「パターン...」とし,もう1 つを「テンプレート...」とします。
どの制御ボタンをネストするかを決める場合,サンプルのダイアログ・ボックスを設計し, どれが最良の配置か,またどの制御ボタンを1次ダイアログ・ ボックスに入れるのがよいかをユーザにたずねてみるとよいでしょう。 たとえば,図 1-5はプッシュ・ ボタンを押すステップの他に7 つのステップをもつダイアログ・ボックスの例です( 「性別」の3つのラジオ・ボタンがそれぞれ1つのステップを構成します) 。このダイアログ・ボックスは非常に煩雑で,多くのユーザはその複雑さゆえに尻込みしてしまうでしょう。
このような場合,1次ダイアログ・ボックスにはユーザが頻繁に実行するステップだけを入れ, 頻度の低いその他のステップは2次ダイアログ・ ボックスに入れて,ネストしたダイアログ・ボックスを作成します。図 1-6 に再編成したダイアログ・ボックスの例を示します。
ネストしたダイアログ・ボックスの配置には,次の2つのテクニックがあります。
これらの2つのテクニックは,ネストしたダイアログ・ボックスは1次ダイアログ・ ボックスよりも小さくなるという想定のもとに同時に使用することができます。 ネストしたダイアログ・ボックスを最初のボックスよりも小さくできない場合は, ネストしたボックスのプッシュ・ボタンを最初のボックスのプッシュ・ ボタンにできるだけ近づけて配置してください。
2次ダイアログ・ ボックスがXmBulletinBoardのサブクラスでない場合はダイアログ・ ボックスのX座標とY座標を指定する必要があります。
ウィンドウ・マネージャはどのウィンドウに対してもいくつかの種類の装飾を与えます。 すべてのウィンドウには次の装飾が自動的に設定されます。
コーナー・ハンドルはX座標とY座標の両方でボックスのサイズ変更を行いますが, サイド・ボーダーは一方の座標だけのサイズ変更を行います。
ウィンドウ・メニュー・ボタンを押すとウィンドウ・メニューが現れます。 通常,ウィンドウ・メニューにはウィンドウの復元,移動,サイズ決定, 最小化,最大化,スタックの変更およびクローズのためのメニュー項目が含まれます。
最小化ボタンを押すとウィンドウがアイコンになります。
最大化ボタンを押すと,可能なだけウィンドウを拡大することができます( 大きさをきめることができます)。
ダイアログ・ボックスには次の装飾のみを指定してください。
この装飾はオプションです。詳しくは,第1.2.2 項を参照してください。
これらの装飾は省略時の設定です。図 1-8 は,1次ウィンドウの装飾と2次ウィンドウの装飾を比較したものです。
各ダイアログ・ボックスにはタイトルをつけてください。タイトルを構成する要素には次のものがあります。
図 1-9に例を示します。
ダイアログ・ボックスのタイトルとしてメニュー項目と共にメニュー名を含めることもできます。 たとえば,ユーザがオプション・メニューをプル・ ダウンし,メニュー項目から「ウィンドウ」を選択したとします。この場合, 次のようなタイトルをダイアログ・ボックスに付けます。
メール: ウィンドウ オプション
この場合,「メール」はアプリケーション名,「ウィンドウ」はメニュー項目名, 「オプション」はメニュー名となります。
図 1-9には不適切なタイトル例も示しています。 この例では不適切なタイトルとしてウィジェット名を使用しています。 ウィジェット名はユーザにとって何の意味もありません。したがってダイアログ・ ボックスのタイトルには使用するべきではありません。
ダイアログ・ ボックスのタイトルの設定には,XmNdialogTitleリソースを使用してください。
ダイアログ・ボックスにサイズ変更枠を組み入れるかどうかについては, 次のガイドラインを参考にしてください。
サイズ変更枠を含まないダイアログ・ ボックスを作成するには,XmNnoResizeの値をTrue に設定してください。サイズ変更枠を含むダイアログ・ボックスを作成するには,XmNnoResize の値をFalseに設定してください。このリソースはXmBulletinBoard から継承されます。
サイズ変更枠をつける場合は,次のガイドラインを守ってください。
DECでは, 縮小に合わせてプッシュ・ボタンが移動するルーチンDXmFormSpaceButtonsEqually を提供しています。詳しくは,第1.3節を参照してください。
次のコード例を使用してダイアログ・ボックスに最小サイズを設定してください。 次の例では最小サイズは100になっていますが,作成するダイアログ・ ボックスごとに許容できる最小サイズを決定する必要があります。
Arg arglist[2]; XtSetArg(arglist[0], XmNminWidth, 100); XtSetArg(arglist[1], XmNminHeight, 100); XtSetValues(XtParent(dialog_box), arglist, 2);
ダイアログ・ ボックス内のコントロール類のサイズやレイアウトを拡大するには,XmForm ウィジェットもしくはXmFormDialogウィジェットを使用して, 拡大,縮小する必要のあるコントロールの左右アタッチメントを指定してください。 プッシュ・ボタンを適切に拡大,縮小させるには, DXmFormSpaceButtonsEquallyを使用してください。
この節では,ダイアログ・ボックスのプッシュ・ボタンの作成と配置についてのガイドラインとプログラミングのヒントについて説明します。
すべてのダイアログ・ボックスには省略時のプッシュ・ボタンを設定してください。
省略時のプッシュ・ボタンとは,ユーザがリターン・キーを押すことによって選択されるボタンです。 ユーザはリターン・キーを押し,作業を続けることができます。 省略時のプッシュ・ボタンを指すと,図 1-16 に示すように,Motifが強調表示を加えて自動的に表示されます。
省略時のプッシュ・ ボタンを使用可能にするには,UILファイル内の省略時のボタン・ ウィジェットの名前にXmNdefaultButtonを設定します。F11(エスケープ・ キー)を取消しキーとして使用可能にするには,UILファイル内の取消しボタン・ ウィジェットの名前にXmNcancelButton を設定します。
必要な場合には,ダイアログ・ボックスに「取消」プッシュ・ボタンを与えてください。
F11(エスケープ・ キー)を取消しキーとして使用可能にするには,UILファイル内の取消しボタン・ ウィジェットの名前にXmNcancelButtonを設定します。
プッシュ・ボタンのラベルは図 1-16 に示すようにセンタリングしてください。省略時の設定でセンタリングされますので, それを無効にしないようにしてください。
ダイアログ・ボックスの標準プッシュ・ボタンを使用するときは,次に示す順のいずれかに従うようにしてください。
つねに,「了解」ボタンが一番最初に,「ヘルプ」ボタンが一番最後となるように配置してください。 「取消」ボタンは,次の唯一の例外を除いて, 最後のボタンの一つ前に配置します。「オプション...」ボタン,または他のダイアログ・ ボックスを表示する別のボタンがある場合が例外で, この場合は、そのボタンを「取消」と「ヘルプ」ボタンの間に配置する必要があります。
プッシュ・ボタンは,図 1-16 で示すように, 下部全体にわたって横に配置するか,図 1-17 で示すように,ダイアログ・ ボックスの右上付近に縦に配置してください。
ボタンを横に配置する場合の好ましい方法は次の2つです。
ダイアログ・ボックスが細長い,あるいはボタンの数が多い場合は,どちらも方法も効果的です。 ただし,ダイアログ・ボックスの幅が広い,あるいはボタンの数が少ない場合には, 左右のマージンを等しくして,ボタン全部を中央に配置する必要があります。 このように配置すると,ボタン間で必要なマウスの移動が最小限に抑えられます。
一番目の方法では,ボタンの間隔とマージンを等間隔にしてください。つまり, 左端から最初のボタンまでの間隔と各ボタン間の間隔を等しくし, さらに最後のボタンと右端までの間隔も他の各ボタンの間の間隔と等しくなるようにしてください。 ダイアログ・ボックスの下部に等間隔に並べたプッシュ・ ボタンの例を図 1-16に示します。
DECでは, プッシュ・ボタンを等間隔で等サイズになるように,フォーム・ウィジェットにプッシュ・ ボタンを設定するルーチンDXmFormSpaceButtonsEqually を提供しています。次のコード例を利用してください。
DXmFormSpaceButtonsEqually (parent,widget_list,num_widgets) Widget my_form; Widget *widget_list; Cardinal num_widgets;ここで
二番目の方法では,中央にボタンを配置するために,アタッチメントを使用して真ん中のボタンをダイアログ・ ボックスの相対的な位置にアタッチしてください。
ボタンの数が奇数または偶数の場合のセンタリングには、次のプログラミングのヒントを使用してください。
このプログラミングのヒントはボタンが奇数個の場合に役立ちます。 この例では、 「了解」,「適用」,「リセット」,「取消」,「ヘルプ」の5個のボタンが配置されています。
ボタンのセンタリングをするには,最初に,「リセット」ボタンの左側をダイアログ・ ボックス幅の中間点にアタッチします。その後で, XmNleftOffsetをボタンのサイズの半分に設定します。
reset_args : arguments { XmNlabelString = "Reset"; XmNwidth = 1500; XmNleftAttachment = XmATTACH_POSITION; XmNleftPosition = 50; XmNleftOffset = -750; /* font units */ };ユーザが行う各国語対応とフォント設定について配慮が必要と考える場合は, 実行時にレイアウトを修正がすることが可能です。次のステップに従ってください。
left_button_args : arguments { XmNwidth = 1500; XmNrightAttachment = XmATTACH_WIDGET; XmNrightOffset = 200; /* font units */ }; right_button_args : arguments { XmNwidth = 1500; XmNleftAttachment = XmATTACH_WIDGET; XmNleftOffset = 200; /* font units */ };使用ボタンが大体同じサイズでない場合は,第1.3.5項の長いプッシュ・ ボタンのプログラミングのヒントを参照してください。
このプログラミングのヒントはボタンが偶数個の場合に役立ちます。この例では、 「了解」,「リセット」,「取消」,「ヘルプ」の4個のボタンが配置されています。
ボタンのセンタリングをするには,最初に,「リセット」を中央に近くに配置し, ボタンの右側をダイアログ・ボックス幅の中間点にアタッチします。 その後で,XmNrightOffsetをボタンの間のスペースのサイズの半分に設定します。
reset_args : arguments { XmNlabelString = "Reset"; XmNwidth = 1500; XmNrightAttachment = XmATTACH_POSITION XmNrightPosition = 50; XmNrightOffset = 100; /* font units */ };ユーザが行う各国語対応とフォント設定について配慮が必要と考える場合は, 実行時にレイアウトを修正がすることが可能です。次のステップに従ってください。
left_button_args : arguments { XmNwidth = 1500; XmNrightAttachment = XmATTACH_WIDGET; XmNrightOffset = 200; /* font units */ }; right_button_args : arguments { XmNwidth = 1500; XmNleftAttachment = XmATTACH_WIDGET; XmNleftOffset = 200; /* font units */ };使用ボタンが大体同じサイズでない場合は,第1.3.5項の長いプッシュ・ ボタンのプログラミングのヒントを参照してください。
プッシュ・ボタンを縦に配置した場合は,省略時のプッシュ・ボタンを一番右上の位置に配置し, 他のプッシュ・ボタンをその下に並べてください。 上下のプッシュ・ボタンの間隔は,省略時メニュー・フォントの45 フォント・ユニット分としてください。図 1-17 は縦に配置したプッシュ・ボタンの例です。
各プッシュ・ボタンのラベルの長さが異なる場合であっても,すべてのプッシュ・ ボタンは同じ寸法にしてください。ただし,1つのラベルだけがとくに長い場合, 他のボタンはすべて同じ寸法にするのであれば,そのボタンだけ大きくしても構いません。
ボタンが横に並んでいる場合は,大きいボタンは他のボタンよりも幅が広くても構いませんが, 他のボタンより高くなってはいけません。ボタンが縦に並んでいる場合は, 大きいボタンは他のボタンよりも高くても構いませんが, 他のボタンより幅を広げてはいけません。図 1-18 を参照してください。
アプリケーションが各国語対応された場合, 長いプッシュ・ボタンのラベルが翻訳されて短くなる場合もあります。
各国語対応されるアプリケーションの場合は,簡単に変換できるよう,サイズ決めと位置決めのリソースをUIL インクルード・ファイルに入れておいてください。 たとえば,プッシュ・ボタンのサイズを固定して使用している場合, そのサイズをUILインクルード・ファイルの中で定義し,コメントを付けておきます。 ほとんどのボタンは
normal_widthのような文字に定義できるでしょう。 また,サイズが大きいものは
long_widthのような文字に定義できるでしょう。
そしてそれらの値を次のように設定します。
value normal_width = 50; long_width = 100; /* width of the longest button*/プッシュ・ボタンのXmNwidthリソースを定義するときにこれらの文字を参照します。 各国語対応にする時点でボタンのラベルの幅を変える場合は, これらの文字の値を変更するだけで済みます。
「ヘルプ」プッシュ・ボタンを含める。
ユーザが「ヘルプ」プッシュ・ボタンを押すと,ダイアログ・ボックスについての概要の説明が表示されます。 追加トピックを入れ,ダイアログ・ ボックス内の各制御ボタンの使い方に関する詳しい説明を加えても構いません。 ただし,ユーザに対する簡単なメッセージの場合は「ヘルプ」プッシュ・ ボタンを使用する必要はありません。オンライン・ヘルプの設計についての詳しい説明は, 第5章を参照してください。
警告またはエラー・ダイアログ・ボックスで,1〜2行の文でエラーの説明とその解決方法を示すことができない場合は, そのダイアログ・ボックスに「ヘルプ」プッシュ・ ボタンをつけてください。ダイアログ・ボックス内に表示したエラーまたは警告メッセージに関する説明をヘルプ・ ウィンドウに表示し, トラブルの解決方法を示します。
メッセージ・ダイアログ・ボックスは,エラー・メッセージ,警告,アプリケーションの状態といった情報をユーザに提供します。 また,ユーザに質問するものもあります。
他のダイアログ・ボックスと同様に,メッセージ・ボックスにもウィンドウ・ メニューとタイトル領域があります。各メッセージ・ボックスには対応するアイコンがあり, そのボックスの目的を示します。
メッセージ・ダイアログ・ボックスを作成する際には,デザインについての以下の事項を配慮してください。
標準メッセージ・ダイアログ・ボックスのタイトルは次の要素から構成されます。
タイトルで操作を指定して,ユーザがメッセージ・ボックスのコンテキストに関してできるだけ詳しい情報が得られるようにします。 たとえば,メッセージ・ ボックスに次のタイトルの2つのいずれかを使用して,電子メール・ ホルダの削除を希望するかを問うことができますが,最初のものの方がユーザに多くの情報を伝えることになります。
Mail: Delete Folder Mail: Question
メッセージ・ダイアログ・ボックスでは完全な文または文に準じた語順を使う必要があります。 実際の文章で使用すると同じように句読点を加えてください。 メッセージは簡潔になるように心掛け,素早く,簡単に読めるようにします。 ただし,冠詞のtheやa,接続詞の andなどを省かないようにしてください。テキストを作成する際には, 他の言語に翻訳される場合があることに留意してください。
一般的には,システムのエラー・コードをメッセージに使用することは避けます。 その代わりに,ユーザが実行できる動作の記述を組み込みます。 これ以外の情報は該当するメッセージ・ボックスの「ヘルプ」テキストに配置します。
ダイアログ・ボックスに文を1つ以上を含める必要がある場合は,最後の文または質問の前に空白行一行を追加してください。 この空白行の追加により, ユーザがボタンの1つを押したときに,どのようになるかに直ちに集中することができます。
ダイアログ・ボックスでは,用語「中止(Abort)」ではなく,「取消(Cancel )」を使用することに注意してください。
ユーザがメッセージ・ボックスを表示させる同じ操作を実行した場合は, 二番目のメッセージ・ボックスは表示しないでください。その代わりに, 同じメッセージ・ボックスを再使用します。ただし,画面の一番上にそれを配置してください。 同一ボックスの再使用により,画面に多くのメッセージ・ ボックスが表示されて煩雑な状態になることが避けられます。
一般的には,アプリケーションのメッセージ毎に新しいダイアログ・ボックスを表示することはしないでください。 含まれているテキストを交換して, 1個または数個の標準メッセージ・ウィンドウを再使用するように心掛けてください。 ユーザがその前のメッセージを表示できることが重要である場合は, スクロールしたウィンドウに新しいメッセージを付加してください。
DECwindowsアプリケーションを作成する場合は,次の5種の標準メッセージ・ ダイアログ・ボックスのなかから1個以上を選んで使用してください。
ユーザに質問する場合には,質問ダイアログ・ボックスを使用してください。 たとえば,図 1-19に示すように, エラーや警告を表示した後で質問をする場合は質問ダイアログ・ ボックスを使用します。質問メッセージ・ボックスはアプリケーション・ モード付きにします。
図 1-19にあるように, 質問ダイアログ・ ボックスは,質問であることを示すアイコンとともに表示します。 ボックスのタイトル,質問内容,そして適切なラベルのプッシュ・ボタンで構成します。
メッセージ・ ボックスをアプリケーション・モード付きにするには,XmNdialog StyleリソースをXmDIALOG_FULL_APPLICATION_MODALに設定します。
リターン・キーを押したときに選択される省略時のプッシュ・ボタンは, ユーザが選択する可能性の最も高いものを設定します。破壊的な結果をともなう可能性のあるものを省略時のプッシュ・ ボタンに設定してはいけません。 次のラベルの組み合わせのいずれかを使用してボタンを配置してください。
ユーザがエラーを引き起こした場合には,エラー・メッセージ・ボックスを表示させます。 たとえば,存在しないディレクトリにファイルを書き込もうとした場合などです。 メッセージ・ボックスでエラーを伝えた後に質問をする場合は, 質問ダイアログ・ボックスを使用します。ユーザの操作以外の原因でエラーが発生した場合は, 情報ダイアログ・ボックスを使用します。 エラー・ダイアログ・ボックスはアプリケーション・モード付きに設定します。
エラー・ダイアログ・ボックスにはエラーであることを表わすアイコンがついています。 エラー・ダイアログ・ボックスは図 1-20に示すように, タイトル,エラーの内容,適切にラベル表示したプッシュ・ ボタンで構成します。ユーザが選択する可能性の最も高いものを省略時のプッシュ・ ボタンとして設定します。破壊的な結果をともなう可能性のあるものを省略時のプッシュ・ ボタンに設定してはいけません。 次のラベルの組み合わせのいずれかを使用してボタンを配置してください。
Motifではエラー・ダイアログ・ボックスの中でも「取消」ボタンを使用することができます。 ただし,「了解」プッシュ・ボタンを押した場合と結果が異なる場合だけ「取消」プッシュ・ ボタンを使用してください。
エラー以外の情報を表示する場合,あるいはユーザの操作以外の原因でエラーが発生した場合には, 情報ダイアログ・ボックスを使用します。この情報は平叙文で記述しなければなりません。 質問文で記述する場合は,質問ダイアログ・ ボックスを使用します。情報ダイアログ・ボックスはモードなしに設定します。
情報ダイアログ・ボックスには情報であることを表わすアイコンがついています。 情報ダイアログ・ボックスは図 1-21に示すように, タイトル,文,および適切にラベル表示したプッシュ・ボタンで構成します。 ユーザが選択する可能性の最も高いものを省略時のプッシュ・ ボタンとして設定してください。破壊的な結果をともなう可能性のあるものを省略時のプッシュ・ ボタンに設定してはいけません。次のラベルの組み合わせのいずれかを使用してボタンを配置してください。
ユーザがある操作をするとトラブルを引き起こす可能性のある場合,これを警告するために警告ダイアログ・ ボックスを使用します。警告ダイアログ・ ボックスは,アプリケーション・モード付きに設定してください。
警告ダイアログ・ボックスには警告であることを表わすアイコンがついています。 警告ダイアログ・ボックスは図 1-22に示すように, タイトル,メッセージ,および適切にラベル表示したプッシュ・ ボタンで構成します。ユーザが選択する可能性の最も高いものを省略時のプッシュ・ ボタンとして設定します。破壊的な結果をともなう可能性のあるものを省略時のプッシュ・ ボタンに設定してはいけません。 次のラベルの組み合わせのいずれかを使用してボタンを配置してください。
「はい」と「いいえ」のラベルが組み合わせの中に含まれています。 Motifでは,「はい」と「いいえ」のプッシュ・ボタンを使用して警告ダイアログ・ ボックスの中で質問をすることも可能ですが,質問する場合は質問ダイアログ・ ボックスを使用するのがよいでしょう。
処理中ダイアログ・ボックスは,処理中であることを表示し,ユーザはその処理を取り消すことができます。 処理中ダイアログ・ボックスはモードなしに設定してください。 処理中ダイアログ・ボックスには処理中であることを表わすアイコンがついています。 処理中ダイアログ・ボックスは図 1-23 に示すように,タイトル,メッセージ, および適切にラベル表示したプッシュ・ボタンで構成します。ユーザが選択する可能性の最も高いものを省略時のプッシュ・ ボタンとして設定します。 破壊的な結果ともなう可能性のあるものを省略時のプッシュ・ボタンに設定してはいけません。 次のラベルの組み合わせのいずれかを使用してボタンを配置してください。
ダイアログ・ボックスは機能的であるだけでなく,それぞれの構成要素を視覚に訴えるように編成することが大切です。 ダイアログ・ボックスの制御ボタン類を上手にレイアウトすると, ユーザは作成したダイアログ・ボックスを最大限に活用することができます。
制御ボタン類の編成をする際には,グラフ用紙や,グリッドのついたオンライン作図ツール, あるいはインターフェイス設計ツール(IDT)を使用して各ダイアログ・ ボックスをスケッチしてみるとよいでしょう。
ダイアログ・ボックスは見やすい構造にするために,スペースまたはbevel を使用して関連する選択肢をグループ化します。bevel(ベベル)とは, 各グループの周りに使用する3次元のボックスまたはフレームのことです。 図 1-24に例を示します。グループ化をするために, 左のダイアログ・ボックスではスペースを使用し,右のダイアログ・ ボックスではbevelを使用しています。
bevelを作成するには,XmForm ウィジェットを使用し,XmNshadowTypeをXmSHADOW_IN に設定します。次に,制御ボタンをXmFormウィジェットの中に入れます。
ダイアログ・ボックスの構成要素が適切なグループに分けられ,インデントがなされている場合は, フィールドの間にコロン「:」や他の句読記号点を入れる必要はありません。 たとえば,図 1-25で示すように, ラベルや入力フィールドの間にコロンをつけないでください。
枠付きのテキスト・フィールドは,ラベルと全く異なって見えます。句読点をつけると, ただ煩雑になるだけです。
ただし,句読点はテキストがメッセージを伝えるときは必要なことに注意してください。 また,コロンは,ヘッダ情報用の出力専用のフィールドでは使用できます。 たとえば,エディタでは,現在のファイル名の表示はつぎのようになります。
コンテキストまたはダイアログ・ボックスの使用がタイトルではっきり分からない場合は, ボックスの一番上に語句または文を加えて,その目的を明確にしてください。 このようなテキストにより,ボックスの残りの内容を簡略化することができます。
図 1-26に,トラッシュ・ ウィンドウにカラーを適用する場合のダイアログ・ ボックスの良くない例と一緒に, 効果的な例の両方を示します。
ダイアログ・ボックス内に制御ボタン類を配置する場合は,次の要領でスペースを使用してください。
各ダイアログ・ボックスの上部,下部,両サイドのマージンが同じか確認してください。 文字または制御ボタン類がウィンドウの端に触れてはいけません。100 dpi のモニタを想定して,省略時のメニュー・フォントの67 フォント・ユニット分を最小マージンとしてください。 図 1-27 を参照してください。
67フォント・ ユニットのマージンを使うには,XmNunitType=Xm100th_font_unitsを設定し, マージンを67に指定します。
gutter(ガター)とは,制御ボタン・グループの各bevel間のマージンのことです。100 dpi のモニタを想定して,gutterの最小値を省略時メニュー・ フォントの45フォント・ユニット分としてください。図 1-27 に例を示します。
bevelマージンとは,bevelと制御ボタン間,またはbevelとラベルとの間のマージンのことです。 各マージンの最小値は省略時フォントの45 フォント・ユニット分としてください。
bevelの影の幅を, 最小値である省略時メニュー・フォントの17ユニット分にするには,XmNshadowThickness を使います。
ラベルの隣にボタンまたはテキスト入力フィールドをレイアウトする場合, ラベルとボタン,またはテキスト入力フィールド間のスペースを調節して, すべてのボタンまたはフィールドの位置がそろうようにレイアウトしてください。 図 1-28はテキスト入力フィールドの適切なレイアウトと不適切なレイアウトを示したものです。
図 1-28 に示すようにラベルの後ろのテキスト入力フィールドすべてをそろえるには, テキスト入力をFormDialogの左にアタッチし, 最長ラベル,スペース,マージンを足した値と等しくなるようにオフセット値を指定してください。
ボタンの隣にラベルをレイアウトする場合,図 1-29 に示すようにボタンと各ラベル間のスペースが均等になるようにしてください。
ラベルとテキスト・フィールドは,縦と横の両方向でそろえることが必要です。 ラベルを縦に最も効果的に配置するには,ラベルを,テキスト入力フィールドの一番下ではなく, テキスト入力フィールド内のテキストのベースラインにそろえてください。 図 1-30に,ラベルのそろえかたの効果的な方法を, そうでないものと一緒に示します。
ラベルをテキストのベースラインにそろえるには,Xm_ATTACH_OPPOSITE_WIDGET を使用して,テキスト・ウィジェットの上部をラベルの上部と結び付け, 負のXmNtopOffsetをテキスト・ウィジェットに設定します。画面に表示したときにベースラインがラベルより下がってみえる場合は, 正のXmNtopOffset を設定してください。
ラベルとテキスト・フィールドを横にそろえるときに使用する良い方法が2 つあります。一つの方法は図 1-31 に示すように,ラベルを左にそろえて配置することです。
もう一つの方法は,図 1-32 に示すように,ラベルを右にそろえて配置することです。
ラベルを右そろえにした場合は,ラベルの右端がそろいます。フィールドの順番は, 左ろえの場合と同じですが,その作成の実施方法が異なります。
どのスタイルを選択した場合でも,アプリケーション全体を通じて選んだスタイルを一貫して使用することと, ユーザが情報を入力するテキスト・ フィールドは常に左そろえの配置になっていることを確かめてください。
以下のプログラミングのヒントでは,左そろえラベル,続いて右そろえラベルの作成方法について述べます。
左そろえラベルの場合は,次のステップに従ってください。
ユーザが行う各国語対応とフォント設定について配慮が必要と考える場合は, 次のステップに従って,実行時にレイアウトを修正がすることが可能です。
右そろえラベルの場合は,次のステップに従ってください。
このような問題が起きないように,次の処置を実行してください。
その後で,テキスト・ウィジェットのカラム・サイズを使用して,ダイアログ・ ボックスのサイズとテキスト・ウィジェットが決められます。 また,テキスト・ウィジェットはフォームの右側にまだアタッチされており, ダイアログ・ボックスと一緒にサイズの変更が行われます。 ダイアログ・ボックスのサイズを変更可能にする方法は,第1.2.2項を参照してください。
ユーザが行う各国語対応とフォント設定について配慮が必要と考える場合は, 次のステップに従って,実行時にレイアウトを修正がすることが可能です。
左から右への言語環境の場合,左から右,上から下へ視線が動くように制御ボタン類を編成します。 インデントを使用して,それぞれのグループ分けと相互の関係がはっきりわかるように並べ表示してください。 制御ボタンを編成する際は, 次に示すガイドラインを参考にしてください。
ダイアログ・ボックスの左上のコーナーはユーザが最初に見る領域です。 この領域を上手に使用してください。次の制御ボタンのいずれかをこのコーナーに配置します。
たとえば,細字か太字のどちらかを選ぶ前に,フォント・ファミリを選ぶほうが順番として理にかなっています。 この場合,左上のコーナーにはフォント・ ファミリの制御ボタンを配置するのがよいでしょう。
関連のある制御ボタンを並べて示す場合,図 1-29 のように左そろえの縦並び,または左から右への横並びを使用します。 横並びは項目が4つ以下の場合に使用します。それ以上の項目がある場合には, 縦並びを使用してください。外国語のテキストは長くなる可能性があるので翻訳では縦並びの方が簡単です。
ラジオ・ボタンを複数のグループで使用する場合は特に注意してください。 ラジオ・ボタンはいずれか1つを選択するものなので,ユーザが確実にグループ分けを理解できるようにレイアウトする必要があります。 ダイアログ・ ボックス内のすべてのボタンから選択できるのか,各グループのボタンから選択するのか, ユーザが混乱しないようにレイアウトしてください。
ラジオ・ボタンとトグル・ボタンのインデントに配慮を加え,グループ化が一層はっきりするようにしてください。 インデントの使用により,空白が増し, ダイアログ・ボックスの密集状態が緩和されてみえます。一般的には, 制御ボタン類のレイアウトは,相互の間に十分な空白と周囲にマージンをもたせ, 表示がユーザの目に優しく写るようにするとともに,ユーザが視線を注意を集中できるはっきりしたものにしてください。 図 1-29と図 1-33 に,インデント付きのラジオ・ボタンとトグル・ボタンのグループ分けを示します。 図 1-33は, 適切なラベル表示をした2つのグループのラジオ・ボタンと,不適切なラベル表示のラジオ・ ボタンを比較したものです。適切なラベル表示によって, グループが異なることが識別しやすくなります。図 1-33 では,bevelが異なるグループの識別に利用されています。
構造を明確にするために,制御ボタン類は次のいずれかの順序で配置します。
図 1-29の重量測定値はアメリカ文化での使用頻度に応じて編成されており,2 つの計量単位が一緒になっています。 このような場合は,選択肢をアルファベット順にして次の順序にしてもよいでしょう。
このように並べかえても,英語圏における計量法というグループ分けは守られます。
省略時のボタンを適切に設定すると,ユーザはリターン・キーを押すだけで作業を続けることができます。 たとえば,ダイアログ・ボックスに最も選択される可能性の高い制御値を表示させることによって, ほとんどの場合にユーザはリターンを押すだけでいいように設定することができます。
図 1-34はすでに選択した値の中で最もよく選択される選択肢を省略時の設定として表示したページ・ セットアップ・ダイアログ・ボックスの例です。ユーザは,「了解」をクリック, あるいはリターン・キーを押すのいずれかの操作で省略時の設定を使用することができます。
オプション・ボタンはオプション・メニューを表示します(オプション・ ボタンを,別のダイアログ・ボックスを起動する「オプション...」プッシュ・ ボタンとは混同しないでください。また,メニュー・バーにある「オプション」メニューとも混同しないでください) 。図 1-35に示すように, ユーザがオプション・ ボタンを押すとメニュー項目が表示されます。
オプション・ボタンを使用すると表示は順次に進行し,ユーザに情報を一度に提供し過ぎることが避けられ, 一段とすっきりした,密集程度が低い, インターフェイスが可能となります。
以下の環境下では,ラジオ・ボタンの代わりにオプション・ボタンの使用を考慮してください。
図 1-36は,図 1-33 でユーザに与えられた同じ選択肢を, どのように2個のオプション・ボタンを使って並べるかを示しています。
1行または1列のいずれかで,1組のオプション・ボタンを一緒に作成する場合は, 必要に応じてそれらを横または縦に配置して,好ましいレイアウトを提供してください。 ボタンのサイズが大体同じ場合には,オプション・ ボタンは同じ幅にする必要があります。
ダイアログ・ボックスが二回目に表示された際に,フィールドすべてに対する値が保存されるようにしてください。 たとえば,ユーザが「作成」ダイアログ・ ボックスを再表示するときに,既に入力されている数値の大部分を保持したいと思う可能性があります。 これらの数値を保存することによって, ユーザがすべての情報を再入力する必要をなくすことができます。 「ディレクトリ」ダイアログ・ボックスの場合には,ユーザは二回目も同じ構成要素を表示を希望しても, 最後に修正した時間などフィールド一箇所の内容を変更したいと考える可能性があります。
必要と思われる場合は,情報を入力する方法として制御ボタン類(ラジオ・ ボタンやリスト・ボックスなど)を選択することも,テキスト入力フィールドに直接入力することもできるように設定します。 たとえば,図 1-37はユーザがテキスト・ フィールド内でサイズをタイプ入力するか, あるいはプッシュ・ボタンを選択することによってウィンドウのサイズを変更するダイアログ・ ボックスです。
ただし,様々な選択方法を使い過ぎて,煩雑にならないように注意することが必要です。 また,視覚的な機能(フラッシング,太字,下線など)を過度に使用してユーザを混乱させないように注意してください。 一般的には, ユーザの注意をそらすことになるのでフラッシングの使用は避けてください。
タブ・グループは,タブ・キーによって移動することができるように編成されているウィジェット群から構成されるグループです。 言い換えれば, タブ・グループとは同じグループに属する制御ボタン群のことです。 たとえば,1組のラジオ・ボタンはタブ・グループになります。 タブ・キーを押すことによって,ダイアログ・ボックス内のタブ・グループ間を移動することができます( このためタブ・グループと呼びます)。
ダイアログ・ボックス内の制御ボタンは,はっきりと識別できるタブ・グループとして編成してください。 キーボードによるタブ・グループ間の移動についてツールキットは次のように区別します。
次の種類の制御ボタンをそれぞれタブ・グループとして扱ってください。
1組のオプション・ボタンも1つのタブ・グループを形成します。
フィールド間の移動に対しては,次のルールに従ってください。
このようにするためには, ダイアログ・ボックス内をタブ・キーで移動させる順序と同じ順序で子ウィジェットを作成します。
ユーザがタブ・キーを押したときに入力フォーカスがどのようにタブ・ グループ間を移動するかについては,図 1-38 と図 1-39を参照してください。 ユーザがタブ・キーを押し続けると,位置カーソルは右下のタブ・ グループから左上のタブ・グループに自動的に戻ります。
タブ・グループ内の項目間を移動する場合は矢印キーを押します。たとえば, あるラジオ・ボタンのメニュー項目から次の項目に移動する場合,下矢印キーを押します。 ただし,矢印キーでタブ・グループ間を移動するすることはできません。
ユーザが矢印キーを押したときにタブ・グループ内で項目間を位置カーソルがどのように移動するかについては, 図 1-40を参照してください。 位置カーソルは自動的に最初の位置に戻ります。 つまり,下矢印キーを押してカーソルが最後の項目に進んだときに, 下矢印キーをもう一度押すと位置カーソルは最初の項目に戻ります。
ダイアログ・ボックスで使用するラベルやテキストおよびメニューやタイトル・ バーなどの画面上の他のオブジェクトを作成するときは,次のガイドラインを守ってください。
正: Null Pointer 誤: NULL POINTER
Loading file /usr/sbin/uerf.hlp The file /usr/sbin/uerf.hlp cannot be found. Please check the file name and directory for spelling or other errors and try again.
Levels with Periods Number of Columns Space Between Columns First Line Indent Dates Before 1993
Go Back Exit
Show Room Go to Page... Save As...
Side-by-Side Cross-References
タイトル・バーは1次および2次ウィンドウの両方で使用されます。
1次ウィンドウでは,次のようにラベルを提供してください。
アプリケーションで省略時のファイル名が使用されている,あるいは作成する前にユーザが名前をつける必要がある場合は, その名前が起動時にタイトル・ バーの上に表示されます。アプリケーションによって, 名前を付ける前に,ユーザがファイルを作成できる場合は,最初からタイトル・ バーに名前を付けないでください。
図 1-41に,タイトル・バー内のファイル名の例を示します。
2次ウィンドウでは,次のようにラベルを提供してください。
ダイアログ・ボックスの名前付けについての詳細は,第1.2.1項を参照してください。
処理中のダイアログ・ボックスと待ちカーソルを使用して,ユーザに進行中の使用アプリケーションの即時フィードバックを提供してください。
大部分の状況で操作が15秒以上を要する場合は,処理中のダイアログ・ボックスを使用して作業の進行を示してください。 操作に要する時間の長さは大部分が使用システムに依存しているので, 処理中のダイアログ・ボックスの表示をオプションにするとよいでしょう。
操作に要する時間が15秒以内の場合は,カーソルをDECwindowsのウォッチ・ カーソルなどの待ちカーソルに変えて,ユーザにアプリケーションが処理中であることを知らせてください。 待ちカーソルの表示を操作が完了するまで続けます。 待ちカーソルは以下の種類の操作に対して使用してください。
ユーザがアプリケーションの操作の完了を待機しているウィンドウ全部で待ちカーソルを設定してください。 たとえば,アプリケーションがディレクトリを復元している場合は, 待ちカーソルを,ディレクトリのウィンドウばかりでなく, その復元の完了にはっきり関係していることが分かっている他のすべてのウィンドウでも設定してください。
以下のコードの例を使用して,稼働中のウィンドウに対して待ちカーソルを設定してください。 アプリケーションがOpenVMSシステムで稼働しているときは,#ifdef が使用されます。もう一方の取込みステートメントは, UNIXとWindows NTシステムの両方に適用されます。
#ifdef OpenVMS #include <decw$cursor.h> #else #include <X11/decwcursor.h> #endif #include <DXm/DECspecific.h> /* Wait? */ if ( wait ) /* Set the wait cursor for this window. */ waitCursor = DXmCreateCursor(widget,decw$c_wait_cursor); else XUndefineCursor(XtDisplay(widget), XtWindow(widget));