Anmelden

View Full Version : 2 Subfiles übereinander - Positionierung halten



harkne
10-09-08, 13:55
Hallo zusammen,

Ausgangslage:

Es werden zwei Subfiles übereinander angezeigt.
Beides sind reine Anzeige-Subfiles ohne Eingabefelder.
Zum Programmstart ist die obere Subfile die aktive (WRITE SFL02 EXFMT SFL01)
Mit F11 kann zwischen den Subfiles gewechselt werden
Obere Subfile wird seitenweise beim Vorwärtsblättern gefüllt.
Untere Subfile wird vor der ersten Anzeige komplett gefüllt.

Problem:
Wenn ich in der unteren Subfile auf die 2. Seite geblättert habe und F11 drücke bleibt die untere Subfile nicht auf der 2. Seite sondern springt auf die 1. Seite zurück.

Ursachenforschung:
Generell bei der Anzeige einer Subfile habe ich in der DDS meine Subfile Record Number definiert und SFLRCDNBR(CURSOR) angegeben. Im RPG stelle ich dann grundsätzlich nach dem EXFMT den Satzzähler aus der Informationsdatenstruktur (Position 378-379) in die Subfile Recordnumber somit bleibt die Subfile auch bei Datenfreigabe immer auf der aktuellen Seite stehen.

Bei 2 Subfiles hab ich das Problem dass er mir den Satzzähler wenn die 2. Subfile aktiv ist nicht richtig aus der Informationsdatenstruktur zurück gibt. Also bin ich hergegangen und hab gedacht ich werfe das (CURSOR) einfach raus dann positioniert er erst gar nicht.
Mein Ziel das die untere Subfile stehen bleibt bei F11 habe ich erreicht nur leider ist jetzt ein anderes Problem aufgetreten was mich doch etwas verblüfft hat.

In der Bildschrimdatei ist bei beiden Subfiles SFLSIZ(6) und SFLPAG(5)
Wie gesagt fülle ich die obere Subfile seitenweise beim Vorblättern die untere Subfile wird jedoch komplett vor der ersten Anzeige gefüllt.
In beiden Subfiles ist auch ROLLUP und ROLLDOWN angegeben. Jetzt habe ich immer gedacht dass die Steuerung erst dann an das Programm übergeben wird wenn entweder die 1. Seite angezeigt wird und man nochmals zurück blättert oder die letzte der gefüllten Subfile angezeigt wird und man nochmals vorblättert.
Ich brauche den ROLLDOWN und ROLLUP leider auch bei der komplett gefüllten Subfile da wir unsere eigenen Fehlermeldungen bei Subfileanfang und -ende anzeigen sollen und nicht das Kreuz erscheinen soll.

Dadurch habe ich jetzt festgestellt dass wenn ich SFLRCDNBR(CURSOR) angebe sich mein Programm genau so verhält wie ich erwartet habe, also die Steuerung an das Programm erst dann wieder übergeben wird wenn auf der ersten Seite zurück oder auf der letzten Seit vorgeblättert wird. Gebe ich aber nur SFLRCDNBR an bekomme ich die Steuerung bei jedem blättern.

Jetzt bin ich ein wenig ratlos.

Ich bräuchte also eine Lösung in der die Positionierung von beiden Subfiles gehalten wird wenn F11 gedrückt wird. Die Steuerung soll beim Blättern aber erst an das Programm übergeben werden wenn auf der ersten Seite zurück oder auf der letzten Seite vorgeblättert wird.

Kann mir da jemand helfen ?

So ich bin inzwischen vom programmieren ins probieren übergegangen.

Also ich SFLRCDNBR mal komplett rausgenommen aus der unteren Subfile. Da ist er auf der aktuellen Seite stehen geblieben hat immer nur gebracht dass Blättern nicht möglich ist obwohl noch 2 weitere Seiten da waren und hat sie mir nicht mal mehr angezeigt. Dann hab ich gedacht der ROLLUP und der ROLLDOWN fliegt raus das will ich jetzt wissen. Jetzt reagiert er auf ROLLUP und ROLLDOWN anscheinend als wäre Datenfreigabe gedrückt.
Natürlich ist das nicht so. Ich denke er hat ein Problem damit dass in der ersten Subfile immer noch ROLLUP und ROLLDOWN definiert ist. ich mach zwar nur einen WIRTE auf SFL01 und einen EXFMT auf SFL02 aber anscheinend sind die Funktionstasten von SFL01 doch noch aktiv. Also die Blätterntasten sind erlaubt (in SFL01 mit ROLLUP(25) und ROLLDOWN(26) definiert) aber weder die 25 noch die 26 geht an und somit rennt er durch die Anweisungen als wäre DF gedrückt.

Ich muss doch jetzt nicht ernsthaft das so umprogrammieren das ich in der Subfile immer nur das fülle was auch tatsächlich angezeigt wird nur um diese dumme Steuerung hinzubekommen ?

Fuerchau
10-09-08, 18:03
Da Subfiles einiges automatisieren, entscheidet die Cursorposition, wo geblättert wird.

Da beide Subfiles gleichzeitig aktiv sein können, benötigst du keine F11 zum umschalten.
Du benötigst lediglich 2 Write's für die SFLCTL's und ACHTUNG: einen READ FILE anstelle READ/EXFMT FormatName !

Über die INFDS kannst du dann erfragen, in welchem Satzformat gerade der Cursor steht.
Leider kann dir die INFDS ja nur die Satznummer des SFL's liefern, wo gerade der Cursor steht.

Also musst du beim Drücken einer Taste ROLLUP/ROLLDOWN auf das Satzformat in der INFDS abfragen und nur dieses entsprechend steuern.
Das andere Satzformat darfst du nicht erneut ausgeben !
Anschliessend wieder READ FILE !

Der User steuert nun über den Cursor, in welchem Bereich er blättert und nicht mit F11.

harkne
11-09-08, 10:23
Vorgabe ist leider, dass die aktive Subfile mit F11 gewechselt werden soll. Aus meiner Sicht auch verständlich. Es ist leichter einmal F11 zu drücken als den Cursor auf die eine oder andere Subfile zu stellen. Ist aber wieder mal geschmacksache. Allerdings laufen bereits 2 Anwendungen mit F11 also soll es laut Vorgabe auch so bleiben.

Inzwischen hab ich das Programm soweit geändert dass in der unteren Subfile tatsächlich immer nur das drin steht was angezeigt wird. Somit ist mein Problem auch behoben, dachte nur nicht das es so umständlich sein muss.

Fuerchau
11-09-08, 10:55
Nunja, du kannst natürlich mit F11 und CSRPOS den Cursor gezielt setzen ohne dass eine Subfile gewechselt wird.