トップ 一覧 検索 ヘルプ RSS ログイン

Palm OS Programmer's API Reference/18の変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
{{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}}

{{anchor top}}
{{div_begin style="margin-bottom:-10px"}}
!!!18 スクロール バー
{{div_end}}

この章の索引

*{{goto スクロール バー データ構造体,スクロール バー データ構造体}}
{{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 スクロール バー リソース,スクロール バー リソース}}
*{{goto スクロール バー関数,スクロール バー関数}}
*{{goto Scroll Bar Resources,スクロール バー リソース}}
*{{goto Scroll Bar Functions,スクロール バー関数}}
**{{goto SclDrawScrollBar,SclDrawScrollBar}}
**{{goto SclGetScrollBar,SclGetScrollBar}}
**{{goto SclHandleEvent,SclHandleEvent}}
**{{goto SclSetScrollBar,SclSetScrollBar}}
{{div_end}}

----

!!!18 スクロール バー

{{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 スクロール バー データ構造体,スクロール バー データ構造体}}
*{{goto スクロール バー リソース,スクロール バー リソース}}
*{{goto スクロール バー関数,スクロール バー関数}}
*{{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 スクロール バー データ構造体}}スクロール バー データ構造体 {{goto top,^TOP^}}
!!{{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}} 構造体の下位互換をサポートしていません。構造体メンバに直接アクセスしないでください。そのようなコードは将来のバージョンで機能しないかもしれません。以下の情報はデバッグ目的でのみ使用してください。
//----
::{{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 スクロール バー リソース}}スクロール バー リソース {{goto top,^TOP^}}
!!{{anchor Scroll Bar Resources}}スクロール バー リソース {{goto top,^TOP^}}

スクロール バー リソース(tSCL)はスクロール バーを表します。追加情報は、''Palm OS User Interface Guidelines'' を参照してください。


!!{{anchor スクロール バー関数}}スクロール バー関数 {{goto top,^TOP^}}
!!{{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}} が満たされる場合にのみ、実装されます。
{{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}} が満たされる場合にのみ、実装されます。
{{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}} が満たされる場合にのみ、実装されます。
{{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}} が満たされる場合にのみ、実装されます。
{{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}}