Palm Programmer's Laboratory
Palm OS Programmer's API Reference/8
Palm OS UI は、日付と時間入力値を受け付けるために、2 つのシステム リソースを提供します。
これらのリソースは、日付と時間を入力するための UI ガゼット(訳者注: 原文は gadgetry = 小物類)を保持するダイアログ ボックスです。
Palm OS UI はまた、これらのリソースとの相互作用を管理するための関数を提供します。
この章ではそれらの関数について説明します。
この章で説明される API は、ヘッダ ファイル Day.h, SelDay.h, SelTime.h それに SelTimeZone.h で宣言されています。
日付と時間選択データ構造体 ^TOP^
SelectDayType 構造体 ^TOP^
Prototype
typedef enum { selectDayByDay, // return d/m/y selectDayByWeek, // return d/m/y with d as // same day of the week selectDayByMonth // return d/m/y with d as // same day of the month } SelectDayType;
DaySelectorType 構造体 ^TOP^
Prototype
typedef struct DaySelectorType { RectangleType bounds; Boolean visible; UInt8 reserved1; Int16 visibleMonth; // month actually // displayed Int16 visibleYear; // year actually // displayed DateTimeType selected; SelectDayType selectDayBy; UInt8 reserved2; } DaySelectorType;
HMSTime 構造体 ^TOP^
Prototype
typedef struct { UInt8 hours; UInt8 minutes; UInt8 seconds; UInt8 reserved; } HMSTime;
日付と時間選択関数 ^TOP^
DayDrawDays 関数 ^TOP^
目的
日にち選択コントロール オブジェクトの月の日々の部分だけを描きます。
宣言されている場所
Day.h
Prototype
void DayDrawDays( const DaySelectorType *selectorP )
パラメータ
- → selectorP
- 描くコントロール オブジェクトへのポインタ
返り値
返り値はありません。
コメント
この関数は年または月を変更するときに使用されます。月の日々を表すコントロール部分だけを描くことで、週のタイトルが再描画される場合に起こる画面のちらつきを回避します。
互換性
5.0 New Feature Set または Palm OS Cobalt Feature Set のどちらかが存在する場合、この関数は実装されません。
参照
DayDrawDaySelector 関数 ^TOP^
目的
スクリーン上の日にち選択コントロール オブジェクトを描きます。
宣言されている場所
Day.h
Prototype
void DayDrawDaySelector( const DaySelectorType *selectorP )
パラメータ
- → selectorP
- 描画するコントロール オブジェクトへのポインタ
返り値
返り値はありません。
コメント
コントロールは、それが使用可能な場合にのみ、描画されます。
互換性
5.0 New Feature Set または Palm OS Cobalt Feature Set のどちらかが存在する場合、この関数は実装されません。
DayHandleEvent 関数 ^TOP^
目的
指定されたコントロールのイベントを処理します。この関数は 2 種類のイベント(penDownEvent と ctlEnterEvent)を処理します。この関数は OS に使用されることを主に意図しています; アプリケーションは、通常、この関数を使用しません。
宣言されている場所
Day.h
Prototype
Boolean DayHandleEvent( DaySelectorType *selectorP, const EventType *pEvent )
パラメータ
- → selectorP
- コントロール オブジェクトへのポインタ
- → pEvent
- EventType 構造体へのポインタ
返り値
イベントが処理された場合は true、されなかった場合は false。
日付を使用するかどうかの情報を持つ daySelectEvent を発します。
コメント
ユーザが可視の月の中の日にちを選択する場合、日付が使用されます。
この関数が penDownEvent を受け取ると、ペンの位置がコントロール オブジェクトの領域内かどうかをチェックします。
領域内であれば、dayEnterEvent がイベント キューに追加され、関数は終了します。
この関数が dayEnterEvent を受け取ると、イベント レコードの中のコントロール ID が指定されたコントロールの ID と一致するかどうかチェックします。一致する場合、この関数は、daySelectEvent が発せられたコントロールの領域内でペンが持ち上げられるまで、ペンを追跡します。
ペンが領域内から出る場合、dayExitEvent が発せられます。
互換性
Palm OS Cobalt Feature Set が存在する場合、この関数は実装されません。
SelectDay 関数 ^TOP^
目的
日付を表示するフォームを表示します; ユーザが異なる日付を選択できるようにします。
宣言されている場所
SelDay.h
Prototype
Boolean SelectDay( const SelectDayType selectDayBy, Int16 *month, Int16 *day, Int16 *year, const Char *title )
パラメータ
- selectDayBy
- ユーザに日にちを選択させるための手段(訳者注: 原文は method)。取り得る値は、selectDayByDay, selectDayByWeek それに selectDayByMonth です。SelectDayType を参照してください。
- ←→ month, day, year
- 選択される月、日、年
- → title
- ダイアログのための文字列タイトル
返り値
OK ボタンが押された場合、true。month, day それに year が新しい日付を保持している場合、true。
互換性
2.0 New Feature Set が存在する場合にのみ、実装されます。
SelectDayV10 関数 ^TOP^
目的
日付を表示するフォームを表示します; ユーザが異なる日付を選択できるようにします。
宣言されている場所
SelDay.h
Prototype
Boolean SelectDayV10 ( Int16 *month, Int16 *day, Int16 *year, const Char *title )
パラメータ
- ←→ month, day, year
- 選択される月、日、年。これらのパラメータに渡される初期値は有効でなければなりません。
- → title
- ダイアログのための文字列タイトル
返り値
OK ボタンが押された場合、true を返します。そのようなケースでは、渡されたパラメータは変更されています。
互換性
この関数は、SelectDay の 1.0 バージョンに対応するものです。
参照
SelectOneTime 関数 ^TOP^
目的
時刻を表示するフォームを表示し、ユーザが異なる時刻を選択できるようにします。
宣言されている場所
SelTime.h
Prototype
Boolean SelectOneTime ( Int16 *hour, Int16 *minute, const Char *titleP )
パラメータ
- ←→ hour
- フォームの中で選択される時
- ←→ minute
- フォームの中で選択される分
- → titleP
- タイトルとして表示される文字列へのポインタ。関数が実行している間は変更しないでください。
返り値
ユーザが OK を選択すると、true を返し、そうでない場合は false を返します。true が返される場合、hour と minute の中の値は変更されている可能性があります。
コメント
開始点と終了点を持つ時刻の範囲ではなく、時間のある 1 点を指定するダイアログを表示したい場合に、SelectTime の代わりにこの関数を使用します。
互換性
3.1 New Feature Set が存在する場合にのみ、実装されます。
参照
SelectTime 関数 ^TOP^
目的
開始時刻と終了時刻を表示するフォームを表示します。ユーザが異なる時刻を選択できるようにします。
宣言されている場所
SelTime.h
Prototype
Boolean SelectTime ( TimeType *startTimeP, TimeType *EndTimeP, Boolean untimed, const Char*titleP, Int16 startOfDay, Int16 endOfDay, Int16 startOfDisplay )
パラメータ
- ←→ startTimeP, EndTimeP
- タイプ TimeType の値へのポインタ。これら 2 つのパラメータの間を表示するために値を渡します。ユーザが選択を行い、OK ボタンをタップした場合、選択された値がここに返されます。
- → untimed
- 時刻無しが選択されていることを示すためには true を渡します。ユーザが時刻に時刻無しをした場合、startTimeP と EndTimeP の両方ともが定数 noTime (-1) にセットされます。
- → titleP
- タイトルとして表示される文字列へのポインタ。関数が実行している間は変更しないでください。
- → startOfDay
- 時リストがそのリストの先頭に表示する時。より早い時を見るために、ユーザはそのリストを上にスクロールさせることができます。この値は 0 以上 12 以下の間の値でなければなりません。
- → endOfDay
- 「すべての日」ボタンが選択されているときに使用される時。
- → startOfDisplay
- 初期状態で可視の最初の時。
返り値
ユーザが OK を選択すると、true を返し、そうでない場合は false を返します。true が返される場合、hour と minute の中の値は変更されている可能性があります。
コメント
SelectTime のこのバージョンは、機能的に endOfDay と startOfDisplay を追加します。
互換性
3.5 New Feature Set が存在する場合にのみ、実装されます。
参照
SelectTimeV33 関数 ^TOP^
目的
時刻を表示するフォームを表示し、ユーザが異なる時刻を選択できるようにします。
この関数は古いものであり、使用すべきではありません。
宣言されている場所
SelTime.h
Prototype
Boolean SelectTimeV33 ( TimeType *startTimeP, TimeType *EndTimeP, Boolean untimed, const Char *titleP, Int16 startOfDay )
パラメータ
- ←→ startTimeP, EndTimeP
- タイプ TimeType の値へのポインタ。これら 2 つのパラメータの間を表示するために値を渡します。ユーザが選択を行い、OK ボタンをタップした場合、選択された値がここに返されます。
- → untimed
- 時刻無しが選択されていることを示すためには true を渡します。ユーザが時刻に時刻無しをした場合、startTimeP と EndTimeP の両方ともが定数 noTime (-1) にセットされます。
- → titleP
- タイトルとして表示される文字列へのポインタ。関数が実行している間は変更しないでください。
- → startOfDay
- 時リストがそのリストの先頭に表示する時。より早い時を見るために、ユーザはそのリストを上にスクロールさせることができます。この値は 0 以上 12 以下の間の値でなければなりません。
返り値
ユーザが OK を選択すると、true を返し、そうでない場合は false を返します。true が返される場合、hour と minute の中の値は変更されている可能性があります。
コメント
- NOTE
- 古い関数は下位互換性のためだけに提供されます; 例えば、1.0 アプリケーションが 3.x OS リリース上で機能するためです。新しいコードはこれらの関数を呼び出すべきではありません!
参照
SelectTimeZone 関数 ^TOP^
目的
ユーザが異なるタイム ゾーンを選択できるようにするフォームを表示します。
宣言されている場所
SelTimeZone.h
Prototype
Boolean SelectTimeZone ( Int16 *ioTimeZoneP, LmLocaleType *ioLocaleInTimeZoneP, const Char *titleP, Boolean showTimes, Boolean anyLocale )
パラメータ
- ←→ ioTimeZoneP
- グリニッジ標準時(GMT)の東に何分かで与えられるタイム ゾーンへのポインタ。初期値はフォームの最初の選択として使用されます。返り時には、このパラメータはユーザが選択した新しいタイム ゾーンを保持します。
- ←→ ioLocaleInTimeZoneP
- タイム ゾーン カントリーを指定するロケール(LmLocaleType を参照してください)へのポインタ。このパラメータは、カナダとチリなどのようにタイム ゾーンを共有するカントリーのために使用されます。
- → titleP
- ダイアログのためのタイトルとして使用される文字列。デフォルトのタイトル "Set Time Zone" を使用するには、NULL を渡します。
- → showTimes
- true の場合、ダイアログは、現在と新しく選択されたタイム ゾーン両方の正確な時刻を表示します。false の場合、ダイアログは現在の時刻を表示しません。false を使用することで、タイム ゾーンのリストのための領域をより大きくすることができます。
- → anyLocale
- true の場合、エントリ時の ioLocaleInTimeZoneP を無視します。
返り値
ユーザがタイム ゾーンを変更するためにダイアログの中の OK ボタンをクリックした場合は、true を返します。ユーザが Cancel ボタンをクリックした場合は、false を返します。
コメント
フォームの中に表示されるタイム ゾーンはカントリーによってリストされます。このため、ioTimeZoneP によって指定されるタイム ゾーンがいくつかのカントリーによって共有されている場合、リストが最初に表示されるときにどのカントリーが選択されているべきかを指定するために、ioLocaleInTimeZoneP の値を供給する必要があります。このパラメータによって指される構造体の言語フィールドのための値として定数 lmAnyLanguage を使用することができます。
初期状態で選択されている値がどれであっても気にしない場合は、anyLocale パラメータに true を渡します。このケースでは、初期状態で、ioTimeZoneP で与えられた GMT オフセットに一致するカントリーが選択されます。
ioTimeZoneP のための初期値としてシステム設定の中に保存されている現在のタイム ゾーンを使用したいと思うかもしれません。このタイム ゾーンを取得するには、以下のようにします:
Int16 timeZone = (Int16)PrefGetPreference(prefTimeZone); CountryType timeZoneCountry = (CountryType) PrefGetPreference(prefTimeZoneCountry); LmLocaleType timeZoneLocale; Boolean change; timeZoneLocale.country = timeZoneCountry; timeZoneLocale.language = lmAnyLanguage; change = SelectTimeZone(&timeZone, &timeZoneLocale, NULL, true, false);
互換性
4.0 New Feature Set が存在する場合に実装されます。