Windows Resize abfragen?

Benutzeroberflächen in SAP®-Systemen.
17 Beiträge • Seite 1 von 2 (current) Nächste
17 Beiträge Seite 1 von 2 (current) Nächste

Windows Resize abfragen?

Beitrag von MacLeod (ForumUser / 46 / 4 / 0 ) »
Moin,

habe ich irgendwie die Möglichkeit den Resize des SAP-Hauptfensters/der GUI abzufragen, in der mein Report läuft?

LG

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


Re: Windows Resize abfragen?

Beitrag von Azreal (Specialist / 182 / 1 / 0 ) »
Hast du SY-SROWS und SY-SCOLS ausproviert? Damit bekommst du nicht die Pixelanzahl, aber dafür die SAPGUI Fenstergröße. Bin mir nicht sicher, ob das deinen usecase trifft.

Gruß Aze

Re: Windows Resize abfragen?

Beitrag von MacLeod (ForumUser / 46 / 4 / 0 ) »
Naja es sollte halt das Event abgefragt werden, so wie halt ein DoubleClick im ALV Grid. Events wie Window_Resize oder Window_Maximize, die halt einen direkten Einfluss auf die Bildschirmdarstellung haben können.

Zumindest finde ich bei den Docking Containern keine Möglichkeit, die Größe dynamisch zu gestalten. Sprich Report wird im nicht maximierten Fenster gestartet, das Fenster wird danach maximiert und die Docking Container behalten die initiale Größe bei. Besser wäre, wenn die Größe sich der Fenstergröße anpassen würde.

Re: Windows Resize abfragen?

Beitrag von a-dead-trousers (Top Expert / 4478 / 231 / 1204 ) »
hI!

Jedes "Window-Resize" unter Windows wird im ABAP-Programm von einem PAI/PBO-Lauf begleitet.
Daher brauchst du nur beim PAI immer die aktuellen Infos (SY-SROWS und SY-SCOLS) auszulesen und mit dem vorherigen Zustand zu vergleichen.
Daraus bekommst du das Verhältnis (z.B. in %) in dem das Fenster sich verändert hat und das brauchst du nur auf die (Pixel-)Angaben des Docking-Containers zu übertragen.

lg ADT

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

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: Windows Resize abfragen?

Beitrag von MacLeod (ForumUser / 46 / 4 / 0 ) »
Ah, schönen Dank! :)
Das werde ich morgen gleich mal ausprobieren.

Re: Windows Resize abfragen?

Beitrag von MacLeod (ForumUser / 46 / 4 / 0 ) »
a-dead-trousers hat geschrieben:Jedes "Window-Resize" unter Windows wird im ABAP-Programm von einem PAI/PBO-Lauf begleitet.
...
Schade :(
Anscheinend mache ich etwas falsch ...
Ich habe einfach mal

Code: Alles auswählen.

DATA: l_rows TYPE sy-srows,
      l_cols TYPE sy-scols
      .

      l_rows = sy-srows.
      l_cols = sy-scols.
in mein PAI Modul user_command_0100 eingebaut und einen Breakpoint gesetzt. Der wird aber nur beim Start oder bei einer Benutzeraktion angesprochen. Bei "einfacher" Größenanderung des Fensters (Maximieren über Button rechts oben in der Titelleiste bzw Größenänderung mit Maus in der Ecke links unten) wird das Modul nicht aufgerufen.

Habe ich da irgendwas übersehen?

Re: Windows Resize abfragen?

Beitrag von ST22 (Specialist / 283 / 44 / 41 ) »
Du arbeitest mit CL_GUI_DOCKING_CONTAINER?
Der Konstruktor hat den optionalen Parameter RATIO, der das prozentuale Verhältnis zum Gesamtscreen steuert. Alles andere läuft dann eigentlich automatisch.

Code: Alles auswählen.

*----------------------------------------------------------------------*
* docking container for tree
*----------------------------------------------------------------------*
  CREATE OBJECT mr_docking_container
    EXPORTING
      repid = gv_program
      dynnr = gv_screen
      side  = cl_gui_docking_container=>dock_at_left
*      lifetime = 2
      ratio = 20.
Oder verstehe ich dein Problem falsch?

Gruß
Frank

Re: Windows Resize abfragen?

Beitrag von MacLeod (ForumUser / 46 / 4 / 0 ) »
Das hast Du dann etwas falsch verstanden oder ich habe es schlecht erklärt ;)
Der initale Aufbau per Constructor des Screens ist soweit ok. Es geht halt darum, wenn ein User die Fenstergröße ändert, dann passt sich die Größe der Dockingcontainer nicht an und diese Überlagern das Dynpro andem sie eigentlich nur angedockt sein sollten.

ADT's Lösung wollte bei mir nicht funktionieren ...
... bis jetzt ;)
Ich habe gerade das Problem ausmachen können. Das Dynpro, an dem die Container angedockt sind, enthielt keinen Komponente, bei der das Resizing-Flag im Layout gesetzt war. Deswegen wurden die PAI/PBO-Schleife nicht durchlaufen.
Jetzt habe ich zum Testen einen kleinen CustomContainer auf das Dynpro gesetzt und die Resizing-Flags aktiviert. Nun wird auch die PAI/PBO-Schleife durchlaufen :)

Jetzt habe ich nur noch ein Problem. Die SET_EXTENSION-Methode des Docking Containers akzeptiert nur Zahlenangaben in Pixel. Die vom System gelieferten Wertes sy-srows und sy-scols sind leider nur Zeilen und Spalten des Dynpros. Mir fehlt jetzt noch der "Umrechnungsfaktor" in Pixel :(



LG
Zuletzt geändert von MacLeod am 07.11.2012 11:52, insgesamt 2-mal geändert.

Re: Windows Resize abfragen?

Beitrag von a-dead-trousers (Top Expert / 4478 / 231 / 1204 ) »
hi!

Ich glaube du suchst "cl_gui_cfw=>compute_metric_from_dynp"

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: Windows Resize abfragen?

Beitrag von MacLeod (ForumUser / 46 / 4 / 0 ) »
Ok, hatte es grad oben reineditiert, da hat sich das überschnitten, da ich parallel noch am probieren war ...
OK NACHTRAG
Habe gerade die Methoden in der cl_gui_cfw gefunden:

COMPUTE_METRIC_FROM_DYNP (Dynprozeilen bzw -spalten in die aktuelle Metrix zu wandeln)
COMPUTE_PIXEL_FROM_METRIC (Pixel aus der eben erechneten Metric zu ermitteln)

Für den Wert sy-scols (X-Wert) klappt das auch. Nur für sy-srows (Y-Wert) funktioniert das anscheinend nicht korrekt :( Initiale Extension sind ~ 300 Pixel (per Ratio auf 70% gesetzt). Wenn ich das Fenster nur in der Breite verändere, sollte der Höhenwert gleich bleiben; ok verschiebt sich vielleicht um eine Zeile, so genau klappt das ja nicht. Aber wenn ich dann daran die Metric( und danach die Pixel) erreche läuft der Wert völlig aus dem Ruder :(
COMPUTE_METRIC_FROM_DYNPRO nutze ich einmal mit Parameter 'X' für die Cols und 'Y' für die Rows.
Davon abgesehen, dass die Rows-Komponente falsch berechnet wird, steht ja noch das Problem, dass die Methoden leider nur als "internal" von SAP gekennzeichnet sind und somit nicht verwendet werden sollten ...

Re: Windows Resize abfragen?

Beitrag von MacLeod (ForumUser / 46 / 4 / 0 ) »
Ok, habs jetzt anders gelöst, da die als intern gekennzeichneten Methoden ja auch nicht unbedingt ratsam sind ...

Beim ersten Start lese ich die intialen Werte der Zeilen und Spalten aus und ermittle mit cl_gui_docking_container=>get_extension die jeweiligen Pixelwerte aus.
Nach einem Resize bekomme ich die neuen Zeilen- und Spaltenwerte und die errechne dann per Dreisatz die neuen Pixel.

Nicht ganz so elegant, funktioniert aber ;)

Besten Dank!

Re: Windows Resize abfragen?

Beitrag von ewx (Top Expert / 4911 / 332 / 651 ) »
Wenn du - wie von Frank vorgeschlagen - beim Erzeugen des Containers den Parameter "RATIO" füllst, dann passt sich der Docker nach Resize an, denn du hast dann eine Größe in Prozent angegeben und keine absolute Breite/ Höhe...

Re: Windows Resize abfragen?

Beitrag von MacLeod (ForumUser / 46 / 4 / 0 ) »
Komischerweise nicht. Die Docking Container behalten ihre Größe bei und überdecken das Dynpro ...

Re: Windows Resize abfragen?

Beitrag von ewx (Top Expert / 4911 / 332 / 651 ) »
Hört sich nicht richtig an...
Benutzt du die neueste GUI-Version (7.30) und den neuesten Patch?

Re: Windows Resize abfragen?

Beitrag von black_adept (Top Expert / 4156 / 136 / 958 ) »
ewx hat geschrieben:Hört sich nicht richtig an...
Benutzt du die neueste GUI-Version (7.30) und den neuesten Patch?
Doch - das ist leider das "natürliche" Verhalten. Ruf mal den folgenden Report auf und verkleinere dann das Fenster.

Code: Alles auswählen.

REPORT.
DATA: go_container TYPE REF TO cl_gui_docking_container.
PARAMETERS: x.

INITIALIZATION.
  CREATE OBJECT go_container
    EXPORTING
      ratio                   = 80
      no_autodef_progid_dynnr = 'X'
    EXCEPTIONS
      OTHERS                  = 1.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Vergleichbare Themen

4
Antw.
3149
Views
ERP auf Windows 7
von Garfield27 » 19.01.2017 21:29 • Verfasst in SAP - Allgemeines
2
Antw.
4498
Views
SAP Logon 7.40 auf Windows 10
von SaskuAc » 21.02.2018 16:12 • Verfasst in Basis
2
Antw.
1724
Views
Windows 8.1 - Scrollen im Editor
von ralf.wenzel » 24.07.2014 14:14 • Verfasst in ABAP® Core
4
Antw.
3869
Views
Windows Laufwerke ermitteln
von a-dead-trousers » 25.09.2018 11:25 • Verfasst in Dialogprogrammierung
0
Antw.
1789
Views
RFC-Funktionsbaustein in Windows Taskleiste
von Artie200 » 07.12.2010 16:25 • Verfasst in ABAP® Core

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

Benutzerdefinierte Felder PSP
letzen Monat von Rabea1103 1 / 46752
Spool vereinen OTF und PDF
letzen Monat von anna2205 1 / 63093
XSLT und Loipro05 Transformation
December 2025 von Torsten1965 1 / 72378