このドキュメントでは、次のトピックについて説明します。
スピンコントロールは、"アップダウン" コントロールと呼ばれる上下対になった矢印ボタンと、"バディ" コントロールと呼ばれる、任意で関連付けられた入力フィールドコントロールによって構成されます。 スピンコントロールには整数範囲と現在位置が関連付けられています。 バディコントロール(存在する場合)には、現在位置に関連付けられている内容が表示されます。 現在位置は、矢印ボタンや↑キーおよび↓キーを使用したり、バディ入力フィールド(使用可能かつ変更可能な場合)に直接値を入力したりすることによって、変更できます。
アップダウンコントロールを使用すると、スピンコントロールの整数範囲を明示的にスクロールできます。 アップダウンコントロールのボタンは、↑キーおよび↓キーを使用すると暗黙的に押されます。 ボタンまたはキーを押し続けると、値が連続してインクリメントまたはデクリメントされます。コントロールの[折り返し(w)]スタイルが設定されている場合、範囲の上限または下限に到達すると、反対側の端の値がサイクリックに表示されます。
最初のインクリメント数またはデクリメント数は 1 ですが、数秒間続くとこの値は増加します。 SET-ACCELERATION
アクションでは、この加速を無効にしたり、変更したりできます。
コントロールの範囲は、MIN
属性および MAX
属性を設定することによって定義できます。 コントロールの範囲内の現在位置は、POSITION
属性値を設定またはクエリすることによって、プログラムで設定したり取得したりできます。
現在位置がユーザーによって変更されると、コントロールの CHANGE
イベントが発生します(抑制されていない場合)。 コントロールの値がプログラムによって変更された場合は、このイベントは発生しません。 代わりに、バディ入力フィールドコントロールが存在する場合、バディコントロールの CHANGE
イベント を使用できます。
コントロールの[左に配置(l)]または[右に配置(r)]の各スタイルフラグを設定すると、バディコントロールと呼ばれる入力フィールドがスピンコントロールに組み込まれます。バディコントロールは、スタイルフラグの設定に応じて、アップダウンコントロールの左または右に表示されます(配置は、バディコントロールではなくアップダウンコントロールに対する位置が基準になります)。
バディコントロールはスピンコントロールの子で、標準の Natural 入力フィールドコントロールとして表示されます。 したがって、Natural プログラマは、単独の入力フィールドコントロールで使用できるすべての機能にアクセスできます。 例えば、バディコントロールは、数字のみを受け付けるようにしたり、変更不可能にしたりできます。
スピンコントロールの[バディの設定(s)]スタイルが設定されている場合、アップダウンコントロールの現在位置が変更されると、その現在位置に合わせてバディコントロールが自動的に更新されます。 [バディの設定(s)]スタイルが設定されていない場合、スピンコントロールの
CHANGE
イベントに応じて、バディコントロールの内容を手動で更新する必要があります。
デフォルトでは、日付/時刻の情報は、現在の地域の設定に定義されている日付/時刻のフォーマットに従って表示されます。 Windows には長いフォーマットと短いフォーマットの 2 つの代替日付フォーマットがあり(両方ともユーザーが変更可能)、また短い日付フォーマットには世紀の情報が含まれないことがあるため、3
つの STYLE
フラグの 1 つにより、使用される標準の日付フォーマットが決定されます。 これらのフォーマットは以下のとおりです(相互排他的)。
[短い日付 (s)]。現在の地域の設定に短い日付フォーマットを使用することを意味します。
[世紀日付 (c)]。現在の地域の設定に短い日付フォーマットを使用することを意味しますが、世紀情報が含まれていない場合は、世紀情報を提供するように拡張されます。 多くの場合、短い日付フォーマットには世紀情報がすでに含まれています。この場合、このスタイルにより日付の外観が変わることはありません。
[長い日付(l)]。現在の地域の設定に長い日付フォーマットを使用することを意味します。
また、[時刻(t)]スタイルフラグは、コントロールで(日付ではなく)時刻情報を表示することを示すために用意されています。
これらの標準のフォーマットが十分でない場合は、EDIT-MASK
属性を使用して、これらのフォーマットよりも優先させるカスタムフォーマット文字列を指定することができます。 ただし、フォーマット文字列の指定子は、Natural 内の他の場所にある編集マスクに使用された指定子には対応していません。 次のテーブルに、使用可能な指定子とその意味を示します。
指定子 | 説明 |
---|---|
d | 1 桁または 2 桁の日付。 |
dd | 2 桁の日付。 1 桁の日付の場合、先頭に 0 が付けられます。 |
ddd | 3 文字の週日の略記。 |
dddd | 完全な週日名。 |
h | 12 時間フォーマットの 1 桁または 2 桁の時間。 |
hh | 12 時間フォーマットの 2 桁の時間。 1 桁の値の場合、先頭に 0 が付けられます。 |
H | 24 時間フォーマットの 1 桁または 2 桁の時間。 |
HH | 24 時間フォーマットの 2 桁の時間。 1 桁の値の場合、先頭に 0 が付けられます。 |
m | 1 桁または 2 桁の分。 |
mm | 2 桁の分。 1 桁の値の場合、先頭に 0 が付けられます。 |
s | 1 桁または 2 桁の秒。 |
ss | 2 桁の秒。 1 桁の値の場合、先頭に 0 が付けられます。 |
M | 1 桁または 2 桁の月番号。 |
MM | 2 桁の月番号。 1 桁の値の場合、先頭に 0 が付けられます。 |
MMM | 3 文字の月の略記。 |
MMMM | 完全な月名。 |
t | AM/PM 略記の 1 文字(つまり、AM は "A" と表示される)。 |
tt | AM/PM 略記の 2 文字(つまり、AM は "AM" と表示される)。 |
yy | 年の下 2 桁(つまり、2005 年は "05" と表示される)。 |
yyyy | 完全な年(つまり、2005 年は "2005" と表示される)。 |
また、引用符で囲まれた文字は、指定したとおりに表示されます。 引用符で囲まれた引用符を指定する場合は、2 つの一重引用符を連続して使用する必要があります。 スペースおよび句読点の記号(コンマなど)は、引用符で囲む必要はありません。
例えば、"John's birthday is Friday, December 31, 1969" という文字列を表示するには、DTP コントロールの EDIT-MASK
属性を "'John''s birthday is' dddd, MMMM d, yyyy" に設定します。
DTP コントロールには、指定された情報を修正するための方法がいくつかあります。
ユーザーが、数値情報(日付など)を直接入力します。
ユーザーが、選択されたフィールド(日付、月名など)の値を、+ キーまたは - キーを使用して、それぞれ増やしたり減らしたりします。
DTP コントロールのスタイルが[時刻 (t)]または[上下 (u)]のいずれかの場合、ユーザーが、必要なフィールドを選択し、上下("スピン")コントロールを使用して数値を増やしたり減らしたりします。
DTP コントロールでカレンダーが使用されている場合、ユーザーが、下向きの矢印を押してカレンダーを開き、必要な日付に移動します。 上述した方法とは異なり、この方法ではすべての日付フィールドが同時に更新されます。
プログラム的に、必要な日付または時刻で TIME
属性を更新します。
例えば、DTP コントロールで日付または時刻を現在の日付または時刻に設定するには、次の割り当てを使用します。
#DTP-1.TIME := *DATX
または
#DTP-1.TIME := *TIMX
それぞれ、#DTP-1
は DTP コントロールのハンドルであるとみなされます。
DTP コントロールでは、日付または時刻のコンポーネントの編集しか許可されませんが、コントロールのスタイルに応じて、日付および時刻の両方の情報を保存します。
DTP コントロールに[値なし"" を許可 (n)]のスタイルが指定されている場合、コントロールにチェックボックスが表示されます。 このチェックボックスがオンになっていない場合、そのコントロールに関連付けられた日付または時刻はないと解釈されます。
アプリケーションは、コントロールの CHECKED
属性をクエリすることで、この状態をテストすることができます。 また、CHECKED
属性を UNCHECKED
に戻すことで、"値なし"の状態にコントロールを戻すこともできます。 ただし、CHECKED
属性を明示的に CHECKED
に設定することはできません。これは、日付または時刻がコントロールに適用されるたびに、暗黙的に行われるためです。 さらに、CHECKED
属性は、[値なし"" を許可 (n)]スタイルを使用しない場合、DTP コントロールにまったく設定できません。
DTP コントロールと関連してカレンダー(存在する場合)が使用するカラーおよびフォントは、それぞれ SET-AUX-COLOR
アクションおよび SET-AUX-FONT
アクションを使用して変更できます。