メインコンテンツまでスキップ
Knowledgebase
Home
Renesas Electronics Japan - Knowledgebase

SSPとGUIXで画面表示リストを縦にスクロールさせるには?

最終更新日:2017/07/25

Question:

SSPとGUIXで画面表示リストを縦にスクロールさせるには?

Answer:

GUIXは、画面に表示されたリストに直接触れるイベントにより、追加のアプリケーションコード無しに、表示リストをスクロールさせることができます。画面に表示されたリスト自体に押しボタンのようなユーザーインプット機能が無くても、アプリケーションはユーザーインプットに反応して画面表示リストをスクロールさせるリクエストを発行します。

上下方向への押しボタンの反応として、リスト画面を縦方向にスクロールさせるアプリケーションは、GUIX Studio, GUIX event GX_EVENT_VERTICAL_SCROLL、および、GUIX API gx_vertical_list_event_process (GX_VERTICAL_LIST *list, GX_EVENT *event_ptr) を利用し、以下を実行してください。 

1. GUIX Studioプロジェクト内の表示画面に、Vertical Listを追加する。


2. このリストに適切なアイテムを埋め込みます。この例では、Text PromptがVertical Listに挿入されています。


3. Vertical ListのProperties View(下表)では、Total Rows欄が表の一番下にあり、リストのアイテム数を入力して、指定することができます。visible rows数は、GUIX Studioで表示される行数を規定します。


4. リスト作成後は、ユーザー入力のハンドラーにおいて、GX_EVENT_VERTICAL_SCROLL
  gx_vertical_list_event_processのAPIを使い、スクロールができるようにします。

   GX_EVENT gxe;

   gxe.gx_event_type               = GX_EVENT_VERTICAL_SCROLL;

   gxe.gx_event_sender           = GX_ID_NONE;

   gxe.gx_event_target             = 0;

   gxe.gx_event_display_handle = 0;

   gxe.gx_event_payload.gx_event_intdata[1] = 0; // Difference between [1] and 
   [0] is amount to be moved.

   gxe.gx_event_payload.gx_event_intdata[0] = 1;

   for (j = 1; j<MOVE_POSITION; j++)

   {

   gx_vertical_list_event_process (&main_screen.main_screen_vertical_list, &gxe);

   }

5. gx_vertical_list_event_process (GX_VERTICAL_LIST *list, GX_EVENT *event_ptr) はGUIXが提供するAPIで、Vertical List関連のイベントを処理します。

  最初の引数は、制御されるVertical Listへのポインターです。リストへの宣言は、リストが挿入されるdisplayコントロールブロック
  内に存在します。これはhmi_specifications.h file内で定義されます。

6. スクロールを実現するためには、GX_EVENT_VERTICAL_SCROLL eventを使用してください。このeventは、GX_EVENT *event_ptr parameterに渡す必要があります。そして以下のように使用します。
  
  a) GX Event: gxe.gx_event_typeGX_EVENT_VERTICAL_SCROLL.

  にします。 
 
  このAPIは以下のイベントを処理します。

   - GX_EVENT_SHOW
   - GX_EVENT_FOCUS_NEXT
   - GX_EVENT_VERTICAL_SCROLL
   - GX_EVENT_PEN_DOWN
   - GX_EVENT_PEN_DRAG
   - GX_EVENT_VERTICAL_FLICK
   - GX_EVENT_TIMER

  b) スクロール量: gxe.gx_event_payload.gx_event_intdata[1]
   gxe.gx_event_payload.gx_event_intdata[0].

  gx_event_intdata [1] と gx_event_intdata[0]の差分が、各APIコールでスクロールする量を決めます。

  正(プラス)の差分で、リストは下方向へスクロールします。負(マイナス)の差分で、リストは上方向へスクロールします。
  差分の大きさはスクロールのスピードに影響し、差分が大きいほどスクロールのスピードは速くなります。

7. 上記のコードを使うことで、ユーザーはスクロールする量とスピードを制御することができます。

  上記のコードでは、リストは縦方向へ1ピクセル分の動きをMOVE_POSITIONの回数分、繰り返します。
  従って、仮にMOVE_POSITIONが40ピルセルに設定された場合、リストは縦方向に40ピルセル分、
  遅いスピードで動くことになります。

アプリケーションが速いスクロールを要求する場合は、gx_event_intdata[1]と gx_event_intdata[0]の
差分を大きく設定することで対応可能です。各APIコールの差分が大きいほど、スクロールは速くなります。

適用製品
Renesas Synergy™ プラットフォーム
Renesas Synergy™ ソフトウェア