本想自行整理下这方面的内容,隔手在网上找到了相关资料,而且比自己理解的要透彻.故直接转了过来,以备参考.感谢原作者
在程序内对于光标定位的取值方式:(以下所有的举例都是RPGLE类型)
1:INFDS中定义
FXXXXFM CF E WORKSTN INFDS(INFDS)
D INFDS DS
D* DISPLAY DATA STRUCTURE
D QFSTA *STATUS
D QFCURP 370 371B 0
C QFCURP IFNE 0
C QFCURP DIV 256 ROW ----行
C MVR COL -----列
C ENDIF
在DSPF中,
A ROW 3S 0H
A COL 3S 0H
2:使用RTNCSRLOC
在DSPF中定义:
A RTNCSRLOC(&CSRRCD &CSRFLD )
A CSRRCD 10A H---记录名字段
A CSRFLD 10A H---字段名
取出光标所在的显示记录名和所在的字段
3:RTNCSRLOC(*MOUSE &A &B)
取(鼠标)光标所在具体位置
A A 3S 0H
A B 3S 0H
4:RTNCSRLOC(*WINDOW &A &B)
取活动窗口中光标位置
总结:在平时工作中,有的时候需要
在用户交互画面中:当用户在不能的输入字段上,按某个功能键实现查询功能.
如果我们用固定的方式:比如说,F3=用户信息查询,F4:厂家基本信息查询,F5:人员使用查询,也可以满足需求.但是当有很多个时,就不提倡这种做法了.
这时,我们就需要用光标定位来实现上面的功能
一般有2种方式:
1:利用光标的行坐标和列坐标的值等于某个固定值实现
例子:
C ROW IFEQ 6 ---当鼠标位置的行坐标等于第6行
C COL ANDGE 28 ---列坐标在28列到32列之间
C COL ANDLE 32
C CALL 'XXXXX' XXXXX
C ENDIF
2:第2种就是利用光标返回出所在字段名
比如:在DSPF中定义的一个输入字段 USEFLD
那么如果在DSPF定义了,RTNCSRLOC(&CSRRCD &CSRFLD )
那么CSRFLD IFEQ 'USEFLD' 当光标所在的字段名等于
CALL 'XXX' XXX
ENDIF
阅读(1237) | 评论(0) | 转发(0) |