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, erzeugt das System ein PAI-Event mit dem Sender 'MessageBox' und dem Action-Key (z.B. OK, Yes, No, Cancel, oder ein Custom-Wert).
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 (Yes/No) |
co_information | Reine Information (OK) |
co_warning | Warnung |
co_error | Fehler |
co_success | Erfolgsmeldung |
co_alert | Alarm / Achtung |
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.
Die Parameter iv_submit steuert, ob beim Klick ein PAI-Event ausgelöst werden soll.
Auswertung der Anwender-Auswahl
Die ausgewählte Aktion kommt als PAI-Event mit sender = 'MessageBox' und event_key = '<action>' (z.B. OK, Yes, oder 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
Das Beispiel zeigt drei Patterns: Standard-MessageBox, MessageBox mit Custom-Action und MessageBox mit hervorgehobener Aktion.
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