Ibm midrange 如何使用AS400 DDS在窗口中创建单个选择列表?
事实上,我并不是在询问有关实施的细节。我知道如何在整个屏幕中使用子文件实现单个选择列表,但当我尝试将相同的原则应用于窗口时,事情并没有完全按照预期进行。以下是窗口和子文件的DDS:Ibm midrange 如何使用AS400 DDS在窗口中创建单个选择列表?,ibm-midrange,Ibm Midrange,事实上,我并不是在询问有关实施的细节。我知道如何在整个屏幕中使用子文件实现单个选择列表,但当我尝试将相同的原则应用于窗口时,事情并没有完全按照预期进行。以下是窗口和子文件的DDS: A R SWCCHK03 SFL A S0AVAL 1Y 0H SFLCHCCTL A S0OPTN 10A O A R SWCCHK04
A R SWCCHK03 SFL
A S0AVAL 1Y 0H SFLCHCCTL
A S0OPTN 10A O
A R SWCCHK04 SFLCTL(SWCCHK03)
A OVERLAY
A SFLDSP
A SFLDSPCTL
A 30 SFLCLR
A 31 SFLEND
A SFLSIZ(0006)
A SFLPAG(0005)
A WINDOW(*DFT 13 32)
A SFLSNGCHC(*RSTCSR *AUTOSLT)
A 1 3'Option'
以下是RPGLE中用于显示和处理所选选项的循环:
C SR300 BEGSR
C *IN12 DOWEQ *OFF
C EXFMT SWCCHK04
C *IN12 IFEQ *OFF
C GOTO SR300E
C ENDIF
C READC SWCCHK03
C S0AVAL IFEQ 4
C ITER
C ENDIF
.
.
.
C ENDDO
C SR300E ENDSR
在某些情况下,我想将S0AVAIL设置为4,这样单选列表中的某些选项将不可用,如果用户试图选择这样的选项,窗口和单一选择列表将保留在屏幕上,光标位于第一个选项上,直到用户选择退出窗口或选择可用选项
如果用户选择可用选项,则此实现没有问题。但是,如果用户选择了不可用的选项,窗口将根据需要保留在屏幕上,但光标将移动到窗口的左上角,而不是保留在选择列表中的第一个选项上。即使我可以手动将光标移回该选项,下次选择不可用选项时,它也会再次转到窗口角。这是怎么发生的?如何解决这个问题?这段代码是如何编译的?在32列宽的窗口中有一个50列子文件字段(S0OPTN)。确保您正在运行您认为应该运行的代码 当我尝试类似的代码时,我无法选择S0AVAL=4的行。您如何“选择”一个不可用的选项?如果使用光标键,光标将跳过不可用的选择。如果我用鼠标点击,我会得到一个“禁止输入”的键盘错误。您使用的是什么终端仿真器?我正在使用适用于Windows的个人通信6.0 工作守则如下:
A*
A R SWCCHK03 SFL
A S0AVAL 1Y 0H SFLCHCCTL
A S0OPTN 10A O 6 11
A*
A R SWCCHK04
A SFLCTL(SWCCHK03)
A OVERLAY
A 27 SFLDSP
A N28 SFLDSPCTL
A 28 SFLCLR
A 29 SFLEND
A SFLSIZ(06)
A SFLPAG(05)
A CF12(12)
A WINDOW(*DFT 13 32)
A SFLSNGCHC(*RSTCSR *AUTOSLT)
A SFLRRN 4S 0H SFLRCDNBR(CURSOR)
A 1 10'Title'
A CHOICE 4S 0 3 1
A 4 5'Choose one'
h/copy qrpglesrc,stdhspec
h* dbgview(*list)
fsotest cf e workstn
f SFILE(SWCCHK03:RRN)
c* clear sfl
c z-add 1 sflrrn
c setoff 272829
c seton 28
c write SWCCHK04
c setoff 28
c* load sfl
c 1 do 9 rrn 4 0
c movel rrn s0optn
c if rrn = 4
c z-add 4 s0aval
c else
c z-add 0 s0aval
c endif
c write SWCCHK03
c seton 27
c enddo
C *IN12 DOWEQ *OFF
C EXFMT SWCCHK04
C *IN12 IFEQ *ON
C LEAVE
C ENDIF
C READC SWCCHK03 80
C n80 do
C movel rrn choice
C z-add 0 S0aval
C update SWCCHK03
C enddo
C ENDDO
c seton lr
抱歉,S0OPTN的长度应为10个字符。我把它和另一个领域混在一起了。关于选择一个不可用的选项,不知何故,我把光标放在它上面没有问题。我正在使用适用于Windows的个人通信5.8。