实际上,我并不是在询问有关实施的详细信息。我知道如何在整个屏幕中实现带有子文件的单个选择列表,但是当我尝试将相同的原理应用于窗口时,事情并没有按预期进行。这是窗口和子文件的 DDS:
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,这样单选列表中的某些选项将变得不可用,如果用户尝试选择此类选项,则窗口和单选列表将保留在屏幕上,光标位于第一个选项,直到用户选择退出窗口或选择可用选项。
如果用户选择可用选项,则此实现没有问题。但是如果用户选择了一个不可用的选项,窗口会根据需要保留在屏幕上,但是光标会移动到窗口的左上角,而不是停留在选择列表中的第一个选项上。即使我可以手动将光标移回该选项,下次选择不可用选项时,它也会再次转到窗口角落。这怎么发生的?以及如何解决这个问题?