在程序内对于光标定位的取值方式:(以下所有的举例都是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
fairyboy 回复于:2006-07-21 14:15:43
2:使用RTNCSRLOC
在DSPF中定义:
A RTNCSRLOC(&CSRRCD &CSRFLD )
A CSRRCD 10A H---记录名字段
A CSRFLD 10A H---字段名
取出光标所在的显示记录名和所在的字段
fairyboy 回复于:2006-07-21 14:17:32
3:RTNCSRLOC(*MOUSE &A &B)
取(鼠标)光标所在具体位置
A A 3S 0H
A B 3S 0H
fairyboy 回复于:2006-07-21 14:18:23
4:RTNCSRLOC(*WINDOW &A &B)
取活动窗口中光标位置
fairyboy 回复于:2006-07-21 14:39:16
总结:在平时工作中,有的时候需要
在用户交互画面中:当用户在不能的输入字段上,按某个功能键实现查询功能.
如果我们用固定的方式:比如说,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
PS:虽然说不一定是这种方式好,我只是想对平时工作中,对于一个事物的多个处理方法.大家参考一下.有啥写错的地方,还望指出..
下一个系列主要将如何 掌握SUBFILE的多种处理方式...
just a kid 回复于:2006-07-21 15:12:01
路过,帮顶
wnai 回复于:2006-07-21 16:16:16
嘻嘻,是个好贴,一般用的比较多的是1,2种, 3,4是在dspf的DDS中定义吗?
nhxingliang 回复于:2006-07-21 22:03:50
不错哦! 继续!
arishy 回复于:2006-07-22 08:45:46
路过,不错,顶!
arishy 回复于:2006-07-22 08:46:57
路过,不错,顶!
arishy 回复于:2006-07-22 09:02:52
fariyboy (大天使)您好,对于您提出的这几种方式,我们目前只是了其中的F3=用户信息查询,F4:厂家基本信息查询,F5:人员使用查询等,此种方式,还有一种方式就是2:第2种就是利用光标返回出所在字段名,我想学习一下您刚才说的对行列上点击可以调用另外一个程序,有没有好的范例给我一下,谢谢!
快乐狗 回复于:2006-07-22 18:48:09
支持,顶起
fairyboy 回复于:2006-07-25 10:31:28
最近没啥目标,整理一些
wdz315 回复于:2006-07-25 15:34:50
支持一下。经常用前两种!
tomroom 回复于:2006-07-25 18:18:02
jda 的代码里的确能学到不少好东西
heqiji 回复于:2006-07-27 17:10:57
受教了,谢谢
l.rover 回复于:2006-07-29 07:36:07
不错,支持。
sa_hata 回复于:2006-07-29 09:52:45
8错, 顶个 ...
Stealer 回复于:2006-08-07 16:59:51
不错,顶
|