Erscheinungsbild
MessageBox
Modaler Dialog, der den Anwender unterbricht und eine Entscheidung erfordert. Im Unterschied zum MessageToast blockiert die MessageBox die View, bis der Anwender eine Aktion auswählt.
Wie der Toast ist auch die MessageBox keine Designer-Komponente, sondern wird zur Laufzeit über Helper-Methoden der gebundenen Klasse erzeugt.
Verwendung
Eine MessageBox wird in zwei Schritten verwendet:
me->create_message_box( ... )liefert eine MessageBox-Instanzme->set_message_box( ... )zeigt sie an
abap
DATA(lo_box) = me->create_message_box(
iv_text = 'Möchten Sie wirklich speichern?'
iv_msg_box_type = /mobbuild/cl_msg_box_type=>co_confirm ).
me->set_message_box( lo_box ).Wählt der Anwender eine Aktion, die mit iv_submit = abap_true hinzugefügt wurde, erzeugt das System ein PAI-Event mit dem Sender 'MessageBox' und dem Action-Key. Standard-Aktionen kommen in Großbuchstaben an (OK, YES, NO, CANCEL, …), Custom-Aktionen exakt so, wie sie übergeben wurden.
Parameter von create_message_box
| Parameter | Typ | Bedeutung |
|---|---|---|
iv_text | String | Anzeigetext im Dialog |
iv_msg_box_type | Konstante | Typ der MessageBox – siehe /mobbuild/cl_msg_box_type |
MessageBox-Typen
Konstanten aus /mobbuild/cl_msg_box_type:
| Konstante | Bedeutung |
|---|---|
co_confirm | Bestätigungsdialog – vorbelegt mit OK (hervorgehoben, löst ein PAI-Event aus) und CANCEL; der erste eigene Aufruf von add_action/add_custom_action ersetzt diese Vorbelegung |
co_information | Reine Information (OK) |
co_warning | Warnung |
co_error | Fehler |
co_success | Erfolgsmeldung |
co_alert | Alarm / Achtung |
Alle übrigen Typen kommen ohne vorbelegte Aktion; ein PAI-Event gibt es nur für Aktionen, die Sie selbst mit iv_submit = abap_true hinzufügen.
Aktionen hinzufügen
| Methode | Zweck |
|---|---|
ADD_ACTION | Standard-Aktion hinzufügen (Konstante aus /mobbuild/cl_msg_box_action) |
ADD_CUSTOM_ACTION | Beliebige Aktion mit eigenem Text hinzufügen |
SET_EMPHASIZED_ACTION | Eine Aktion als hervorgehobenen Standard-Button markieren |
Konstanten aus /mobbuild/cl_msg_box_action: co_ok, co_yes, co_no, co_cancel, co_close, co_abort, co_retry, co_ignore, co_delete.
Der Parameter iv_submit (Default abap_false) steuert, ob der Klick auf die Aktion ein PAI-Event auslöst.
Auswertung der Anwender-Auswahl
Die ausgewählte Aktion kommt als PAI-Event mit sender = 'MessageBox' und event_key = '<action>' (z.B. OK, YES oder der Text einer Custom-Action) zurück.
abap
IF me->get_event( )->get_sender( ) EQ 'MessageBox'.
CASE me->get_event( )->get_event_key( ).
WHEN 'YES'. " ...
WHEN 'NO'. " ...
WHEN OTHERS. " ...
ENDCASE.
ENDIF.Beispiel: /mobbuild/cl_ex_msg_box (Auszug)
Das Beispiel zeigt drei Patterns: Standard-MessageBox, MessageBox mit Custom-Action und MessageBox mit hervorgehobener Aktion. me->init( ) ist eine private Hilfsmethode des Beispiels, die die ValueStates der Eingabefelder zurücksetzt.
abap
METHOD on_pai.
me->init( ).
DATA(lo_event) = me->get_event( ).
DATA(lv_event_key) = lo_event->get_event_key( ).
DATA(lv_event_sender) = lo_event->get_sender( ).
IF ( lv_event_sender NE 'MessageBox' AND lv_event_key EQ 'CreateDefault' ).
me->show_box_default( ).
ENDIF.
IF ( lv_event_sender NE 'MessageBox' AND lv_event_key EQ 'CreateCustom' ).
me->show_box_custom( ).
ENDIF.
IF ( lv_event_sender NE 'MessageBox' AND lv_event_key EQ 'CreateEmphasized' ).
me->show_box_emphasized( ).
ENDIF.
IF lv_event_sender EQ 'MessageBox'.
me->set_message_toast(
me->create_message_toast( iv_text = |confirmed:{ lv_event_key }| ) ).
me->init_controls( ).
ENDIF.
ENDMETHOD.Standard-MessageBox
abap
METHOD show_box_default.
DATA(lv_text) = me->get_input( 'txtTextDefault' )->get_value( ).
DATA(lv_msg_box_type) = me->get_combo_box( 'cbMessageBoxType' )->get_selected_key( ).
DATA(lo_message_box) = me->create_message_box(
iv_text = lv_text
iv_msg_box_type = lv_msg_box_type ).
me->set_message_box( lo_message_box ).
ENDMETHOD.MessageBox mit Custom-Action
abap
METHOD show_box_custom.
DATA(lv_text) = me->get_input( 'txtTextCustom' )->get_value( ).
DATA(lv_action) = me->get_combo_box( 'cbMessageBoxAction' )->get_value( ).
DATA(lv_submit) = me->get_switch( 'switchSubmit' )->get_state( ).
DATA(lo_message_box) = me->create_message_box(
iv_text = lv_text
iv_msg_box_type = /mobbuild/cl_msg_box_type=>co_confirm ).
lo_message_box->add_custom_action(
iv_action = lv_action
iv_submit = lv_submit ).
me->set_message_box( lo_message_box ).
ENDMETHOD.MessageBox mit hervorgehobener Aktion
abap
METHOD show_box_emphasized.
DATA(lo_message_box) = me->create_message_box(
iv_text = |Is it raining tomorrow?|
iv_msg_box_type = /mobbuild/cl_msg_box_type=>co_confirm ).
lo_message_box->add_action(
iv_action = /mobbuild/cl_msg_box_action=>co_yes
iv_submit = abap_true ).
lo_message_box->add_action(
iv_action = /mobbuild/cl_msg_box_action=>co_no
iv_submit = abap_true ).
lo_message_box->set_emphasized_action(
iv_action = /mobbuild/cl_msg_box_action=>co_yes ).
me->set_message_box( lo_message_box ).
ENDMETHOD.Wann Toast vs. MessageStrip vs. MessageBox?
- MessageBox – modale Rückfrage, die zwingend eine Anwender-Aktion erfordert
- MessageStrip – persistenter, nicht-modaler Hinweis innerhalb der View
- MessageToast – kurze, automatisch ausgeblendete Erfolgs-/Hinweismeldung
Nächste Schritte
- MessageToast – kurze Bestätigung
- MessageStrip – persistenter Hinweis