PDA

View Full Version : SFLCHCCTL mit Datenfreigabe?



prsbrc
11-03-08, 10:34
Hallo Leute :),

ich baue mir gerade ein Prompt-Fenster welches ich per SFLCHCCTL bedienen lassen möchte.
Mir ist da aber aufgefallen das man mit der Leertaste einen Satz markieren muss um ihn auszuwählen. Geht das mit der Datenfreigabe auch?
Wenn ja wie muss ich mein DDS ändern?


R PMTWDWBC SFLCTL(PMTWDWBS)
SFLSNGCHC(*SLTIND)
CHCAVAIL((*COLOR GRN))
CHCSLT((*COLOR RED))
SFLPAG(0014)
SFLSIZ(2048)
70 SFLCLR
71 SFLDSPCTL
72 SFLDSP
73 ROLLUP
74 ROLLDOWN
75 SFLEND(*SCRBAR *PLUS)
A R PMTWDWBS SFL
A BSCHC1 1Y 0H SFLCHCCTL
A*
A BSLINE 48A O 02 04
A*
A BSPAR1 R H REFFLD(PAR)
A BSPAR2 R H REFFLD(PAR)
A BSPAR3 R H REFFLD(PAR)
A BSPAR4 R H REFFLD(PAR)
A BSPAR5 R H REFFLD(PAR)

Vielen Dank im Voraus!

Fuerchau
11-03-08, 10:38
Das liegt in der Art dieser Auswahl begründet.
Solche Steuerungen dienen eigentlich zur Mausbedienung, wobei die Auswahl durch ein Click auf das Element aktiviert wird.

Da ich solche Auswahlen aber auch mit der Tastatur bedienen kann, wird eine Eintrag eben mit der Leertaste markiert.

Dies ist i.Ü. vergleichbar mit Optionslisten in Windows-Programmen, die entweder mit der Maus oder eben mit der Leertaste ausgewählt werden.

Khholm
11-03-08, 11:24
Hallo,

um mit Datenfreigabe weiterzukommen würde ich mit der Cursorposition arbeiten, sieht in etwa so aus:

A RTNCSRLOC(&RCD &FLD)
A CSRLOC(LINNBR POSNBR)
A OVERLAY
A SFLCSRRRN(&C1CREC)
A ERASE(VTC200S1)
A 52 SFLDSP
A 51 SFLDSPCTL
A 50 SFLCLR
A 53 SFLEND(*MORE)
A N53 PAGEDOWN(54)
A*** ROLLDOWN(56)
A C1REC 4S 0H SFLRCDNBR(CURSOR)
A LINNBR 3S 0H
A POSNBR 3S 0H
A FLD 10A H
A RCD 10A H
A C1CREC 5S 0H

im Programm:
fVTC200D cf e workstn infds(fileds)
f sfile(VTC200s1:rr1)

d fileds ds
d ftaste 369 369
d csrloc 370 371B 0
d sflanz 376 377b 0
d sflnrtop 378 379b 0


die Subroutine dazu:

************************************************** **************
C csrpos begsr
************************************************** **************
C csrloc div 256 linnbr
C mvr posnbr
C EndSr


* sonst ENTER ---------------------
c Other
c exsr csrpos
c EndSl


und um dann den aktuellen SFL-Satz zu lesen und die Daten zu ermitteln:

/FREE
BegSr S30;

chain C1CREC VTC200S1;
If %found;
/END-FREE

prsbrc
11-03-08, 11:33
Okay, danke!
Dann werd ich mal mit der Cursorposition arbeiten versuchen. :cool:

MfG

prsbrc
11-03-08, 12:24
So, ich habs mit der RRN des SFL-Cursors gemeistert:



A R PMTWDWBC SFLCTL(PMTWDWBS)
A SFLSNGCHC(*SLTIND)
A CHCAVAIL((*COLOR GRN))
A CHCSLT((*COLOR RED))
A SFLCSRRRN(&SFLREC)
A SFLPAG(0014)
A SFLSIZ(2048)
A 70 SFLCLR
A 71 SFLDSPCTL
A 72 SFLDSP
A 73 ROLLUP
A 74 ROLLDOWN
A 75 SFLEND(*SCRBAR *PLUS)
A OVERLAY
A CSRLOC(XXCLIN XXCPOS)
A WINDOW(PMTWDWW0)
Mit dieser RRN kann ich dann im Programm das SFL lesen und habe somit per Enter einen Satz ausgewählt.



C SFLREC IFGT 0
C SFLREC CHAIN PMTWDWBS 91
C *IN91 IFEQ *OFF
C EVAL XXPAR1 = BSPAR1
C EVAL XXPAR2 = BSPAR2
C EVAL XXPAR3 = BSPAR3
C EVAL XXPAR4 = BSPAR4
C EVAL XXPAR5 = BSPAR5
C GOTO ENDPGM
C ENDIF
C ENDIF