[NEWSboard IBMi Forum]
Seite 1 von 3 1 2 ... Letzte

Hybrid View

  1. #1
    Registriert seit
    Mar 2003
    Beiträge
    31

    Unhappy Window Anzeige Problem

    Ich habe ein Problem mit einer Window Anzeige.

    Ich habe ein Programm für das Subfile und ein separates Programm für das Window.
    Das Window wurde mit "Anzeige wiederherstellen RSTDSP *YES" übersetzt.

    Wird das Window nun das erste mal aufgerufen, klappt alles wunderbar. Das Window-Programm wird danach mit *INRT verlassen.
    Rufe ich nun erneut das Window auf, erscheint im Hintergrund der Inhalt, der beim ersten Aufruf aktuell war, sprich, es werden im Hintergrund "uralte Daten" angezeigt.

    Ich habe schon diverse Schlüselwörter probiert, bekomme es aber nicht hin.

    Wenn ich das DSPF mit "Anzeige wiederherstellen RSTDSP *NO" übersetze, funktioniert die "Hintergrundanzeige" wunderbar... allerdings wird dann der Rahmen des Windows beim zweiten Aufruf nicht mehr angezeigt.

    Gibt es hier eine Möglichkeit, dass das Window-Programm den "aktuellen" Hintergrund einliest?
    Würde ich mein Window-Programm mit *INLR verlassen, würde es natürlich gehen. Das ist aber nicht die Lösung die ich anstrebe.

    Zur Verdeutlichung, hier der Hauptteil des Sourcecode des DSPF

    A DSPSIZ(24 80 *DS3)
    A CHGINPDFT(HI UL)
    A PRINT
    A HELP
    A ALTHELP(CA01)
    A HLPRTN(01)
    A CA03(03 'VERLASSEN')
    A CA12(12 'ZURÜCK')
    A*
    A*----------------------------------------------------------------
    A*
    A R DUMMY ASSUME
    A 1 2' '
    A*
    A R FMT01
    A WINDOW(16 5 7 71 *NOMSGLIN)
    A N41 ROLLUP(25)
    A KEEP
    A OVERLAY
    A WDWBORDER((*DSPATR HI))
    A 1 31'bla bla' DSPATR(HI)

    Bin über jeden Hinweis dankbar.

    Gruss Alex

  2. #2
    Registriert seit
    Feb 2003
    Beiträge
    137
    Hallo MrBonZai

    ich meine, es fehlen nach OVERLAY folgende Schlüsselwörter:
    siehe Beispiel:

    A R REC23F
    A*%%TS SD 19990607 094130 REL-V4R2M0 5769-PW1
    A WINDOW(2 3 16 73)
    A OVERLAY
    A PUTOVR
    A OVRDTA
    A OVRATR

    R DMMY ASSUME
    DMMY1 10 3 1

    Die Datei anschließend mit RSTDSP(*YES) umwandeln

    Gruss Thierry

  3. #3
    Registriert seit
    Mar 2003
    Beiträge
    31

    Unhappy

    Danke für die Antwort, leider aber funktioniert es so nicht.
    gleicher Effekt wie vorher.

    wird Dein Programm auch mit *INRT beendet?

    --------

    sonst vielleicht noch jemand einen Tipp?

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    RSTDSP(*NO) ist erforderlich, da die AS/400 sich pro Aufrufebene 1 Bildschirminhalt merken kann.
    RSTDSP(*YES) bedeutet, dass beim erneuten Aufruf des Programmes oder bei der Rückkehr aus einem anderen Programm der Bildschirminhalt automatisch wiederhergestellt wird.

    OVERLAY ist genauso erforderlich, da ansonsten der Bildschirm vor der 1. Ausgabe gelöscht wird (bei WINDOW scheint das nicht immer so zu sein).

    PUTOVR/OVRDTA/OVRATR macht nur Sinn, wenn man mit langsamen Leitungen (ferne Bildschirme) arbeitet und gezielt nur geänderte Informationen übertragen will. Hierzu muss aber jedes Feld mit enstsprechende Attributen und Bezugszahlen definiert werden um einen Effekt zu haben (doch wen interessiert heute noch das Datenvolumen).
    Daher sind diese absolut nicht erforderlich.

    Das Dummyformat mit Assume macht genauso Sinn (siehe auch hierzu andere Beiträge).

    KEEP solltest du entfernen und dein Programm mit *INLR = *OFF verlassen:

    Use this record-level keyword to keep the display from being deleted when the display file is closed. The entire display is kept if any of the
    records on the display have KEEP specified. The default causes the entire display to be deleted when the file is closed.

    In addition, the name of the first, uppermost record on the display that has the KEEP attribute is saved by the OS/400 program for possible
    use by subsequent programs. The name kept can be used by a subsequent program that does not specify a record name on its first input
    operation. This keyword enables you to leave data on the display for review after your program ends, or use that data as input for
    subsequent programs.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  5. #5
    Registriert seit
    Mar 2003
    Beiträge
    31
    @Fuerchau
    danke auch Dir für die sehr ausführliche Nachricht.

    was meintest Du mit "*INLR = *OFF verlassen"?
    also *INRT=*ON oder
    *INLR habe ich aus allen Programmen entfernt und im "Aufruf-CL" habe ich ein RCLRSC eingesetzt.

    Die von dir beschriebene Methode funktioniert soweit ganz gut.
    Der Hintergrund bleibt immer aktuell... allerdings verschindet ab dem zweiten Aufruf der Window-Border (die Umrandung um das Fenster)... alles andere wie Eingabefelder usw. bleiben sichtbar...

    Fehlt mir hierzu noch irgendein Schlüsselwort?

  6. #6
    Registriert seit
    Mar 2003
    Beiträge
    31
    kann mir sonst niemand einen Tipp geben?

  7. #7
    Registriert seit
    Jul 2002
    Beiträge
    151

    Window fehlender Rand

    Hi,
    das laesst sich nur klären, wenn Du die komplette DDS des Windows (also auch die Felder im Fenster) hier mal postest.
    Meine Fenster mit RSTDSP(*NO) klappen immer.
    Gruß Holger

  8. #8
    Registriert seit
    Mar 2003
    Beiträge
    31
    @holly
    das kann ich gerne tun...

    hier der komplette Sourcecode... ich hoffe Du kannst das Lesen...
    oder gibt es einen Trick, wie man Sourcecode besser darstellt?

    noch ne Info bzgl des RPG-Programms:
    Bei mir sieht jedes Window gleich aus und verhält sich auch gleich...
    Das DSPF wird NICHT mit User-Open geöffnet sondern automatisch... und wie bereits beschrieben, werden die Programme alle mit *INRT beendet...
    bei *INLR funktioniert es auch bei mir...

    EDIT: Source siehe nächster Post als Anhang...

    Danke & Gruss
    Alex

  9. #9
    Registriert seit
    Mar 2003
    Beiträge
    31
    ups... habe gesehen, dass ich auch eine Datei anhängen kann...
    hier der Sourcecode als TXT...

  10. #10
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Natürlich fehlte noch ein Schlüsselwort:

    4.170 USRRSTDSP (User Restore Display) Keyword

    Use this record-level keyword on a window record to specify that the application will manage the display. Window records are not
    automatically removed. If this keyword is not specified, the system saves and restores the underlying display when a window record is
    displayed.

    This keyword has no parameters.

    The WINDOW keyword must be specified on the same record as the USRRSTDSP keyword. The USRRSTDSP keyword functions only
    when the window keyword defines a window. The USRRSTDSP keyword does not function if the window keyword specified a record
    format name. For more information, see "WINDOW (Window) Keyword" in topic 4.176.

    Option indicators are valid for this keyword.

    Das Fenster solltest du immer mit EXFMT (WRITE/READ) ausgeben.

    Wenn du ausserdem noch RCLRST in dem aufrufenden Programm verwendest, schließt du die DSPF auf jeden Fall.
    Dies solltest du unterlassen, wenn das Programm mehrfach aufgerufen werden soll.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  11. #11
    Registriert seit
    Mar 2003
    Beiträge
    31
    ... auch dieses Schlüsselwort habe ich nun eingefügt...
    das RCLRSC wird nur im ersten Start-CL aufgerufen, der das SFL aufruft...
    Die Windows-Programme werden ganz normal aufgerufen mit Call innerhalb des SFL-Programmes

    funktionieren tut es nicht.

    so sieht mein Source Code nun aus...

    A R FMT01
    A WINDOW(16 5 7 71 *NOMSGLIN)
    A N41 ROLLUP(25)
    A USRRSTDSP
    A OVERLAY
    A WDWBORDER((*DSPATR HI))
    A 1 31'NC2112' DSPATR(HI)

    Als Dateianhang mal ein Screenshot vom zweiten Aufruf des Windows... damit ihr seht was ich meine...

  12. #12
    Registriert seit
    Mar 2003
    Beiträge
    31
    und so sieht das Window aus, nach dem ersten Aufruf...

Similar Threads

  1. Problem mit Java-Methoden Aufruf aus ILE RPG?
    By Stoeberl in forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 10-01-07, 10:58
  2. Problem bei Anzeige mit EBCDIC nach FTP-Übertragung
    By sirdidi in forum IBM i Hauptforum
    Antworten: 8
    Letzter Beitrag: 06-11-06, 12:51
  3. Merkwürdiges Problem in VRPG
    By Flappes in forum IBM i Hauptforum
    Antworten: 0
    Letzter Beitrag: 06-10-06, 08:39
  4. Antworten: 1
    Letzter Beitrag: 16-05-06, 08:43
  5. Problem mit einem Window
    By ExAzubi in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 17-02-06, 09:10

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •