{{div_begin}} [[← 17 章に戻る|Palm OS Programmer's API Reference/17]] [[↑トップへ|Palm OS Programmer's API Reference]] [[19 章に進む →|Palm OS Programmer's API Reference/19]] {{div_end}} {{div_begin style="margin-bottom:-10px"}} !!!18 スクロール バー {{div_end}} {{div_begin "style='position:absolute;right:0px;font-size:70%;margin-right:15px;margin-top:15px;width:250px;'"}} *{{goto Scroll Bar Data Structures,スクロール バー データ構造体}} **{{goto ScrollBarAttrType,ScrollBarAttrType}} **{{goto ScrollBarPtr,ScrollBarPtr}} **{{goto ScrollBarType,ScrollBarType}} *{{goto Scroll Bar Resources,スクロール バー リソース}} *{{goto Scroll Bar Functions,スクロール バー関数}} **{{goto SclDrawScrollBar,SclDrawScrollBar}} **{{goto SclGetScrollBar,SclGetScrollBar}} **{{goto SclHandleEvent,SclHandleEvent}} **{{goto SclSetScrollBar,SclSetScrollBar}} {{div_end}} {{div_begin "style='position:relative;padding:0px;padding-right:5px;padding-left:10px;margin-right:250px;margin-top:20px;width:auto;border-right-style:dotted;border-right-width:2px;border-right-color:silver;'"}} この章では、スクロール バー API のための参照資源を提供します。 *{{goto Scroll Bar Data Structures,スクロール バー データ構造体}} *{{goto Scroll Bar Resources,スクロール バー リソース}} *{{goto Scroll Bar Functions,スクロール バー関数}} ヘッダ ファイル {{span style='color:blue;font-family:monospace;',ScrollBar.h}} がこの章で説明する API を定義しています。追加情報は、''Palm OS Programmer's Companion, vlo. I'' の [[「スクロール バー」|Palm OS Programmer's Companion Volume I/4-12]] を参照してください。 !!{{anchor Scroll Bar Data Structures}}スクロール バー データ構造体 {{goto top,^TOP^}} !{{anchor ScrollBarAttrType}}ScrollBarAttrType 構造体 {{goto top,^TOP^}} '''目的''' {{span style='color:blue;font-family:monospace;',ScrollBarAttrType}} ビット フィールドはスクロール バーの可視特性を定義します。 '''Prototype''' typedef struct { UInt16 usable:1; UInt16 visible:1; UInt16 hilighted:1; UInt16 shown:1; UInt16 activeRegion:4; } ScrollBarAttrType; '''フィールド''' *{{span style='color:blue;font-family:monospace;',usable}} **セットされていない場合、スクロール バー オブジェクトは、アプリケーションの現在のインターフェイスの一部とは見なされず、スクリーン上にも現れません。 *{{span style='color:blue;font-family:monospace;',visible}} **セットされている場合、スクロール バーはスクリーン上に表示されることを許可されます。{{span style='color:blue;font-family:monospace;',visible}} と {{span style='color:blue;font-family:monospace;',usable}} の両方が {{span style='color:blue;font-family:monospace;',true}} の場合、スクロール バーは実際にスクリーン上に表示されます。 *{{span style='color:blue;font-family:monospace;',highlighted}} **上矢印または下矢印のどちらかがハイライトされている場合、{{span style='color:blue;font-family:monospace;',true}} です。 *{{span style='color:blue;font-family:monospace;',shown}} **スクロール バーが可視であるかどうかと、{{span style='color:blue;font-family:monospace;',maxValue}} > {{span style='color:blue;font-family:monospace;',minValue}} であるかどうか({{goto ScrollBarType,ScrollBarType}} を参照してください)をセットします。 *{{span style='color:blue;font-family:monospace;',activeRegion}} **ペンの接触イベントを受け取るスクロール バーの領域。取り得る値は以下の通りです。 {{div_begin style="margin-left:5em;"}} *{{span style='color:blue;font-family:monospace;',sclUpArrow}} **上矢印 *{{span style='color:blue;font-family:monospace;',sclDownArrow}} **下矢印 *{{span style='color:blue;font-family:monospace;',sclUpPage}} **スクロール カーと上矢印の間の領域 *{{span style='color:blue;font-family:monospace;',sclDownPage}} **スクロール カーと下矢印の間の領域 *{{span style='color:blue;font-family:monospace;',sclCar}} **スクロール カー {{div_end}} !{{anchor ScrollBarPtr}}ScrollBarPtr Typedef {{goto top,^TOP^}} '''目的''' {{span style='color:blue;font-family:monospace;',ScrollBarPtr}} 型は {{goto ScrollBarType,ScrollBarType}} 構造体へのポインタを定義します。 '''Prototype''' typedef ScrollBarType *ScrollBarPtr; {{span style='color:blue;font-family:monospace;',ScrollBarPtr}} をすべてのスクロール バー関数へ引数として渡します。以下に示すように、{{goto FrmGetObjectPtr,FrmGetObjectPtr()|Palm OS Programmer's API Reference/11-1}} を使って {{span style='color:blue;font-family:monospace;',ScrollBarPtr}} を取得することができます。 scrollBarPtr = FrmGetObjectPtr(frm, FrmGetObjectIndex(frm, scrollBarID)); {{span style='color:blue;font-family:monospace;',scrollBarID}} はスクロール バーの作成時に代入したリソース ID です。 !{{anchor ScrollBarType}}ScrollBarType 構造体 {{goto top,^TOP^}} '''目的''' {{span style='color:blue;font-family:monospace;',ScrollBarType}} はスクロール バーを表します。 //---- //{{span style='color:red;font-weight:bold;',WARNING!}} PalmSource 社(訳者注: 現 ACCESS 社)は、{{span style='color:blue;font-family:monospace;',ScrollBarType}} 構造体の下位互換をサポートしていません。構造体メンバに直接アクセスしないでください。そのようなコードは将来のバージョンで機能しないかもしれません。以下の情報はデバッグ目的でのみ使用してください。 //---- ::{{span style='color:red;font-weight:bold;',WARNING!}} :::PalmSource 社(訳者注: 現 ACCESS 社)は、{{span style='color:blue;font-family:monospace;',ScrollBarType}} 構造体の下位互換をサポートしていません。構造体メンバに直接アクセスしないでください。そのようなコードは将来のバージョンで機能しないかもしれません。以下の情報はデバッグ目的でのみ使用してください。 '''Prototype''' typedef struct { RectangleType bounds; UInt16 id; ScrollBarAttrType attr; Int16 value; Int16 minValue; Int16 maxValue; Int16 pageSize; Int16 penPosInCar; Int16 savePos; } ScrollBarType; 作成するコードは {{span style='color:blue;font-family:monospace;',ScrollBarType}} を実体の無いものとして扱うべきです。各値を取得、セットするにはこの章で説明する関数を使用してください。構造体メンバ値を直接変更しようとしないでください。 '''フィールド''' *{{span style='color:blue;font-family:monospace;',bounds}} **スクリーン上のスクロール バーの位置(絶対座標)とサイズ(ピクセル単位)。例えば、ID が {{span style='color:blue;font-family:monospace;',kObjectID}} のフォームの中にあるオブジェクトの領域にアクセスするには、以下のようにします。 {{div_begin style="margin-left:5em;"}} { RectangleType rect; FormPtr formP = FrmGetActiveForm(); FrmGetObjectBounds(formP, FrmGetObjectIndex(formP, kObjectID), &rect); } {{div_end}} *{{span style='color:blue;font-family:monospace;',id}} **スクロール バー オブジェクト作成時に指定する ID 値。 *{{span style='color:blue;font-family:monospace;',attr}} **スクロール バーの属性。{{goto ScrollBarAttrType,ScrollBarAttrType}} を参照してください。 *{{span style='color:blue;font-family:monospace;',value}} **スクロール バーの現在の値。この値はスクロール バーの位置を決定するために使用されます。(スクロール バーの中の黒い領域はドキュメントの中の(訳者補足: スクロール バーが示している)位置を示します。){{goto SclGetScrollBar,SclGetScroll()}} を使ってこの値を取得します。与えられる数は通常 {{span style='color:blue;font-family:monospace;',minValue}} と {{span style='color:blue;font-family:monospace;',maxValue}} に関係する数です。これらの値は、スクロール バーが貼り付けられているオブジェクトの物理的な特性、オブジェクトの行数など、には関係しません。この値は通常、初期状態では 0 にセットされ、{[goto SclSetScrollBar,SclSetScrollBar()}} を使ってプログラム上で調節されます。 *{{span style='color:blue;font-family:monospace;',minVluae}} **最小値。{{span style='color:blue;font-family:monospace;',value}} が {{span style='color:blue;font-family:monospace;',minValue}} と等しいとき、スクロール カーはスクロール領域の最上段に位置しています。この値は通常 0 です。{{goto SclGetScrollBar,SclGetScrollBar()}} を使ってこの値を取得します。 *{{span style='color:blue;font-family:monospace;',maxVluae}} **最大値。{{span style='color:blue;font-family:monospace;',value}} が {{span style='color:blue;font-family:monospace;',maxValue}} と等しいとき、スクロール カーはスクロール領域の最下段に位置しています。この値は通常初期状態で 0 であり、{{goto SclSetScrollBar,SclSetScrollBar()}} を使ってプログラム上で調節されます。{{goto SclGetScrollBar,SclGetScrollBar()}} を使ってこの値を取得します。 *{{span style='color:blue;font-family:monospace;',pageSize}} **ユーザが 1 ページ分スクロールさせたときのスクロールする行数。{{goto SclGetScrollBar,SclGetScrollBar()}} を使ってこの値を取得します。 *{{span style='color:blue;font-family:monospace;',penPosInChar}} **内部で使用されます。 *{{span style='color:blue;font-family:monospace;',savePos}} **内部で使用されます。 !!{{anchor Scroll Bar Resources}}スクロール バー リソース {{goto top,^TOP^}} スクロール バー リソース(tSCL)はスクロール バーを表します。追加情報は、''Palm OS User Interface Guidelines'' を参照してください。 !!{{anchor Scroll Bar Functions}}スクロール バー関数 {{goto top,^TOP^}} !{{anchor SclDrawScrollBar}}SclDrawScrollBar 関数 {{goto top,^TOP^}} '''目的''' スクロール バーを描きます。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',ScrollBar.h}} '''Prototype''' void SclDrawScrollBar ( ScrollBarType *bar ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ bar}} **スクロール バー({{goto ScrollBarType,ScrollBarType}} 構造体)へのポインタ '''返り値''' 返り値はありません。 '''コメント''' この関数は {{goto SclSetScrollBar,SclSetScrollBar()}} と {{goto FrmDrawForm,FrmDrawForm()|Palm OS Programmer's API Reference/11-1}} によって内部的に呼び出されます。 '''互換性''' {{goto 2.0 New Feature Set,2.0 New Feature Set|Palm OS Programmer's API Reference/B-1}} が存在する場合にのみ、実装されます。 !{{anchor SclGetScrollBar}}SclGetScrollBar 関数 {{goto top,^TOP^}} '''目的''' スクロール バーの現在の位置、範囲、ページのサイズを取得します。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',ScrollBar.h}} '''Prototype''' void SclGetScrollBar ( const ScrollBarType *bar, Int16 *valueP, Int16 *minP, Int16 *maxP, Int16 *pageSizeP ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ bar}} **スクロール バー({{goto ScrollBarType,ScrollBarType}} 構造体)へのポインタ *{{span style='color:blue;font-family:monospace;',← valueP}} **スクロール バーの現在の位置を表す値。(スクロール カーはドキュメントの中の位置を示す黒い領域です。) *{{span style='color:blue;font-family:monospace;',← minP}} **ユーザ インターフェイス オブジェクトの最上段を表す値。 *{{span style='color:blue;font-family:monospace;',← maxP}} **ユーザ インターフェイス オブジェクトの最下段を表す値。 *{{span style='color:blue;font-family:monospace;',← pageSizeP}} **ページのサイズへのポインタ(ページ スクロール時に使用されます)。 '''返り値''' スクロール バーの現在の値を {{span style='color:blue;font-family:monospace;',valueP}}, {{span style='color:blue;font-family:monospace;',minP}}, {{span style='color:blue;font-family:monospace;',maxP}}, {{span style='color:blue;font-family:monospace;',pageSizeP}} に収めて返します。 '''コメント''' この関数を、スクロール バーを更新するために {{goto SclSetScrollBar,SclSetScrollBar()}} を呼び出す直前に、呼び出すかもしれません。{{span style='color:blue;font-family:monospace;',SclGetScrollBar}} はスクロール バーの現在の値を返します。返された値を必要があれば調節し、{{span style='color:blue;font-family:monospace;',SclSetScrollBar}} に渡すことができます。 '''互換性''' {{goto 2.0 New Feature Set,2.0 New Feature Set|Palm OS Programmer's API Reference/B-1}} が存在する場合にのみ、実装されます。 '''参照''' {{goto SclSetScrollBar,SclSetScrollBar()}} !{{anchor SclHandleEvent}}SclHandleEvent 関数 {{goto top,^TOP^}} '''目的''' スクロール バーに影響を与えるイベントをハンドルします。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',ScrollBar.h}} '''Prototype''' Boolean SclHandleEvent ( ScrollBarType *bar, const EventType *event ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ bar}} **スクロール バー({{goto ScrollBarType,ScrollBarType}} 構造体)へのポインタ *{{span style='color:blue;font-family:monospace;',→ event}} **イベント({{goto EventType,EventType|Palm OS Programmer's API Reference/2}})へのポインタ '''返り値''' イベントがハンドルされた場合、{{span style='color:blue;font-family:monospace;',true}} を返します。 '''コメント''' {{goto penDownEvent,penDownEvent|Palm OS Programmer's API Reference/2}} が起きると、スクロール バーは {{goto sclEnterEvent,sclEnterEvent|Palm OS Programmer's API Reference/2}} をイベント キューに送ります。 {{span style='color:blue;font-family:monospace;',sclEnterEvent}} が起きると、スクロール バーは、ペンが接触したというイベントを受け取ったスクロール バーの領域に基づくべきである新しい値を決定します。それから、スクロール バーは {{span style='color:blue;font-family:monospace;',sclRepeatEvent}} または {{span style='color:blue;font-family:monospace;',sclExitEvent}} のどちらかをイベント キューに送ります。 ユーザがペンでスクロール バーを保持し、ドラッグすると、スクロール バーは {{goto sclRepeatEvent,sclRepeatEvent|Palm OS Programmer's API Reference/2}} を発します。動的スクロールを実装するアプリケーションはこのイベントを受け取り、さらに受け取るたびにテキストを移動させるべきです。 ユーザがペンをスクロール バーから離すと、スクロール バーは {{goto sclExitEvent,sclExitEvent|Palm OS Programmer's API Reference/2}} を発します。非動的スクロールを実装するアプリケーションはこのイベントを受け取り、さらに {{span style='color:blue;font-family:monospace;',sclExitEvent}} を受け取るとテキストを移動させるべきです。動的スクロールを実装するアプリケーションはこのイベントを無視できます。 '''互換性''' {{goto 2.0 New Feature Set,2.0 New Feature Set|Palm OS Programmer's API Reference/B-1}} が存在する場合にのみ、実装されます。 !{{anchor SclSetScrollBar}}SclSetScrollBar 関数 {{goto top,^TOP^}} '''目的''' スクロール バーの現在の位置、範囲、ページのサイズをセットします。スクロール バーが可視で、かつ、最小値と最大値が等しく無い場合、再描画されます。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',ScrollBar.h}} '''Prototype''' void SclSetScrollBar ( ScrollBarType *bar, Int16 value, Int16 min, Int16 max, Int16 pageSize ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ bar}} **スクロール バー({{goto ScrollBarType,ScrollBarType}} 構造体)へのポインタ *{{span style='color:blue;font-family:monospace;',→ value}} **スクロール バーが移動すべき位置。(スクロール カーはドキュメントの中の位置を示す黒い領域です。) *{{span style='color:blue;font-family:monospace;',→ min}} **最小値 *{{span style='color:blue;font-family:monospace;',→ max}} **最大値 *{{span style='color:blue;font-family:monospace;',→ pageSize}} **スクリーン上に同時に表示され得るテキストの行数(ページ スクロール時に使用されます)。 '''返り値''' 返り値はありません。{{span style='color:blue;font-family:monospace;',min}} パラメータが {{span style='color:blue;font-family:monospace;',max}} パラメータよりも大きい場合、致命的なエラー メッセージを表示するかもしれません。 '''コメント''' この関数は、ユーザがフィールドの中のテキストを追加、削除したとき、または、テーブル行が追加、削除されたとき、呼び出されます。 フィールドをスクロールさせるために、アプリケーションは {{goto fldChangedEvent,fldChangedEvent|Palm OS Programmer's API Reference/2}} を受け取り、スクロール バーを更新すべきです。 {{span style='color:blue;font-family:monospace;',max}} パラメータは以下のように計算されます: テキストの行数 - ページ サイズ + オーバーラップ テキストの行数はオブジェクト全体を表示するのに必要な行数で、ページ サイズはスクリーン上に同時に表示され得る行数で、オーバーラップは可視のページの最下段から次のページの最上段までの行数です。 例えば、100 行のテキストがあり、ページに 10 行表示させる場合、{{span style='color:blue;font-family:monospace;',max}} 値はオーバーラップ次第で 90 か 91 になります。そのため、{{span style='color:blue;font-family:monospace;',value}} が 90 または 91 以上である場合、スクロール カーはスクロール領域の最下段にあります。 {{goto FldGetScrollValue,FldGetScrollValue()|Palm OS Programmer's API Reference/11-1}} を使って {{span style='color:blue;font-family:monospace;',value}}, {{span style='color:blue;font-family:monospace;',min}}, {{span style='color:blue;font-family:monospace;',max}} に渡す値を計算することができます。以下に例を示します。 FldGetScrollValues (fld, &scrollPos, &textHeight, &fieldHeight); if (textHeight > fieldHeight) maxValue = textHeight - fieldHeight; else if (scrollPos) maxValue = scrollPos; else maxValue = 0; SclSetScrollBar (bar, scrollPos, 0, maxValue, fieldHeight-1); このケースでは、{{span style='color:blue;font-family:monospace;',textHeight}} がテキストの行数で、{{span style='color:blue;font-family:monospace;',fieldHeight}} がページ サイズです。1 ページ分スクロールさせるときオーバーラップの行はありません。ページ サイズがテキストの行数よりも大きい場合、{{span style='color:blue;font-family:monospace;',max}} と {{span style='color:blue;font-family:monospace;',min}} は等しく、スクロール バーは表示されないということに注意してください。 テーブルをスクロールさせるために、{{span style='color:blue;font-family:monospace;',FldGetScrollValues}} と等価の機能はありません。作成するアプリケーションはそれ自身がテーブルをスクロールさせ、スクロール値を追跡し続けなければなりません。テーブルのためのスクロール バー値をセットする例は、サンプル アプリケーションであるメモ帳({{span style='color:blue;font-family:monospace;',MemoMain.c}})の中の {{span style='color:blue;font-family:monospace;',ListViewUpdateScrollers}} 関数を参照してください。 '''互換性''' {{goto 2.0 New Feature Set,2.0 New Feature Set|Palm OS Programmer's API Reference/B-1}} が存在する場合にのみ、実装されます。 '''参照''' {{goto SclGetScrollBar,SclGetScrollBar()}} {{div_end}} {{div_begin "style='border-top-style:solid;border-top-width:1px;border-top-color:silver;'"}} [[← 17 章に戻る|Palm OS Programmer's API Reference/17]] [[↑トップへ|Palm OS Programmer's API Reference]] [[19 章に進む →|Palm OS Programmer's API Reference/19]] {{div_end}}