QAD 实现批量导入菜单(GUI版) -Index3-View

1.菜单显示类

 
 /*------------------------------------------------------------------------
    File        : cimframe
    Purpose     : GUI CIMLOAD FRAME CLASS
    Syntax      : 
    Description : Compatibility with PROGRESS OPENEDGE 10.1A and above
    Author(s)   : TERRENCE ZHANG
    Created     : Thu Oct 27 14:43:14 CST 2016
    Notes       : 
  ----------------------------------------------------------------------*/


CLASS cimframe: 
    DEFINE PROTECTED VARIABLE filepath AS CHARACTER NO-UNDO.
    DEFINE PUBLIC VARIABLE effdate AS DATE INITIAL TODAY NO-UNDO.

    DEFINE PUBLIC VARIABLE togbx AS LOGICAL INITIAL NO VIEW-AS TOGGLE-BOX NO-UNDO.
    DEFINE PUBLIC VARIABLE bptitle AS CHARACTER FORMAT "x(48)" NO-UNDO.
    DEFINE PUBLIC VARIABLE frametitle AS CHARACTER FORMAT "x(48)" VIEW-AS TEXT NO-UNDO.
    DEFINE PUBLIC VARIABLE togbxlab AS CHARACTER NO-UNDO.
    DEFINE PUBLIC VARIABLE showdate AS LOGICAL NO-UNDO.
    DEFINE PUBLIC VARIABLE showtogbx AS LOGICAL NO-UNDO.
    DEFINE PUBLIC VARIABLE datelab AS CHARACTER NO-UNDO.
    DEFINE PUBLIC VARIABLE togbxmsgf AS CHARACTER NO-UNDO.
    DEFINE PUBLIC VARIABLE togbxmsgt AS CHARACTER NO-UNDO.
    
    DEFINE PUBLIC VARIABLE labellist AS CHARACTER NO-UNDO.  /*标签*/
    DEFINE PUBLIC VARIABLE formatlist AS CHARACTER NO-UNDO.  /*格式*/
    DEFINE PUBLIC VARIABLE visiblelist AS CHARACTER NO-UNDO.  /*显示*/
    
    DEFINE PUBLIC VARIABLE cimtance AS Icimode NO-UNDO.  /*实现Icimode的类*/
    DEFINE PRIVATE VARIABLE SPACES AS CHARACTER NO-UNDO.  /*代空格*/
    DEFINE PRIVATE VARIABLE warn1 AS CHARACTER NO-UNDO.
    DEFINE PRIVATE VARIABLE warn2 AS CHARACTER NO-UNDO.  /*警告信息*/

    DEFINE PROTECTED TEMP-TABLE temppv NO-UNDO  
    FIELD pvfld AS CHARACTER FORMAT "x(36)" EXTENT 7.    /*显示的最大FORMAT*/
    DEFINE QUERY qpt FOR temppv.
    DEFINE BROWSE bpt QUERY qpt DISPLAY
    pvfld WIDTH 8
    WITH 16 DOWN SEPARATORS MULTIPLE EXPANDABLE.

    DEFINE RECTANGLE rect-frame EDGE-PIXELS 2 GRAPHIC-EDGE NO-FILL SIZE 2 BY .2.  /*GUI*/
    DEFINE BUTTON BtnTplt.
    DEFINE BUTTON BtnLoad.
    DEFINE BUTTON BtnRun.
    DEFINE BUTTON btnclean.
    
    FORM  /*GUI*/
    Rect-Frame AT ROW 1 COLUMN 1.25
    SKIP(.2)
    SPACE(30) frametitle NO-LABEL
    SKIP(.4) 
    SPACE(6) BtnTplt SPACE(2) BtnLoad SPACE(2) effdate SPACE(2) togbx SPACE(6) BtnRun SPACE(2) btnclean
    SKIP(.2) 
    SPACE(6) bpt
    SKIP(.4)
    WITH FRAME a SIDE-LABELS SIZE 80 BY 20 ATTR-SPACE NO-BOX THREE-D  /*GUI*/.

    ON VALUE-CHANGED OF effdate IN FRAME a
    DO:
        ASSIGN effdate = DATE(effdate:SCREEN-VALUE).
    END.
    
    ON VALUE-CHANGED OF togbx IN FRAME a
    DO:
        HIDE MESSAGE NO-PAUSE.
        ASSIGN togbx = LOGICAL(togbx:SCREEN-VALUE).
        IF togbx THEN MESSAGE togbxmsgt.
        ELSE MESSAGE togbxmsgf.
    END.
    
    ON CHOOSE OF BtnLoad IN FRAME a
    DO:
        HIDE MESSAGE NO-PAUSE.
        IF VALID-OBJECT(cimtance) THEN 
        SYSTEM-DIALOG GET-FILE filepath FILTERS "Excel Files (*.xlsx)" "*.xlsx","Excel Files (*.xls)" "*.xls" MUST-EXIST USE-FILENAME.
        
        APPLY "choose" TO btnclean IN FRAME a.
        IF VALID-OBJECT(cimtance) THEN 
        DO:
            cimtance:choset(INPUT effdate,INPUT togbx).
            cimtance:getdata(INPUT filepath,INPUT TEMP-TABLE temppv:HANDLE).  
        END.
        OPEN QUERY qpt FOR EACH temppv NO-LOCK.
        DISPLAY WITH BROWSE bpt NO-ERROR.
    END.
    
    ON CHOOSE OF btnclean IN FRAME a
    DO:
        HIDE MESSAGE NO-PAUSE.    
        IF VALID-OBJECT(cimtance) THEN 
        cimtance:emptytb().  
        EMPTY TEMP-TABLE temppv.
        OPEN QUERY qpt FOR EACH temppv NO-LOCK.
        DISPLAY WITH BROWSE bpt NO-ERROR.    
    END.
    
    ON CHOOSE OF btntplt IN FRAME a
    DO:
        HIDE MESSAGE NO-PAUSE.
        IF VALID-OBJECT(cimtance) THEN 
        DO:
            cimtance:choset(INPUT effdate,INPUT togbx).
            cimtance:putplt().  
        END.
    END.
    
    ON CHOOSE OF Btnrun IN FRAME a
    DO:
        IF NOT CAN-FIND(FIRST temppv) THEN 
        DO:  
            MESSAGE warn1 VIEW-AS ALERT-BOX WARNING.
            RETURN NO-APPLY. 
        END.
        IF VALID-OBJECT(cimtance) THEN
        DO:
            cimtance:choset(INPUT effdate,INPUT togbx).
            cimtance:mainblock().
        END.
        EMPTY TEMP-TABLE temppv.
        OPEN QUERY qpt FOR EACH temppv NO-LOCK.
    END. 

    CONSTRUCTOR PUBLIC cimframe(INPUT cimcs AS Icimode):
        ASSIGN cimtance = cimcs.  /*实例化即传入*/
        IF VALID-OBJECT(cimtance) THEN 
        ASSIGN 
        effdate = cimtance:getdate().  /*取得默认日期*/
    END CONSTRUCTOR.

    METHOD PUBLIC VOID waitset(): 
        /*ASSIGN effdate:LABEL IN FRAME a = '生效日期'
        togbx:LABEL IN FRAME a = '选择'
        BtnTplt:LABEL IN FRAME a = '导入模板'
        BtnLoad:LABEL IN FRAME a = '读取数据'
        BtnRun:LABEL IN FRAME a = '执行'
        btnclean:LABEL IN FRAME a = "清除数据"
        warn1 = "请先导入数据".*/
        ASSIGN effdate:LABEL IN FRAME a = 'Effdate'
        togbx:LABEL IN FRAME a = 'Pick'
        BtnTplt:LABEL IN FRAME a = 'Template'
        BtnLoad:LABEL IN FRAME a = 'Loaddata'
        BtnRun:LABEL IN FRAME a = 'Execute'
        btnclean:LABEL IN FRAME a = "Clear"
        warn1 = "Please load data first".
        ASSIGN bpt:TITLE IN FRAME a = bptitle
        bpt:WIDTH-CHARS IN FRAME a = 70.
        
        bpt:COLUMN-RESIZABLE IN FRAME a = YES.
        /*bpt:COLUMN-MOVABLE IN FRAME a = YES.*/
        bpt:FIT-LAST-COLUMN IN FRAME a = YES.
        
        IF labellist NE SPACES AND formatlist NE SPACES AND visiblelist NE SPACES THEN 
        DO:
            ASSIGN 
            pvfld[1]:LABEL IN BROWSE bpt = ENTRY(1,labellist)
            pvfld[1]:WIDTH-CHARS IN BROWSE bpt = DECIMAL(ENTRY(1,formatlist))
            pvfld[1]:VISIBLE IN BROWSE bpt = LOGICAL(ENTRY(1,visiblelist))
            pvfld[2]:LABEL IN BROWSE bpt = ENTRY(2,labellist)
            pvfld[2]:WIDTH-CHARS IN BROWSE bpt = DECIMAL(ENTRY(2,formatlist))
            pvfld[2]:VISIBLE IN BROWSE bpt = LOGICAL(ENTRY(2,visiblelist))
            pvfld[3]:LABEL IN BROWSE bpt = ENTRY(3,labellist)
            pvfld[3]:WIDTH-CHARS IN BROWSE bpt = DECIMAL(ENTRY(3,formatlist))
            pvfld[3]:VISIBLE IN BROWSE bpt = LOGICAL(ENTRY(3,visiblelist))
            pvfld[4]:LABEL IN BROWSE bpt = ENTRY(4,labellist)
            pvfld[4]:WIDTH-CHARS IN BROWSE bpt = DECIMAL(ENTRY(4,formatlist))
            pvfld[4]:VISIBLE IN BROWSE bpt = LOGICAL(ENTRY(4,visiblelist))
            pvfld[5]:LABEL IN BROWSE bpt = ENTRY(5,labellist)
            pvfld[5]:WIDTH-CHARS IN BROWSE bpt = DECIMAL(ENTRY(5,formatlist))
            pvfld[5]:VISIBLE IN BROWSE bpt = LOGICAL(ENTRY(5,visiblelist))
            pvfld[6]:LABEL IN BROWSE bpt = ENTRY(6,labellist)
            pvfld[6]:WIDTH-CHARS IN BROWSE bpt = DECIMAL(ENTRY(6,formatlist))
            pvfld[6]:VISIBLE IN BROWSE bpt = LOGICAL(ENTRY(6,visiblelist))
            pvfld[7]:LABEL IN BROWSE bpt = ENTRY(7,labellist)
            pvfld[7]:WIDTH-CHARS IN BROWSE bpt = DECIMAL(ENTRY(7,formatlist))
            pvfld[7]:VISIBLE IN BROWSE bpt = LOGICAL(ENTRY(7,visiblelist)).
        END.  /*因为pvfld在bpt里不视为数组*/
        
        effdate:LABEL IN FRAME a = datelab.
        togbx:LABEL IN FRAME a = togbxlab.
        
        Rect-Frame:HEIGHT-PIXELS IN FRAME a = FRAME a:HEIGHT-PIXELS - Rect-Frame:Y IN FRAME a.
        Rect-Frame:WIDTH-CHARS IN FRAME a = FRAME a:WIDTH-CHARS - .5. /*GUI*/   
        DISPLAY togbx frametitle effdate WITH FRAME a.
        APPLY "VALUE-CHANGED" TO togbx IN FRAME a.
        ENABLE ALL IN WINDOW CURRENT-WINDOW WITH FRAME a.
        effdate:VISIBLE IN FRAME a = showdate.
        togbx:VISIBLE IN FRAME a = showtogbx.
        WAIT-FOR WINDOW-CLOSE OF CURRENT-WINDOW FOCUS BtnTplt.
    END METHOD. 

END CLASS.

 显示视图类(View) 用在xxcimgeneral.p里  控制显示的字段 相应的按钮等等 运行截图见UIconfig(xxguicimset.p) 里

posted @ 2020-11-07 16:19  skyofchaos  阅读(271)  评论(0)    收藏  举报