Palm Programmer's Laboratory
Palm OS Programmer's Companion Volume I/4-5
4-5 フィールド
フィールドオブジェクトは1行またはそれ以上のテキストを表示します。図 4.15 に示しているのは下線付きで左揃えの、データを含んだフィールドです。
図 4.15 フィールド
フィールドオブジェクトは以下の機能をサポートします。
- プロポーショナルフォント(フィールド単位で1フォントのみ)
- ドラッグによる選択
- 複数行フィールドでのスクロール
- カット、コピー、およびペースト
- 左端、および右端揃え
- タブストップ
- 編集可能/不可能属性
- フィールドの高さの拡張( 多くのテキストが入力されるとフィールドの高さを拡張 )
- 下線付きテキスト(フィールドの各行に下線を表示)
- 最大文字数制限(最大文字数に達っすると文字入力を停止)
- 特殊キー( Graffiti および Graffiti 2 ストローク )によるカット、コピー、ペーストのサポート
- ペンによるカーソルの移動( 文字と文字の間をペンでタップしてカーソル位置を指定 )
- スクロールバー
フィールドオブジェクトは重ね打ち入力モード、水平スクロール、数値のフォーマット、および特殊キーでのページアップ、ページダウン、left word、right word、ホーム、エンド、left margin、right margin、バックスペースをサポートしていません。バージョン 3.5 未満の Palm OS では、フィールドオブジェクトは単語選択もサポートしていません。バージョン 3.5 以降では、単語をダブルタップすればその単語を選択し、トリプルタップをすることによって行全体を選択します。
訳注:left word、right word、left margin、right margin については 意味が良くわからなかったのでひとまずそのままとしています。
- NOTE
- フィールドオブジェクトはラインフィード( 0x0A )は処理できますが、キャリッジリターン( 0x0D )は処理できません。PalmRez は Palm OS リソース内で見つけたキャリッジリターンを全てラインフィードに変換しますが、スタティックデータについてはなにもしません。
フィールドオブジェクトのイベントは FldHandleEvent で処理されます。表 4.13 に FldHandleEvent がどのように各種のイベントを扱うかの概要を示します。
表 4.13 フィールドのイベントフロー
ユーザー操作 | 生成されるイベント | FldHandleEvent の応答 |
---|---|---|
フィールドをペンで押下 | penDownEvent と x & y 座標を EventType に設定 | fldEnterEvent をイベントキューに追加 |
フィールド ID の fldEnterEvent | カーソル位置をペンの位置に合わせ、ペンが離されるまで追跡。ドラッグによる選択とスクロールをサポート。 | |
Palm OS 3.5 以降では、ダブルタップでその位置の単語を選択し、トリプルタップで行を選択。 | ||
ペンが離される | penUpEvent と x & y 座標を EventType に設定 | なにもしない。他のフィールドが選択されるか、そのフィールドを含むフォームがクローズされるまでフィールドは選択状態のまま。 |
選択フィールドに文字を入力 | keyDownEvent と 文字コードを EventType に設定 | 文字をフィールドのテキスト文字列に追加 |
上矢印キーを押下 | keyDownEvent | カーソルを1行上に移動 |
下矢印キーを押下 | keyDownEvent | カーソルを1行下に移動。カーソルが最終行にあれば移動しない。 |
左矢印キーを押下 | keyDownEvent | カーソルを1文字分左に移動。左端に到達した場合は前の行の終端に移動。 |
右矢印キーを押下 | keyDownEvent | カーソルを1文字分右に移動。右端に到達した場合は次の行の先頭に移動。 |
カットコマンド | keyDownEvent | 選択文字列をテキストクリップボードに切り取り。 |
コピーコマンド | keyDownEvent | 選択文字列をテキストクリップボードにコピー。 |
ペーストコマンド | keyDownEvent | クリップボードのテキストをフィールドのカーソル位置に挿入。 |