Palm Programmer's Laboratory
Palm OS Programmer's API Reference/10
この章では、ヘッダ ファイル Find.h で定義されている、グローバル検索機能について説明します。
追加情報は、Palm OS Programmer's Companion, vol. I の「テキスト」を参照してください。
検索関数 ^TOP^
FindDrawHeader 関数 ^TOP^
目的
見つかったアイテムのリストを、アプリケーションごとに、切り分けるヘッダ ラインを描きます。
宣言されている場所
Find.h
Prototype
Boolean FindDrawHeader ( FindParamsPtr findParams, Char const *title )
パラメータ
- → findParams
- sysAppLaunchCmdFind 開始コードのパラメータ ブロックへのポインタ
- → title
- 現在のアプリケーションのためのタイトルとして表示される文字列
返り値
スクリーンが埋められた(訳者注: 描かれた)場合は、true を返します。これが起きた場合、アプリケーションは検索を終了すべきです。
コメント
この関数を、あなたのアプリケーションの sysAppLaunchCmdFind 開始コードへの応答の始めに、一度呼び出します。この関数はアプリケーションの検索結果のためのヘッダを描きます。ヘッダはあなたのアプリケーションからの検索結果と他のアプリケーションからの検索結果を切り分けます。
あなたのアプリケーションが複数のデータベースを検索する場合、あなたはデータベース間のセパレータとしても FindDrawHeader を使用するかもしれません。
FingGetLineBounds 関数 ^TOP^
目的
一致するものを表示するために使用可能な検索結果ダイアログの中の次の行の境界を返します。
宣言されている場所
Find.h
Prototype
void FindGetLineBounds( const FindParamsType *findParams, RectanglePtr r )
パラメータ
- → findParams
- sysAppLaunchCmdFind 開始コードのパラメータ ブロックへのポインタ
- ← r
- 結果を表示するための次の行を保持しているべき領域の境界
返り値
返り値はありません。
FindSaveMatch 関数 ^TOP^
目的
レコードとテキスト検索で一致するレコード内の位置を保存します。この情報は保存され、それにより、あとで一致したものへのナビゲートが可能です。
宣言されている場所
Find.h
Prototype
Boolean FindSaveMatch ( FindParamsPtr findParams, UInt16 recordNum, UInt16 pos, UInt16 fieldNum, UInt32 appCustom, UInt16 cardNo, LocalID dbID )
パラメータ
- → findParams
- sysAppLaunchCmdFind 開始コードのパラメータ ブロックへのポインタ
- → recordNum
- レコード インデックス。このパラメータは sysAppLaunchCmdGoTo のパラメータ ブロックの中の recordNum フィールドをセットします。
- → pos
- 一致文字列のレコード開始点からのオフセット。このパラメータは sysAppLaunchCmdGoTo のパラメータ ブロックの中の matchPos フィールドをセットします。
- → fieldNum
- 文字列が見つかったフィールド番号。このパラメータは sysAppLaunchCmdGoTo のパラメータ ブロックの中の matchFieldNum フィールドをセットします。
- → appCustom
- 一致したものと一緒にアプリケーションが保存することができる臨時データ。このパラメータは sysAppLaunchCmdGoTo のパラメータ ブロックの中の matchCustom フィールドをセットします。
- → cardNo
- 一致するものを保持するデータベースのカード番号。このパラメータは sysAppLaunchCmdGoTo のパラメータ ブロックの中の dbCardNo フィールドをセットします。
- → dbID
- 一致するものを保持するデータベースのローカル ID。このパラメータは sysAppLaunchCmdGoTo のパラメータ ブロックの中の dbID フィールドをセットします。
返り値
スクリーンが埋められた(訳者注: 描かれた)場合は、true を返します。これが起きた場合、アプリケーションは検索を終了すべきです。
コメント
あなたのアプリケーションが一致文字列を持つレコードを見つけた(FindStrInStr() または TxtFindString()|Palm OS Programmer's API Reference/55 が true を返す)とき、この関数を呼び出します。この関数はあなたが渡す情報を保存します。ユーザが検索結果ダイアログの中のこの選択をクリックした場合、その情報は所得され、sysAppLaunchCmdFind 開始コードのパラメータ ブロックをセット アップするために使用されます。
あなたは appCustom フィールドを、ユーザが選択したレコードへナビゲートするために必要となるかもしれないいずれかのアプリケーション指定データのために、使用することができます。ローカライズすることができるアプリケーションのために appCustom に一致文字列の長さをセットするのが一般的です。なぜなら、グローバル検索機能は、マルチ-バイト文字セットを持つシステム上では、一致文字列の長さを正確に決定することができないからです。TxtFindString 関数は正確にシングル-バイト文字をそれらのマルチ-バイト等価物に一致させ(訳者注: マルチ-バイト文字を含む文字列の比較ができるということ)、一致文字列の長さを返します。あなたが TxtFindString の返り値を appCustom パラメータとして FindSaveMatch に渡した場合、sysAppLaunchCmdGoTo パラメータ ブロックの matchCustom フィールドは一致文字列の長さを保持します。
あなたのアプリケーションがさらに多くのカスタム情報を要求する場合、あなたはその情報を機能(feature)の中に保存し、機能番号を appCustom フィールドの中に保存することができます。更なる情報は、「機能マネージャ」?を参照してください。
FindStrInStr 関数 ^TOP^
目的
文字列の case-blind prefix search (訳者: 先頭文字が大文字か小文字かは気にしない検索という意味だと思われる)を実行します。この関数は見つける文字列がすでに検索のために正規化されていると仮定します。
宣言されている場所
Find.h
Prototype
Boolean FindStrInStr ( Char const *strToSearch, Char const *strToFind, UInt16 *posP )
パラメータ
- → strToSearch
- 検索する文字列。
- → strToFind
- 見つけるテキスト文字列の正規化バージョン。
- ← pos
- 一致するものが見つかった場合、一致するものの strToSeach 内のオフセットを保持します。
返り値
文字列が見つかった場合は、true を返します。FindStrInStr は単語の先頭のみを一致させます; つまり、FindStrInStr が true を返すためには、strToFind は単語の 1 つの接頭辞でなけらばならないということです。
コメント
テキスト マネージャをサポートするシステムでは、この関数を使用しないでください。その代わり、マルチ-バイト文字を保持する文字列の検索を行い、一致テキストの長さを返す TxtFindString()|Palm OS Programmer's API Reference/55 を使用してください。
テキスト マネージャをサポートしないシステムへの下位互換性のためには、PalmOSGlue ライブラリの中にある TxtGlueFindString を使用してください。TxtGlueFindString は、テキスト マネージャが存在する場合は TxtFindString を呼び出し、存在しない場合は FindStrInStr を呼び出します。更なる情報は、第 80 章 「PalmOSGlue ライブラリ」? を参照してください。
探索文字列を正規化する手法はさまざまで、Palm OS のバージョンとデバイスでサポートされている文字エンコードに依存します。
sysAppLaunchCmdFind 開始コードのパラメータ ブロックの strToFind フィールドの中にある、あなたのアプリケーションに渡される文字列はすでに正規化されています。それを直接 FindStrInStr に渡すことができます。あなた自身の正規化された検索文字列を作成する必要がある場合は、PalmOSGlue ライブラリの中にある TxtGluePrepFindString を使用してください。