PDA

View Full Version : SFLFOLD Beispiel gesucht



kuempi von stein
16-11-06, 10:29
Hello,

habe noch nie (hört hört) mit SFLFOLD gearbeitet.
Nun versuche ich mich gerade daran und kriege nix gebacken.
Die Handbücher verraten mir auch nix.

Kann mir mal jemand bitte einen kurzen Anriss geben, wie ich das in der DSPF definieren?
Einfach nur SFLFOLD(CAxx) reicht ja wohl nicht, gelle?
Und für das RPG dann, gibt es da was zu beachten?

Dankeschön

kuempi

Fuerchau
16-11-06, 10:36
SFLFOLD/SFLDROP und SFLMODE sind alles was man braucht.

10 SFLFOLD(CF10)
N10 SFLDROP(CF10)

Dann noch ein verstecktes Feld, 1 Byte und dieses in SFLMODE(&MDFELD) angeben.

Die BZ10 steuert die Sicht.
Im RPG einfach ein "MOVE MDFELD *IN10" um den gewählten Modus zu steuern bzw. wiederherzustellen.

Falls das genau anders rum ist, einfach 10 / N10 tauschen.
SFLMODE liefer BLANK oder '1' während die BZ 0 oder 1 benötigt. In RPG ist das aber egal, da Blank als 0 genommen wird.

kuempi von stein
16-11-06, 10:46
Hallo Fuerchau,

genau diese Angaben habe ich soweit auch gefunden in der Literatur und auch bei mir eingegeben.

Aber wo und wie plazieren ich den nun irgendein Feld in der Source, welches dann angezeigt wird?
Wie sag ich der DSPF, dass das ein Feld ist, welches nur angezeigt wird, wenn die SFL aufgefaltet ist?

k.

Fuerchau
16-11-06, 10:59
In dem du Felder in eine 2./3. Zeile stellst.

kuempi von stein
16-11-06, 11:05
*lach*

Ja ich merk schon, das wird kompliziert.
*grummel*

also ich habe mal eine vorhandene SFL zum Testen genommen.
Habe dann das Feld XXFLD3 auf die nächste Zeile gebracht. Das ist dann das Feld, welches hin und her gefaltet werden soll.
Aber dadurch stimmen nun nicht mehr SFLSIZ und SFLPAG und ich bekomme nen 30er Fehler...



80 A CF08(08 'Falten') 16.11.06
90 A CF12(12 'Zurück') 16.11.06
100 A R SFLFMT01 SFL 16.11.06
110 A*%%TS SD 20061116 111300 KUEMPI REL-V5R2M0 5722-WDS 16.11.06
120 A X1AUSW 1A B 6 2COLOR(WHT) 16.11.06
130 A XXFLD1 7S 0O 6 5 16.11.06
140 A XXFLD2 3S 0O 6 13 16.11.06
150 A XXFLD3 9Y 2O 7 13EDTCDE(4) 16.11.06
160 A R CTLFMT01 SFLCTL(SFLFMT01) 16.11.06
170 A SFLSIZ(0017) 16.11.06
180 A SFLPAG(0016) 16.11.06
CPD7817-*
* CPD7817 30 Wert im Schlüsselwort SFLPAG für Bildschirmgröße zu groß.
190 A KEEP 16.11.06
200 A BLINK 16.11.06
210 A OVERLAY 16.11.06
220 A PUTOVR 16.11.06
230 A 08 SFLFOLD(CF08) 16.11.06
231 A N08 SFLDROP(CF08) 16.11.06
232 A SFLMODE(&MDFELD) 16.11.06
240 A N30 SFLDSP 16.11.06
250 A N30 SFLDSPCTL 16.11.06
260 A 30 SFLDLT 16.11.06
270 A 30 SFLCLR 16.11.06
280 A N30 SFLEND(*MORE) 16.11.06
290 A 51 SFLMSG('Auswahl ungültig.') 16.11.06
300 A MDFELD 1 H 16.11.06
301 A X1SATZ 4S 0H SFLRCDNBR 16.11.06


kuempi

Hoppla, der hat die Formatierung zerbröselt. sorry, ich hoffe man kanns lesen.

Fuerchau
16-11-06, 11:13
Wenn du mehr als 1 Zeile für die SFL brauchst, reduziert sich doch SLFPAG !
SFLPAG muss eben so gross sein, wie SFL-Sätze auf die Seite passen.
Bei SFLFOLD wird automatisch auf 1-Zeilig umgeschaltet und SFLPAG intern korrigiert.

kuempi von stein
16-11-06, 11:46
Hurra, es funktioniert!

Ist ja relativ simpel, wenn man es dann geschnaggelt hat.
Vielen Dank.

kuempi

Fuerchau
16-11-06, 12:13
Wichtig ist hier noch ggf. eine vernünftige Cursor-Steuerung.
Wenn man seine SFL nicht immer komplett füllt (SFLEND nicht an), dann muss man natürlich wissen, in welchem Modus sich die SFL befindet um die korrekte Anzahl Sätze zu laden.

Auch das Hin- und Herschalten zwischen den Modi ist leider nicht so schön, da der Cursor stehen bleibt.
Ohne Tastenzuordnung gehts aber leider nicht um die Modi absolut programmtechnisch zu realisieren und den Cursor vernünftig zu steuern.

Es sei auch noch folgendes gesagt:
Angenommen ich definiere 8 Sätze pro Seite, aber 16 Zeilen passen drauf.
Ich fülle nun per Programm die 1. 8 Sätze und zeige im SFLDROP-Modus an.
Schaltet der Benutzer nun in SFLFOLD, bleibt die untere Hälfte leer, da ja das Füllen der SFL erst durch das Blättern angefordert wird !
Wird nun geblättert fülle ich auf Grund des Modus nun 16 Sätze, das Bild bleibt aber bestehen, da jetzt die untere Hälfte zusätzlich angezeigt wird.
Beim weiterblättern wird das Programm wieder nicht aktiv und es wird wieder nur die obere Hälfte angezeigt.

Ich habe es mir daher angewöhnt, wenn ich mit SFLDROP/SFLFOLD arbeite
1. immer soviele Sätze wie Zeilen (also SFLFOLD-Modus)
2. das Blättern selber zu steuern
3. SFLFOLD(CF22)/SFLDROP(CF22) und CF10 separat definiert
Dadurch übernehme ich mit CF10 selber die Steuerung und von CF22 erzähle ich dem User nix.
Nur dann kann ich sicher sein, dass
a) die Seiten korrekt gefüllt sind
b) der Cursor vernünftig steht

Zugegeben, etwas mühsam aber es funktioniert sauber.

Rincewind
17-11-06, 15:46
Hi,

Alternativ einfach das ganze Subfile füllen (maximal 9999 sätze) und auf die schöne automatik vertrauen.

So mach ich das zumindest und habe keine Probleme mit diesen Blättersubfiles (haben inzwischen so oft die Kommentare oder Änderungsdatum in den Zeilen, dass Probleme auffallen müssten^^)

Schönes WE
Rince

Fuerchau
17-11-06, 16:06
Wenn das Füllen der Subfile allerdings mehrere Minuten beansprucht, kann ich dieses dem User nicht zumuten.
Schließlich will der schnell eine Antwort und blättert eher selten bis zum Schluss.
Mal ehrlich, wer schaut sich denn tatsächlich auch 9999 Sätze, ggf. mehrzeilig an.

Bei manchen Anwendungen dauert das Füllen mit 100 Sätzen schon mehr als 10 Sekunden (da ggf. hier pro SFL-Satz in noch 10-20 anderen Dateien geprüft, geschaut undgecallt wird).

Und es gilt immer noch die alte Regel, keine Antwortzeit länger als 3 Sekunden !
Alles andere hält nur unnötig auf.