Skip to content

FlexBox ​

Layout-Container nach dem CSS-Flexbox-Modell. Ordnet Kind-Komponenten in Reihen oder Spalten an. Die DynamicFlexBox ist ein eigener Palette-Typ mit denselben Layout-Attributen (siehe die Untertabelle unten), aber im Designer kein Container: Sie nimmt keine Kinder per Drag-and-Drop auf – ihre Items kommen ausschließlich zur Laufzeit aus ABAP über die Items-API.

Designer-Attribute ​

AttributBeschreibungDefault
controlIdEindeutige IDautomatisch generiert
widthBreite (CSS-Wert)100%
heightHöhe (CSS-Wert)–
backgroundDesignHintergrund-Stil. Werte: Solid, Transparent, TranslucentTransparent
directionAnordnung der Kinder. Werte: Row, Column, RowReverse, ColumnReverse, InheritColumn
alignContentAusrichtung der Zeilen bei Umbruch. Werte: Start, End, Center, SpaceBetween, SpaceAround, Stretch, InheritStretch
alignItemsAusrichtung der Kinder quer zur Richtung. Werte: Start, End, Center, Baseline, Stretch, InheritStretch
justifyContentAusrichtung der Kinder in Richtung. Werte: Start, End, Center, SpaceBetween, SpaceAround, InheritStart
renderTypeRendering der Kinder. Werte: Div, List, BareDiv
fitContainerFüllt den umgebenden Container ausfalse
wrapUmbruch der Kinder. Werte: NoWrap, Wrap, WrapReverseNoWrap
visibleSichtbartrue
spanS / spanM / spanL / spanXLGrid-Layout12

DynamicFlexBox (Kinder aus dem Backend) ​

AttributBeschreibungDefault
controlIdEindeutige ID der Komponenteautomatisch generiert
widthBreite (CSS-Wert)100%
heightHöhe (CSS-Wert)–
backgroundDesignHintergrund-Stil. Werte: Solid, Transparent, TranslucentTransparent
directionAnordnung der Kinder. Werte: Row, Column, RowReverse, ColumnReverse, InheritColumn
alignContentAusrichtung der Zeilen bei Umbruch. Werte: Start, End, Center, SpaceBetween, SpaceAround, Stretch, InheritStretch
alignItemsAusrichtung der Kinder quer zur Richtung. Werte: Start, End, Center, Baseline, Stretch, InheritStretch
justifyContentAusrichtung der Kinder in Richtung. Werte: Start, End, Center, SpaceBetween, SpaceAround, InheritStart
renderTypeRendering der Kinder. Werte: Div, List, BareDiv
fitContainerFüllt den umgebenden Container ausfalse
wrapUmbruch der Kinder. Werte: NoWrap, Wrap, WrapReverseNoWrap
visibleKomponente sichtbartrue
spanS / spanM / spanL / spanXLBreite im Grid-Layout12

ABAP-API ​

Zugriff über:

GetterKomponente
me->get_control( '<controlId>' )Statische FlexBox — es gibt keinen typisierten Getter, Properties über set_property_value
me->get_dynamic_flex_box( '<controlId>' )Dynamische FlexBox mit Items-API

DynamicFlexBox – Items-API ​

MethodeZweck
ADD_ITEMKomponente am Ende anhängen; eine leere controlId löst eine Ausnahme /mobbuild/cx_exception aus, eine vorhandene Komponente gleicher controlId wird ersetzt
GET_ITEMKomponente nach controlId
GET_ITEMSTabelle aller Items
REMOVE_ITEMKomponente nach controlId entfernen
REMOVE_ITEMSAlle Items entfernen
INITAlle Items entfernen (wie REMOVE_ITEMS)

Geerbte Methoden: siehe Control.

Beispiel /mobbuild/cl_ex_dyn_flexbox: Dynamische MessageStrips ​

Das Beispiel fügt einer DynamicFlexBox bei jedem Klick einen neuen MessageStrip hinzu, entfernt das letzte Item oder leert die FlexBox komplett:

abap
METHOD on_pai.

  DATA(lv_event_key) = me->get_event( )->get_event_key( ).

  IF lv_event_key EQ mc_event_add.
    me->on_add( ).
  ELSEIF lv_event_key EQ mc_event_remove.
    me->on_remove( ).
  ELSEIF lv_event_key EQ mc_event_remove_all.
    me->on_remove_all( ).
  ENDIF.

ENDMETHOD.

METHOD on_add.

  DATA(lo_flex_box) = me->get_dynamic_flex_box( 'dynamicFlexBox' ).
  DATA(lt_controls) = lo_flex_box->get_items( ).
  DATA(lv_count)    = lines( lt_controls ).

  DATA(lo_temp)          = |Message{ lv_count }|.
  DATA(lo_message_strip) = /mobbuild/cl_message_strip=>create( ).

  lo_message_strip->set_control_id( lo_temp ).
  lo_message_strip->set_text( lo_temp ).
  lo_message_strip->set_type( /mobbuild/cl_message_type=>co_error ).
  lo_message_strip->set_property_value(
    iv_key   = 'class'
    iv_value = 'sapUiTinyMargin' ).

  lo_flex_box->add_item( lo_message_strip ).

ENDMETHOD.

METHOD on_remove.

  DATA(lo_flex_box) = me->get_dynamic_flex_box( 'dynamicFlexBox' ).
  DATA(lt_controls) = lo_flex_box->get_items( ).
  DATA(lv_count)    = lines( lt_controls ).

  IF lv_count > 0.
    READ TABLE lt_controls INTO DATA(lo_last_control) INDEX lv_count.
    lo_flex_box->remove_item( lo_last_control->get_control_id( ) ).
  ENDIF.

ENDMETHOD.

METHOD on_remove_all.
  DATA(lo_flex_box) = me->get_dynamic_flex_box( 'dynamicFlexBox' ).
  lo_flex_box->remove_items( ).
ENDMETHOD.

Konstanten statt String-Literale

Die mc_event_*-Konstanten sind in der Beispielklasse selbst deklariert. Vergleichbare Konstanten für controlIds und Event-Keys (mc_mb_*) erzeugt der Designer auf Knopfdruck in der gebundenen View-Klasse – siehe Konstanten-Attribute.

Nächste Schritte ​

  • Panel – Container mit optionaler Überschrift
  • IconTabBar – mehrere Tab-Bereiche