Custom Control => Container ermitteln

Die Objektorientierung mit ABAP®: Vererbung, Dynamische Programmierung, GUI Controls (u.a. ALV im OO).
6 Beiträge • Seite 1 von 1
6 Beiträge Seite 1 von 1

Custom Control => Container ermitteln

Beitrag von ewx (Top Expert / 4846 / 311 / 642 ) »
Hallo zusammen!

Kennt jemand eine Möglichkeit, wie man zu einem Custom-Control eines Dynpros herausfinden kann, welche Container-Referenz dran hängt?

Bsp:
ich rufe im PBO folgende Routine auf:

Code: Alles auswählen.

  data lr_cc type ref to cl_gui_custom_container.
  data lr_pic type ref to cl_gui_picture.

  CREATE OBJECT lr_cc
    EXPORTING
      container_name = 'CC_TEST'.

  CREATE OBJECT lr_pic
    EXPORTING
      parent = lr_cc.
  CALL METHOD lr_pic->load_picture_from_sap_icons
    EXPORTING
      icon = icon.
  CALL METHOD lr_pic->set_display_mode
    EXPORTING
      display_mode = cl_gui_picture=>display_mode_stretch.
im weiteren Programmverlauf möchte ich aber die Objektreferenz löschen, weil ich ein anderes Control im Custom Control CC_TEST einbinden möchte.

Mir ist klar, dass ich das umgehen kann, in dem ich die Control- und Container-referenz global definiere und dann die Free-Methoden ausführen:

Code: Alles auswählen.

  gr_pic->free( ).
  gr_pic->parent->free( ).
Ich würde aber gerne aus Spass an der Freude wissen, ob es eine Möglichkeit gibt, an die Container des Dynpros heranzukommen...
Die Methode funktioniert leider nicht:

Code: Alles auswählen.

cl_gui_cfw=>get_living_dynpro_controls(
    IMPORTING
      control_list = gt_controls ).

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: Custom Control => Container ermitteln

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
ewx hat geschrieben:Ich würde aber gerne aus Spass an der Freude wissen, ob es eine Möglichkeit gibt, an die Container des Dynpros heranzukommen...
Die Methode funktioniert leider nicht:

Code: Alles auswählen.

cl_gui_cfw=>get_living_dynpro_controls(
    IMPORTING
      control_list = gt_controls ).
Ist aber nicht so weit weg...
In der CL_GUI_CFW werden alle Controls mit zugehöriger LIFETIME registriert. Die Tabelle (musst nachschauen wie die heißt, findest aber sofort bei REGISTER_LIFETIME) musst du dann nur nach allen CL_GUI_CUSTOM_CONTAINER Instanzen durchsuchen. Die sind da zwar als CL_GUI_CONTROL gespeichert, aber man kann ja casten ;)
In welchem Container am Dynpro der aktuelle Container lebt, sollte dann in den LINK-Informationen aufscheinen.

Sorry wenn das jetzt nicht zu 100% akkurat ist, aber es ist doch halb 12 und ich werd jetzt beim besten Willen nicht bei uns am System einsteigen und Nachschau halten ;)
Aber so ungefähr gehts

lg ADT
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Custom Control => Container ermitteln

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
Mist...
Im Attribut CL_GUI_CFW=>CFW_LIFETIMELIST wäre alles da... PRIVATE :x
Mit der Methode CL_GUI_CFW=>GET_LIVING_DYNPRO_CONTROLS könnte man es abfragen... CNTL_LIFETIME_DYNPRO :x

Einzige Möglichkeit die mir einfällt, wäre zur Klasse CL_GUI_CFW ein Enhancment anzulegen und bei den Methoden REGISTER_LIFETIME usw. Implementierungen zu hinterlegen, die die registrierten Controls in einer zusätzlichen Tabelle verwalten auf die man globalen Zugriff hat.

EDIT:
Okay... Die SUBSCRIBE und UNSUBSCRIBE Methoden wären die bessere Wahl für eine Erweiterungsimplementierung.
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Custom Control => Container ermitteln

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
hmmm...
Eine verrückte Idee hätte ich noch. Ist aber das berühmte "von hinten durch die Brust ins Auge".

Schau mal nach (Debugger) ob du deine CL_GUI_CUSTOM_CONTAINER-Instanz in einer der statischen Attribute CL_GUI_CONTAINER=>SCREEN0-9 in den zugehörigen CHILDREN findest.

Wenn du dir das Abfragen auf Dynpro-Levels 0-9 sparen möchtest und immer nur das aktuellste Level möchtest, kannst du den Baustein GUI_GET_PARENT_DYNPRO benutzen. Die zurückgegebene ID entspricht den CL_GUI_CFW=>DYNPRO_... Attributen und somit auch den zugehörigen CL_GUI_CONTAINER=>SCREEN... Attributen.

lg ADT

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
ewx

Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Custom Control => Container ermitteln

Beitrag von black_adept (Top Expert / 4089 / 127 / 940 ) »
Entweder ihr denkt zu kompliziert oder ich habe die tatsächliche Fragestellung nicht verstanden

Anstatt

Code: Alles auswählen.

cl_gui_cfw=>get_living_dynpro_controls(
    IMPORTING
      control_list = gt_controls ).
Für den Standardfall ( Popuplevel 0 ): (Evtl. vorher den Popuplevel erfragen und dementsprechend anpassen)

Code: Alles auswählen.

  gt_controls = cl_gui_container=>screen0->children.

Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
ewx

live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Custom Control => Container ermitteln

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
black_adept hat geschrieben:Für den Standardfall ( Popuplevel 0 ): (Evtl. vorher den Popuplevel erfragen und dementsprechend anpassen)

Code: Alles auswählen.

  gt_controls = cl_gui_container=>screen0->children.
Genau das hab ich im letzten Posting gemeint :wink:

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
ewx

Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Seite 1 von 1

Vergleichbare Themen

1
Antw.
4384
Views
Auflösung / max. Breite / Docking Container / Custom Control
von Salzi » 10.03.2008 21:53 • Verfasst in ABAP Objects®
3
Antw.
2360
Views
COOIS custom container
von juergen.waibel » 29.05.2013 16:00 • Verfasst in ABAP Objects®
10
Antw.
11330
Views
Custom Container zur Laufzeit vergrößern
von Sertl » 18.09.2007 17:58 • Verfasst in ABAP Objects®
0
Antw.
2025
Views
SAP GUI for HTML: Custom Container invisible ->Problem
von Nova » 04.02.2005 14:46 • Verfasst in Dialogprogrammierung
3
Antw.
2408
Views
Eingabefeld zu Custom Container hinzufügen (Code)
von Dyrdek » 30.06.2015 10:49 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Unbeantwortete Forenbeiträge

Daten an Tabelle binden
vor 2 Tagen von Bright4.5 1 / 772
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2392
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8978