Chinaunix首页 | 论坛 | 博客
  • 博客访问: 180232
  • 博文数量: 39
  • 博客积分: 1950
  • 博客等级: 中尉
  • 技术积分: 445
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-04 10:28
文章分类

全部博文(39)

文章存档

2017年(1)

2011年(1)

2010年(37)

分类:

2010-09-07 15:18:43

本想自行整理下这方面的内容,隔手在网上找到了相关资料,而且比自己理解的要透彻.故直接转了过来,以备参考.感谢原作者


在程序内对于光标定位的取值方式:(以下所有的举例都是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  
  
阅读(1203) | 评论(0) | 转发(0) |
0

上一篇:ALCOBJ/DLCOBJ使用介绍

下一篇:FTP使用介绍

给主人留下些什么吧!~~