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) 里