Ereignisse

Bemerkungen zu Ereignissen im ColumnTree

Bevor die Ereignisse für den ColumnTree registriert werden, sollte die Methode GET_REGISTERED_EVENTS aufgerufen werden.

Setzt man nämlich “einfach” das Event “Item_Double_Click”, dann wird evtl. auf einmal die Ordnerstruktur nicht mehr angezeigt! Durch das explizite Setzen mittels SET_REGISTERED_EVENTS wird das Event “EXPAND_NO_CHILDREN” gelöscht…

Eine Registrierung sollte also so z.B. aussehen:

*** data definition
  DATA lt_events TYPE cntl_simple_events.
  DATA ls_event  TYPE cntl_simple_event.

*** Get already registered events
  CALL METHOD gr_tree->get_registered_events
    IMPORTING
      events = lt_events.

*** define the events which will be passed to the backend
  ls_event-eventid = cl_gui_column_tree=>eventid_link_click.
  APPEND ls_event TO lt_events.
  ls_event-eventid = cl_gui_column_tree=>eventid_item_double_click.
  APPEND ls_event TO lt_events.

*** set events
  CALL METHOD gr_tree->set_registered_events
    EXPORTING
      events = lt_events.

*** set Handler
  SET HANDLER lcl_treereceiver=>handle_link_click        FOR gr_tree.
  SET HANDLER lcl_treereceiver=>handle_item_double_click FOR gr_tree.

Doppelte Events sind nicht schlimm, solange APPL_EVENT identisch ist, also das Kennzeichen das steuert, ob Events einen Funktionscode auslösen.

Besser wäre es sicherlich, vorher zu prüfen, ob das Ereignis bereits registriert ist.

Enno Wulff

Leave a Comment