PDA

View Full Version : SFLDROP / SFLFOLD



christian_lettner
24-05-07, 10:53
Hallo!

Ich habe derzeit folgendes angegeben um einen Subfile ein- bzw. zweizeilig anzuzeigen:

Displayfile:
SFLMODE(&FLD)
10 SFLDROP (CF10)
N10 SFLFOLD(CF10)
FLD 1A H

RPG:
MOVE FLD *IN10 FALTEN JA/NEIN
WRITESFLCTL

Funktioniert auch prima.

Jetzt möchte ich jedoch mit F11 den Subfile zweizeilig, mit anderen Feldern in Zeile zwei anzeigen. Lässt sich ja auch alles über Bezugszahlen steuern.

Ich bekomme es aber nicht hin, den Subfile mit F10 u. F11 zweizeilig anzuzeigen, da ich ja SFLDROP/SFLFOLD nur einmal angeben kann.

Gibt es eine Möglichkeit bei SFLDROP/SFLFOLD nicht direkt auf die Eingabe des Benutzers, sondern auf einen Indikator abzufragen?

Habe auch schon überlegt zwei Subfiles zu erstellen, aber dann sehe ich das Problem, wie ich immer in beiden Records die aktuellen Daten bekomme, da sie auch Eingabefelder enthalten.

Es sollte nach Möglichkeit einfach zu handhaben sein, da es in dem Programm bestimmt noch viele Änderungen geben wird.

Im Voraus bereits besten Dank für eure Hilfe.

mfg Chris

kuempi von stein
24-05-07, 11:26
Hello,

ich stell mich heute wieder mal doof an.
Was genau ist Dein Problem?
Habs nämlich nicht verstanden...

k.

christian_lettner
24-05-07, 11:42
Habe einen Subfile mit Eingabefeldern.

Standardmässig soll angezeigt werden:
XXXXXXXXXXXXX

F10 - Zweizeilig
XXXXXXXXXXXXX
YYYYYYYYYYYYY

F11 - Zweizeilig
XXXXXXXXXXXXX
ZZZZZZZZZZZZZ

Wie mache ich das?

Ich kann ja nicht folgendes angeben:
10 SFLDROP (CF10)
N10 SFLFOLD(CF10)
11 SFLDROP (CF11)
N11 SFLFOLD(CF11)

Kann ich das mit einem Subfile lösen, oder brauche ich da zwei.
Und wie würdest du bei zwei Subfiles, die Daten vom Ersten in den Zweiten schupfen?

Danke.

kuempi von stein
24-05-07, 12:29
Ahh...
dann hatte ich das doch richtig verstanden.
Also im Prinzip hast Du doch schon selber die Antwort gegeben im ersten Posting?

Du kannst das doch alles mit Bezugszahlen steuern?
Also in Zeile zwei für YYYYY die Bezugszahl setzen wenn F10 und für ZZZZZ die Bezugszahl setzen wenn F11 und vorher die 10 wieder an für Falten.

Habe kein Beispiel parat, aber das muss doch so gehen?

mhh..

kuempi

Zusatz:
Weiss jetzt nicht ob die Kontrolle ans PGM zurückgeht beim Falten... In meinen aktuellen Sourcen funktioniert das vom System her... sprich das ist gar nicht abgefragt im PGM.. müsste man mal probieren..

kuempi von stein
24-05-07, 13:04
Ahh nun aber.

Also das mit den Bezugszahlen scheint problematisch zu sein beim Falten verstehe...

Habe mal gerade etwas rumgespielt.
Man kann die Falten-BZ auch manuell an/aussetzen...

Sind die Felder YYYYY bzw XXXXX identisch von der Grösse/Inhalt her? so dass man je nach BZ den einen oder den anderen Inhalt da neu reinschiebt?

Dann könnte man was machen, ist aber etwas Arbeit.
Und die SFL wird beim Falten vorher neu gefüllt(oder upgedatet)...
Was besseres fällt mir gerade nicht ein sry.

k.

harkne
24-05-07, 13:08
Also für Dein Problem sehe ich im Moment zwei Lösungen:

Wenn die Felder der zweiten Zeile Variabel sind gibt es folgende Möglichkeiten:

1. Du hast zwei Subfiles
Die erste Subfile hat die Anzeige
XXXXXXXXXXXX
YYYYYYYYYYYY
und CF10 für SFLDROP/FOLD
und CF11 (normal)
Dann müsstest Du einfach bei F11 die andere Subfile anzeigen und auf bzw. zuklappen.

Die zweite Subfile hat die Anzeige
XXXXXXXXXXXX
ZZZZZZZZZZZZ
und CF11 für SFLDROP/FOLD
und CF10 (normal)
Dann müsstest Du einfach bei F10 die andere Subfile anzeigen und auf bzw. zuklappen.

2. Das Ganze mit einer Subfile lösen

Die Felder der zweiten Zeile sind unter Bezugszahl. Das funktioniert aber nur wenn SFLSIZE und SFLPAGE gleich groß sind, soll heißen Du kannst die Subfile nicht komplett füllen sondern immer nur das was man auch tatsächlich sieht.
Dann mußt Du aber CF10 und CF11 selbst ausprogrammieren. Ist aber meiner Meinung nach trotzdem die "elegantere" Lösung. Das manuelle ein und aussetzen von SFLFOLD und SFLDROP würde ich bei einer Subfile die nur daß anzeigt was man gerade sieht aber lieber lassen, da gibts nämlich unschöne Dinge. Angenommen es passen genau 10 Zeilen auf eine Seite und Du stehst auf der ersten Seite und die Subfile ist aufgeklappt, dann sieht man die ersten 5 Sätze zweizeilig. Blätter man nun vorwärts (die Steuerung geht nicht ans Programm da ja 10 Sätze in der Subfile stehen) stehen aufgeklappt die zweiten 5 Sätze zweizeilig. Klappt man jetzt zu stehen immer noch die zweiten 5 Sätze aber einzeilig und 5 Zeilen deiner Subfile sind leer obwohl es wahrscheinlich noch Datensätze in der Datei gibt.
Deshalb bei der Lösung mit einer Subfile immer selbständig einlesen und zwar genau soviel Datensätz wie Du benötigst.

Also z.B.

Bei Programmbeginn 10 Datensätze einzeilig
F10 wird gedrückt.
Subfile clearen und die ersten 5 Datensätze zweizeilig
Benutzer blättert nach vorn - Subfile clearen und die zweiten 5 Datensätze zweizeilig
Benutzer drückt F10 - Subfile clearen und die zweiten 5 Datensätze + 5 weitere einzeilig anzeigen
Benutzer drückt F11 - Subfile clearen andere Bezugszahl aktivieren und wieder die zweiten 5 Datensätze zweizeilig anzeigen

usw. ....

christian_lettner
24-05-07, 13:35
Danke Leute für die rasche Hilfe.
Ganz glücklich bin ich aber leider trotzdem immer noch nicht.

So wie es Harkne in Lösung 1 beschriebt, wollte ich es anfangs auch machen. Dann frage ich mich wie ich die Daten von wohl am besten von Subfile 1 in Subfile 2 übernehme, falls er bei Zeile 1 was geändert hat u. F11 macht.

Den ganzen Subfile durchlesen u. Subfile 2 ausgeben? Oder wie würdet ihr es machen um immer beide zeitgleich am aktuellen Stand zu halten?

christian_lettner
24-05-07, 13:52
So Leute vielen Dank für eure Hilfe, beim duchlesen eurer Beiträge traf es mich plötzlich wie ein Blitz.

Ich habe bei F11 im Programm immer *IN10 aktiviert, dabei muss ich ihn zum umschalten von 1 auf 2-zeilig ja deaktivieren, sonnst zeigt er mir immer den Einzeiligen an.

Die Anzeige der unterschiedlichen Felder steuere ich indirekt durch Ausblenden, dadurch funktioniert das auch wenn SFLSIZ <> SFLPAG.
FELD1 R B 11 2
51 DSPATR(ND PR)
FELD2 R B 11 2
N51 DSPATR(ND PR)

Solltet ihr mal ausprobieren.

Fuerchau
26-05-07, 12:34
Das mit dem DSPATR ist schon klar, aber du kannst dann immer noch keine Felder überlagern.
Ist ein Feld nicht sichtbar, bleibt die Spalte eben leer.

Hier kann man sich (solange es keine Eingabefelder sind) auch mit der internen Feldaufbereitung incl. Farben besser behelfen und gibt dann halt nur 1 Feld mit allen Infos aus.

christian_lettner
29-05-07, 07:04
Hallo Fuerchau!

Ja sorry, hab da wohl in meiner Euphorie auf die Schnelle was verwechselt.