Anmelden

View Full Version : Probleme bei SFLDROP



HELROHA
16-11-04, 08:06
Hallo Forum,

Ich habe ein Problem in einer BS-Datei mit SFLDROP Funktion

Pro Subfileseite sind 8 Zeilen möglich.
Pro Subfilesatz sind 4 Zeilen definiert

Mit SFLDROP kann man die Subfile aufblättern, wobei dann
nur noch 2 Datensätze (a 4 Zeilen pro Satz) auf der Seite angezeigt werden.

Das ist soweit ja o.k.

Das Problem ist aber ....

ich habe aber in der aufgeblätterten Subfile Eingabefelder
definiert die geändert werden sollen.

Wenn der Cursor jetzt z.B. auf der ersten Seite im 3. Subfilesatz
steht und SFLDROP gedrückt wird, dann blättert die Subfile auf
aber der Cursor bleibt an der Stelle der Ursprüngliche Anzeige
stehen.

Das heißt um an die aufgeblätterten Eingabefelder des 3. Subfilesatzes zu kommen muß der Anwender einmal vorblättern weil der 3.aufgeblätterte Subfilesatz nicht mehr auf der ersten Seite steht sondern auf der 2. Seite.

Gibt es eine Möglichkeit den Cursor so zu positionieren dass er in der aufgeblätterten Anzeige in dem gleichen Datensatz erscheint wie in der ursprünglichen Anzeige ?

Ich hoffe ich habe das jetzt einigermaßen verständlich rübergebracht.

Gruß
Helmut

malzusrex
16-11-04, 08:55
hallo helmut,

ich denke es muesste mit SFLRCDNBR gehen.
schau auch mal in den Beitrag (http://www.rlpforen.de/showthread.php?t=6025)
vor ein paar wochen. da hatte ich etwas ähnliches

gruß ronald

Fuerchau
16-11-04, 09:28
Naja, ganz so einfach ist das leider nicht, da bei SFLDROP das Programm normalerweise nicht aktiviert wird.
Man muss die Steuerung also selbst übernehmen.
Die Schlüsselworte SFLDROP/SFLFOLD müssen mit Bezugszahl definiert werden, damit man sie gezielt ansteuern kann.
Eine 1-stellige Programmübergabe-Variable mit SFLMODE liefert den aktuellen Stand (gefaltet, geöffnet).
Mit SFLCSSRRN bekommt man die aktuelle Satznummer des Cursors.
Die Funktionstaste für SFLDROP muss vom Programm ausgewertet werden (also keine Zuordnung der Taste).
Drückt der Anwender nun die Taste, wird über SFLMODE festgestellt, wie der Modus nun zu ändern ist.
Per SFLRCDNBR kann mit Ansteuerung der Bezugszahl für SFLDROP/SFLFOLD die Anzeige wiederhergestellt werden.
Bleibt nur noch das Problem der Cursorpositionierung.
Default steht der Cursor auf dem 1. Feld des SFL-Satzes. Möchte man nun auf einem bestimmten Feld positionieren, kann man das mit DSPATR(PC) erreichen, aber:
Man bedenke, dass nur der 1. DSPATR(PC) wirkt. Wenn also mehrere SFL-Sätze noch das DSPATR(PC) enthalten, wird ggf. auf dem falschen Satz positioniert, was insbesonders beim Blättern stört (der Cursor springt durch die Gegend).
Lösung:
Per Schleife alle SFL-Sätze bearbeiten und das DSPATR(PC) zurücksetzen (Bezugszahl) und gezielt für den ausgewählten Satz wieder setzen.
Allerdings: Blättert der Benutzer nun, steht der Cursor ggf. auf der falschen Stelle (er bleibt ja erstmal stehen). Der Benutzer versetzt den Cursor und blättert wieder zu dem Satz mit DSPATR(PC) zurück/vor und schon steht der Cursor wieder auf dem Feld.
Auch hier hilft nur, das Blättern selbst in die Hand zu nehmen und das DSPATR(PC) zurückzusetzen (unter Beachtung des akt. SFLMODE und damit der Anzahl sichtbarer Sätze pro Seite).

Die andere Alternative ist hier dann CSRPOS, was allerdings bedeutet, dass die Cursorpositionen der Felder im Programm zu jeder Zeit bekannt sein müssen und das Setzen des Cursors IMMER damit erfolgen muss (bezogen auf das Satzformat).

HELROHA
16-11-04, 09:48
Danke erstmal für die ausführliche Schilderung.

Ich dachte mir schon dass das über das bezugszahlengesteuerte SFLDROP nicht geht da das Programm ja bei gedrücktem SFLDROP stehenbleibt und man die Bez.Zahl nicht abfragen kann.

Aber der Vorschlag hat mir schon weitergeholfen.

Vielen Dank nochmal

Helmut
:)

Fuerchau
16-11-04, 10:36
Die Bezugszahl für SFLDROP weiß dass Programm doch selbst und den aktuellen Stand bekommt man über SFLMODE.