最近のアクセス:
コードで選択可能なパネル用のグリッド

グリッド選択は、優れたユーザーエクスペリエンスを実現するために重要な機能です。
GeneXus では、いくつかの方法でグリッド選択を管理できます。
方法の 1 つは、グリッドコントロールの複数のレイアウトを設定して自動的に処理することです。他の方法では、アプリケーションのビジネスロジックに合わせたプログラミングを使用して、選択したアイテムを操作します。ここでは主にプログラミングを使用した方法について説明します。自動処理の方法については、「[ Default Selected Item Layout ] プロパティ」の説明を参照してください。 

コードを使用した選択

コードを使用してグリッドアイテムを選択する際に役立つ 4 つの機能があります。

使用例

シンプルな楽曲のプレイリストアプリケーションを設計する必要があるとします。
要件は次のとおりです:
  • ユーザーが任意のアイテムをタップすると、その音楽が再生されます。タップすると、グリッドで選択されているアイテムが変わります。
  • 1 つの楽曲が終了したら、次の楽曲が自動的に再生されます。また、グリッド上で選択されているアイテムもそれに沿って変わります。
つまり、グリッドとメディアキューを同期することが目的です (Audio 外部オブジェクトが提供する機能)。
まず、Panel オブジェクトで楽曲リストをどのように表示するかを設計する必要があります。基本的に、グリッドコントロールがあり、そこに各楽曲をアイテムとして配置します (楽曲のタイトル、サブタイトル、カバーイメージを表示)。このグリッドには 2 つのレイアウトを設定します。1 つは現在再生中の楽曲を表示するもので、もう 1 つはプレイリストにあるその他の楽曲を表示するものです。最初のレイアウトは [ Default Selected Item Layout ] プロパティに設定されます。
イメージ:35995.png イメージ:35996.png
グリッドコントロールは Panel オブジェクトに組み込まれているため、[ Default Action ] プロパティの <default> 値には効果がありません (Detail ノードを表示する WorkWith オブジェクトとは異なります)。次に、SelectionChange イベントのコードを記述します。既定のアクションがトリガーされるかどうかを考慮する必要はありません。このシナリオでは、再生を開始する前、または別の楽曲を再生中に、選択したインデックスをグリッドから取得して Audio 外部オブジェクトの SetQueueCurrentIndex メソッドで使用します。
Event Grid1.SelectionChanged
    Composite
        &Index = Grid1.SelectedIndex
        Audio.SetQueueCurrentIndex(&Index)
    EndComposite
EndEvent
このような設定では、エンドユーザーがプレイリスト内の楽曲をタップすると、その楽曲の再生が開始されます。しかし、別のシナリオとして、楽曲の再生が終了したら、グリッド上でプレイリストの次の楽曲を選択する必要があります。これを行うには、次の楽曲を開始する前に、Audio 外部オブジェクトの機能から QueueItemFinished イベントを使用して、適切なインデックスを選択することができます。たとえば、次のような非常にシンプルな方法でこのイベントを記述できます:
Event Audio.QueueItemFinished(&MediaItemFinishedInfo)
    Composite
        If &MediaItemFinishedInfo.Reason = MediaFinishReason.PlaybackCompleted
            &Index = &MediaItemFinishedInfo.QueuePosition
            Grid1.Select(&Index)
        EndIf
    EndComposite
EndEvent
最終的に次の結果が得られます。
イメージ:36217.png

  • グリッドの [ Control Type ] プロパティが範囲外 (Image Gallery、Leaves など) の場合、ここで説明したエレメントの動作は次のようになります:
    • Select/Deselect メソッドには何も効果がありません。
    • SelectedIndex で空の値 (値 0) が返されます。
    • SelectionChanged イベントはトリガーされません。

適用範囲

コントロール: グリッドコントロールHorizontal Grid コントロール (Apple)。
ジェネレーター:  AppleAndroidAngular

 




サブページ
Created: 18/10/29 01:06 by Admin Last update: 24/04/07 19:09 by Admin
カテゴリ
Powered by GXwiki 3.0