&ANALYZE-SUSPEND _VERSION-NUMBER AB_v10r12 GUI ADM2 &ANALYZE-RESUME /* Connected Databases framework PROGRESS */ &Scoped-define WINDOW-NAME CURRENT-WINDOW {adecomm/appserv.i} /* Temp-Table and Buffer definitions */ DEFINE TEMP-TABLE RowObject NO-UNDO {"d-viewer_ze.i"}. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS vTableWin /*------------------------------------------------------------------------ File: Description: from viewer.w - Template for SmartDataViewer objects Input Parameters: Output Parameters: ------------------------------------------------------------------------*/ /* This .W file was created with the Progress AppBuilder. */ /*----------------------------------------------------------------------*/ /* Create an unnamed pool to store all the widgets created by this procedure. This is a good default which assures that this procedure's triggers and internal procedures will execute in this procedure's storage, and that proper cleanup will occur on deletion of the procedure. */ CREATE WIDGET-POOL. /* *************************** Definitions ************************** */ /* Komma-Trennzeichen */ /* Keyfelder werden beim Mutieren nicht "Enabled" */ &Scoped-define ERSTES_FELD feld &Scoped-define LETZTES_FELD addFieldKeyValues &Scoped-define KEY_FELDER tabelle,feld &Scoped-define NUR_LESEN mandant,benutzer,programm { incl/viwdefinition.i } DEFINE TEMP-TABLE tviewer_ze LIKE viewer_ze. DEFINE VARIABLE htviewer AS HANDLE NO-UNDO. htviewer = TEMP-TABLE tviewer_ze:DEFAULT-BUFFER-HANDLE. {src/adm2/widgetprto.i} /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK /* ******************** Preprocessor Definitions ******************** */ &Scoped-define PROCEDURE-TYPE SmartDataViewer &Scoped-define DB-AWARE no &Scoped-define ADM-CONTAINER FRAME &Scoped-define ADM-SUPPORTED-LINKS Data-Target,Update-Source,TableIO-Target,GroupAssign-Source,GroupAssign-Target /* Include file with RowObject temp-table definition */ &Scoped-define DATA-FIELD-DEFS "d-viewer_ze.i" /* Name of designated FRAME-NAME and/or first browse and/or first query */ &Scoped-define FRAME-NAME F-Main /* Standard List Definitions */ &Scoped-Define ENABLED-FIELDS RowObject.feld RowObject.feldformat ~ RowObject.prior RowObject.numdecimals RowObject.feldtype ~ RowObject.textalign RowObject.lHidden RowObject.lReadonly ~ RowObject.selecttabelle RowObject.selecttexte RowObject.selectwerte ~ RowObject.attributes RowObject.styles RowObject.privatedata ~ RowObject.addFieldTabelle RowObject.addFieldKeyFields ~ RowObject.addFieldKeyValues &Scoped-define ENABLED-TABLES RowObject &Scoped-define FIRST-ENABLED-TABLE RowObject &Scoped-Define ENABLED-OBJECTS T_Fremdfeld CB_Tabellen CB_Felder RECT-1 &Scoped-Define DISPLAYED-FIELDS RowObject.feld RowObject.feldformat ~ RowObject.prior RowObject.tabelle RowObject.numdecimals RowObject.feldtype ~ RowObject.textalign RowObject.benutzer RowObject.lHidden ~ RowObject.lReadonly RowObject.selecttabelle RowObject.program ~ RowObject.mandant RowObject.selecttexte RowObject.selectwerte ~ RowObject.attributes RowObject.styles RowObject.privatedata ~ RowObject.addFieldTabelle RowObject.addFieldKeyFields ~ RowObject.addFieldKeyValues RowObject.addFieldField &Scoped-define DISPLAYED-TABLES RowObject &Scoped-define FIRST-DISPLAYED-TABLE RowObject &Scoped-Define DISPLAYED-OBJECTS T_Fremdfeld CB_Tabellen CB_Felder /* Custom List Definitions */ /* ADM-ASSIGN-FIELDS,List-2,List-3,List-4,List-5,List-6 */ /* _UIB-PREPROCESSOR-BLOCK-END */ &ANALYZE-RESUME /* *********************** Control Definitions ********************** */ /* Definitions of the field level widgets */ DEFINE VARIABLE CB_Felder AS CHARACTER FORMAT "X(256)":U LABEL "Feld" VIEW-AS COMBO-BOX INNER-LINES 5 LIST-ITEMS "Item 1" DROP-DOWN-LIST SIZE 40 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE CB_Tabellen AS CHARACTER FORMAT "X(256)":U LABEL "Tabellen" VIEW-AS COMBO-BOX INNER-LINES 5 LIST-ITEMS "Item 1" DROP-DOWN-LIST SIZE 40 BY 1 BGCOLOR 15 NO-UNDO. DEFINE RECTANGLE RECT-1 EDGE-PIXELS 2 GRAPHIC-EDGE NO-FILL SIZE 136 BY 16.71. DEFINE VARIABLE T_Fremdfeld AS LOGICAL INITIAL no LABEL "Fremdfeld" VIEW-AS TOGGLE-BOX SIZE 40 BY 1 BGCOLOR 15 NO-UNDO. /* ************************ Frame Definitions *********************** */ DEFINE FRAME F-Main RowObject.feld AT ROW 2.52 COL 15 COLON-ALIGNED WIDGET-ID 4 VIEW-AS FILL-IN NATIVE SIZE 22 BY 1 BGCOLOR 15 RowObject.feldformat AT ROW 2.52 COL 53 COLON-ALIGNED WIDGET-ID 16 VIEW-AS FILL-IN NATIVE SIZE 22 BY 1 BGCOLOR 15 RowObject.prior AT ROW 3.52 COL 15 COLON-ALIGNED WIDGET-ID 10 VIEW-AS FILL-IN NATIVE SIZE 8 BY 1 BGCOLOR 15 RowObject.tabelle AT ROW 2 COL 58 COLON-ALIGNED WIDGET-ID 14 VIEW-AS FILL-IN NATIVE SIZE 4 BY 1 BGCOLOR 15 NO-TAB-STOP RowObject.numdecimals AT ROW 3.52 COL 53 COLON-ALIGNED WIDGET-ID 22 VIEW-AS FILL-IN NATIVE SIZE 4.8 BY 1 BGCOLOR 15 RowObject.feldtype AT ROW 4.52 COL 15 COLON-ALIGNED WIDGET-ID 6 VIEW-AS FILL-IN NATIVE SIZE 17.6 BY 1 BGCOLOR 15 RowObject.textalign AT ROW 4.52 COL 53 COLON-ALIGNED WIDGET-ID 50 VIEW-AS COMBO-BOX LIST-ITEMS "left","right","center" DROP-DOWN-LIST SIZE 40 BY 1 BGCOLOR 15 RowObject.benutzer AT ROW 2 COL 58 COLON-ALIGNED WIDGET-ID 2 VIEW-AS FILL-IN NATIVE SIZE 4 BY 1 BGCOLOR 15 NO-TAB-STOP RowObject.lHidden AT ROW 2.52 COL 86 WIDGET-ID 26 LABEL "lHidden" VIEW-AS TOGGLE-BOX SIZE 20 BY 1 BGCOLOR 15 RowObject.lReadonly AT ROW 3.52 COL 86 WIDGET-ID 28 LABEL "lReadonly" VIEW-AS TOGGLE-BOX SIZE 20 BY 1 BGCOLOR 15 RowObject.selecttabelle AT ROW 6 COL 15 COLON-ALIGNED WIDGET-ID 44 VIEW-AS FILL-IN NATIVE SIZE 40 BY 1 BGCOLOR 15 RowObject.program AT ROW 2 COL 58 COLON-ALIGNED WIDGET-ID 12 VIEW-AS FILL-IN NATIVE SIZE 4 BY 1 BGCOLOR 15 NO-TAB-STOP RowObject.mandant AT ROW 2 COL 58 COLON-ALIGNED WIDGET-ID 8 VIEW-AS FILL-IN NATIVE SIZE 4 BY 1 BGCOLOR 15 NO-TAB-STOP RowObject.selecttexte AT ROW 7 COL 15 COLON-ALIGNED WIDGET-ID 46 FORMAT "x(500)" VIEW-AS FILL-IN NATIVE SIZE 100 BY 1 BGCOLOR 15 RowObject.selectwerte AT ROW 8 COL 15 COLON-ALIGNED WIDGET-ID 48 FORMAT "x(500)" VIEW-AS FILL-IN NATIVE SIZE 100 BY 1 BGCOLOR 15 RowObject.attributes AT ROW 9 COL 15 COLON-ALIGNED WIDGET-ID 36 FORMAT "x(500)" VIEW-AS FILL-IN NATIVE SIZE 120 BY 1 BGCOLOR 15 RowObject.styles AT ROW 10 COL 15 COLON-ALIGNED WIDGET-ID 40 FORMAT "x(500)" VIEW-AS FILL-IN NATIVE SIZE 120 BY 1 BGCOLOR 15 RowObject.privatedata AT ROW 11 COL 15 COLON-ALIGNED WIDGET-ID 38 FORMAT "x(500)" VIEW-AS FILL-IN NATIVE SIZE 120 BY 1 BGCOLOR 15 T_Fremdfeld AT ROW 12.52 COL 17 WIDGET-ID 62 CB_Tabellen AT ROW 13.52 COL 15 COLON-ALIGNED WIDGET-ID 64 CB_Felder AT ROW 14.52 COL 15 COLON-ALIGNED WIDGET-ID 66 RowObject.addFieldTabelle AT ROW 13 COL 78 COLON-ALIGNED WIDGET-ID 58 LABEL "Tabelle" VIEW-AS FILL-IN NATIVE SIZE 4 BY 1 BGCOLOR 15 WITH 1 DOWN NO-BOX KEEP-TAB-ORDER OVERLAY USE-DICT-EXPS SIDE-LABELS NO-UNDERLINE THREE-D NO-AUTO-VALIDATE AT COL 1 ROW 1 SCROLLABLE WIDGET-ID 100. /* DEFINE FRAME statement is approaching 4K Bytes. Breaking it up */ DEFINE FRAME F-Main RowObject.addFieldKeyFields AT ROW 15.52 COL 15 COLON-ALIGNED WIDGET-ID 54 LABEL "KeyFields" VIEW-AS FILL-IN NATIVE SIZE 62 BY 1 BGCOLOR 15 RowObject.addFieldKeyValues AT ROW 16.52 COL 15 COLON-ALIGNED WIDGET-ID 56 LABEL "KeyValues" VIEW-AS FILL-IN NATIVE SIZE 62 BY 1 BGCOLOR 15 RowObject.addFieldField AT ROW 13 COL 78 COLON-ALIGNED WIDGET-ID 52 LABEL "Field" VIEW-AS FILL-IN NATIVE SIZE 4 BY 1 BGCOLOR 15 NO-TAB-STOP RECT-1 AT ROW 1.24 COL 2 WIDGET-ID 42 WITH 1 DOWN NO-BOX KEEP-TAB-ORDER OVERLAY USE-DICT-EXPS SIDE-LABELS NO-UNDERLINE THREE-D NO-AUTO-VALIDATE AT COL 1 ROW 1 SCROLLABLE WIDGET-ID 100. /* *********************** Procedure Settings ************************ */ &ANALYZE-SUSPEND _PROCEDURE-SETTINGS /* Settings for THIS-PROCEDURE Type: SmartDataViewer Data Source: "d-viewer_ze.w" Allow: Basic,DB-Fields,Smart Container Links: Data-Target,Update-Source,TableIO-Target,GroupAssign-Source,GroupAssign-Target Frames: 1 Add Fields to: Neither Other Settings: PERSISTENT-ONLY COMPILE APPSERVER Temp-Tables and Buffers: TABLE: RowObject D "?" NO-UNDO ADDITIONAL-FIELDS: {d-viewer_ze.i} END-FIELDS. END-TABLES. */ /* This procedure should always be RUN PERSISTENT. Report the error, */ /* then cleanup and return. */ IF NOT THIS-PROCEDURE:PERSISTENT THEN DO: MESSAGE "{&FILE-NAME} should only be RUN PERSISTENT.":U VIEW-AS ALERT-BOX ERROR BUTTONS OK. RETURN. END. &ANALYZE-RESUME _END-PROCEDURE-SETTINGS /* ************************* Create Window ************************** */ &ANALYZE-SUSPEND _CREATE-WINDOW /* DESIGN Window definition (used by the UIB) CREATE WINDOW vTableWin ASSIGN HEIGHT = 17.76 WIDTH = 138. /* END WINDOW DEFINITION */ */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _INCLUDED-LIB vTableWin /* ************************* Included-Libraries *********************** */ {src/adm2/viewer.i} /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* *********** Runtime Attributes and AppBuilder Settings *********** */ &ANALYZE-SUSPEND _RUN-TIME-ATTRIBUTES /* SETTINGS FOR WINDOW vTableWin VISIBLE,,RUN-PERSISTENT */ /* SETTINGS FOR FRAME F-Main NOT-VISIBLE FRAME-NAME Size-to-Fit Custom */ ASSIGN FRAME F-Main:SCROLLABLE = FALSE FRAME F-Main:HIDDEN = TRUE. /* SETTINGS FOR FILL-IN RowObject.addFieldField IN FRAME F-Main NO-ENABLE EXP-LABEL */ ASSIGN RowObject.addFieldField:HIDDEN IN FRAME F-Main = TRUE. /* SETTINGS FOR FILL-IN RowObject.addFieldKeyFields IN FRAME F-Main EXP-LABEL */ /* SETTINGS FOR FILL-IN RowObject.addFieldKeyValues IN FRAME F-Main EXP-LABEL */ /* SETTINGS FOR FILL-IN RowObject.addFieldTabelle IN FRAME F-Main EXP-LABEL */ ASSIGN RowObject.addFieldTabelle:HIDDEN IN FRAME F-Main = TRUE. /* SETTINGS FOR FILL-IN RowObject.attributes IN FRAME F-Main EXP-FORMAT */ /* SETTINGS FOR FILL-IN RowObject.benutzer IN FRAME F-Main NO-ENABLE */ ASSIGN RowObject.benutzer:HIDDEN IN FRAME F-Main = TRUE RowObject.benutzer:READ-ONLY IN FRAME F-Main = TRUE. /* SETTINGS FOR TOGGLE-BOX RowObject.lHidden IN FRAME F-Main EXP-LABEL */ /* SETTINGS FOR TOGGLE-BOX RowObject.lReadonly IN FRAME F-Main EXP-LABEL */ /* SETTINGS FOR FILL-IN RowObject.mandant IN FRAME F-Main NO-ENABLE */ ASSIGN RowObject.mandant:HIDDEN IN FRAME F-Main = TRUE RowObject.mandant:READ-ONLY IN FRAME F-Main = TRUE. /* SETTINGS FOR FILL-IN RowObject.privatedata IN FRAME F-Main EXP-FORMAT */ /* SETTINGS FOR FILL-IN RowObject.program IN FRAME F-Main NO-ENABLE */ ASSIGN RowObject.program:HIDDEN IN FRAME F-Main = TRUE RowObject.program:READ-ONLY IN FRAME F-Main = TRUE. /* SETTINGS FOR FILL-IN RowObject.selecttexte IN FRAME F-Main EXP-FORMAT */ /* SETTINGS FOR FILL-IN RowObject.selectwerte IN FRAME F-Main EXP-FORMAT */ /* SETTINGS FOR FILL-IN RowObject.styles IN FRAME F-Main EXP-FORMAT */ /* SETTINGS FOR FILL-IN RowObject.tabelle IN FRAME F-Main NO-ENABLE */ ASSIGN RowObject.tabelle:HIDDEN IN FRAME F-Main = TRUE RowObject.tabelle:READ-ONLY IN FRAME F-Main = TRUE. /* _RUN-TIME-ATTRIBUTES-END */ &ANALYZE-RESUME /* Setting information for Queries and Browse Widgets fields */ &ANALYZE-SUSPEND _QUERY-BLOCK FRAME F-Main /* Query rebuild information for FRAME F-Main _Options = "NO-LOCK" _Query is NOT OPENED */ /* FRAME F-Main */ &ANALYZE-RESUME /* ************************ Control Triggers ************************ */ &Scoped-define SELF-NAME F-Main &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL F-Main vTableWin ON ENTRY OF FRAME F-Main DO: /* IF VALID-HANDLE(hKontainer) THEN */ /* RUN SET_TABLEIO IN hKontainer ( 'Viewerzeile' ) NO-ERROR.*/ END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME CB_Felder &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL CB_Felder vTableWin ON LEFT-MOUSE-CLICK OF CB_Felder IN FRAME F-Main /* Feld */ DO: IF VALID-HANDLE(hKontainer) THEN RUN SET_TABLEIO IN hKontainer ( 'Viewerzeile' ) NO-ERROR. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME CB_Tabellen &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL CB_Tabellen vTableWin ON VALUE-CHANGED OF CB_Tabellen IN FRAME F-Main /* Tabellen */ DO: RUN COMBO_FELDER (SELF:SCREEN-VALUE). END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME RowObject.lHidden &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL RowObject.lHidden vTableWin ON VALUE-CHANGED OF RowObject.lHidden IN FRAME F-Main /* lHidden */ DO: IF NOT FMut THEN SELF:SCREEN-VALUE = (IF SELF:SCREEN-VALUE BEGINS 'n' THEN STRING(TRUE) ELSE STRING(FALSE)). END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME RowObject.lReadonly &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL RowObject.lReadonly vTableWin ON VALUE-CHANGED OF RowObject.lReadonly IN FRAME F-Main /* lReadonly */ DO: IF NOT FMut THEN SELF:SCREEN-VALUE = (IF SELF:SCREEN-VALUE BEGINS 'n' THEN STRING(TRUE) ELSE STRING(FALSE)). END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME T_Fremdfeld &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL T_Fremdfeld vTableWin ON VALUE-CHANGED OF T_Fremdfeld IN FRAME F-Main /* Fremdfeld */ DO: DEFINE VARIABLE ii AS INTEGER NO-UNDO. DEFINE VARIABLE cFeld AS CHARACTER NO-UNDO. DEFINE VARIABLE cInhalt AS CHARACTER NO-UNDO. IF SELF:SCREEN-VALUE BEGINS 'n' THEN DO: ASSIGN rowObject.addFieldTabelle:SCREEN-VALUE = '' rowObject.addFieldField:SCREEN-VALUE = '' rowObject.addFieldKeyFields:SCREEN-VALUE = '' rowObject.addFieldKeyValues:SCREEN-VALUE = '' . END. ELSE DO: FIND AnaDat._File WHERE anaDat._File._File-Name = CB_Tabellen:SCREEN-VALUE. FIND FIRST AnaDat._Index WHERE RECID(_Index) = _File._Prime-Index NO-LOCK. rowObject.addFieldKeyField:SCREEN-VALUE = ''. FOR EACH AnaDat._Index-Field WHERE _Index-Field._Index-Recid = RECID(_Index): FIND AnaDat._Field WHERE RECID(_Field) = _Index-Field._Field-Recid. rowObject.addFieldKeyFields:SCREEN-VALUE = rowObject.addFieldKeyFields:SCREEN-VALUE + (IF rowObject.addFieldKeyFields:SCREEN-VALUE = '' THEN '' ELSE ';') + _Field._Field-Name. END. cInhalt = rowObject.addFieldKeyFields:SCREEN-VALUE. DO ii = 1 TO NUM-ENTRIES(cInhalt, ';'): cFeld = ENTRY(ii, cInhalt, ';'). CASE cFeld: WHEN 'Firma' THEN DO: rowObject.addFieldKeyValue:SCREEN-VALUE = rowObject.addFieldKeyValues:SCREEN-VALUE + (IF rowObject.addFieldKeyValues:SCREEN-VALUE = '' THEN '' ELSE ';') + '@mandant'. END. WHEN 'mandant' THEN DO: rowObject.addFieldKeyValues:SCREEN-VALUE = rowObject.addFieldKeyValues:SCREEN-VALUE + (IF rowObject.addFieldKeyValues:SCREEN-VALUE = '' THEN '' ELSE ';') + '@mandant'. END. WHEN 'sprcd' THEN DO: rowObject.addFieldKeyValues:SCREEN-VALUE = rowObject.addFieldKeyValues:SCREEN-VALUE + (IF rowObject.addFieldKeyValues:SCREEN-VALUE = '' THEN '' ELSE ';') + '@sprcd'. END. OTHERWISE DO: rowObject.addFieldKeyValues:SCREEN-VALUE = rowObject.addFieldKeyValues:SCREEN-VALUE + (IF rowObject.addFieldKeyValues:SCREEN-VALUE = '' THEN '' ELSE ';'). END. END CASE. END. END. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &UNDEFINE SELF-NAME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK vTableWin /* *************************** Main Block *************************** */ { incl/viwmainblock.i } &IF DEFINED(UIB_IS_RUNNING) <> 0 &THEN RUN initializeObject. &ENDIF /************************ INTERNAL PROCEDURES ********************/ /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* ********************** Internal Procedures *********************** */ &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE addRecord vTableWin PROCEDURE addRecord : /*------------------------------------------------------------------------------*/ /* Purpose: Super Override */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ FNeu = TRUE. FMut = TRUE. FDisp = TRUE. RUN SUPER. /* Code placed here will execute AFTER standard behavior. */ END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ADD_FIELD vTableWin PROCEDURE ADD_FIELD : /*------------------------------------------------------------------------------*/ /* Purpose: Super Override */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ DEFINE INPUT PARAMETER ipcFeld AS CHARACTER NO-UNDO. DEFINE VARIABLE cBenutzer AS CHARACTER NO-UNDO. DEFINE VARIABLE cTabelle AS CHARACTER NO-UNDO. DEFINE VARIABLE cFirma AS CHARACTER NO-UNDO. DEFINE VARIABLE cProgramm AS CHARACTER NO-UNDO. DO WITH FRAME {&FRAME-NAME}: cFirma = rowObject.Mandant :SCREEN-VALUE. cBenutzer = rowObject.Benutzer:SCREEN-VALUE. cTabelle = rowObject.Tabelle :SCREEN-VALUE. cProgramm = rowObject.program :SCREEN-VALUE. END. FIND AnaDat._File NO-LOCK WHERE AnaDat._File._File-Name = cTabelle. FIND AnaDat._Field NO-LOCK OF AnaDat._File WHERE AnaDat._Field._Field-name = ipcFeld NO-ERROR. IF NOT AVAILABLE _Field THEN RETURN 'NOK'. EMPTY TEMP-TABLE tviewer_ze. CREATE tviewer_ze. ASSIGN tviewer_ze.mandant = cFirma tviewer_ze.benutzer = cBenutzer tviewer_ze.program = cProgramm tviewer_ze.tabelle = cTabelle tviewer_ze.feld = ipcFeld. RUN ADD_VIEWER_FIELD ( INPUT-OUTPUT htviewer ). REPEAT TRANSACTION ON ERROR UNDO, LEAVE: FIND FIRST tviewer_ze. ASSIGN rowObject.feldformat:SCREEN-VALUE = tviewer_ze.feldformat rowObject.feldtype:SCREEN-VALUE = tviewer_ze.feldtype rowObject.numdecimals:SCREEN-VALUE = STRING(tviewer_ze.numdecimals) rowObject.prior:SCREEN-VALUE = STRING(tviewer_ze.prior) rowObject.privatedata:SCREEN-VALUE = tviewer_ze.privatedata rowObject.selecttabelle:SCREEN-VALUE = tviewer_ze.selecttabelle rowObject.selecttexte:SCREEN-VALUE = tviewer_ze.selecttexte rowObject.selectwerte:SCREEN-VALUE = tviewer_ze.selectwerte rowObject.styles:SCREEN-VALUE = tviewer_ze.styles rowObject.textalign:SCREEN-VALUE = tviewer_ze.textalign rowObject.attributes:SCREEN-VALUE = tviewer_ze.attributes . LEAVE. END. RETURN 'OK'. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE cancelRecord vTableWin PROCEDURE cancelRecord : /*------------------------------------------------------------------------------ Purpose: Super Override Parameters: Notes: ------------------------------------------------------------------------------*/ FCancel = TRUE. RUN SUPER. /* Code placed here will execute AFTER standard behavior. */ END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE COMBO_FELDER vTableWin PROCEDURE COMBO_FELDER : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEFINE INPUT PARAMETER ipcTabelle AS CHARACTER NO-UNDO. DEFINE VARIABLE cString AS CHARACTER NO-UNDO. DO WITH FRAME {&FRAME-NAME}: FIND AnaDat._File NO-LOCK WHERE AnaDat._File._File-Name = ipcTabelle. cString = ''. FOR EACH AnaDat._Field OF AnaDat._File BY _Field._Order: cString = cString + (IF cString = '' THEN '' ELSE ';') + _Field._Field-Name. END. CB_Felder:DELIMITER = ';'. CB_Felder:LIST-ITEMS = cString. CB_Felder:SCREEN-VALUE = ENTRY(1, cString, ';') NO-ERROR. END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE copyRecord vTableWin PROCEDURE copyRecord : /*------------------------------------------------------------------------------*/ /* Purpose: Super Override */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ FNeu = TRUE. FMut = TRUE. FCopy = TRUE. FDisp = TRUE. RUN SUPER. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE deleteRecord vTableWin PROCEDURE deleteRecord : /*------------------------------------------------------------------------------ Purpose: Super Override Parameters: Notes: ------------------------------------------------------------------------------*/ DEF VAR Ja AS LOG NO-UNDO. Ja = DYNAMIC-FUNCTION( 'ANTWORT_NEIN':U, INPUT 1000 ). IF NOT Ja THEN DO: RUN TOOLBAR IN hKontainer ( INPUT 'CANCEL':U ) NO-ERROR. RETURN NO-APPLY. END. /* REPEAT TRANSACTION: */ /* RUN INAKTIVIEREN IN hDaten. */ /* LEAVE. */ /* END. */ /* */ RUN SUPER. /* Code placed here will execute AFTER standard behavior. */ END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE disableFields vTableWin PROCEDURE disableFields : /*------------------------------------------------------------------------------ Purpose: Super Override Parameters: Notes: ------------------------------------------------------------------------------*/ DEFINE INPUT PARAMETER pcFieldType AS CHARACTER NO-UNDO. DO WITH FRAME {&FRAME-NAME}: END. RUN SUPER( INPUT pcFieldType). IF NOT VALID-HANDLE(Fenster) THEN Fenster = FRAME {&FRAME-NAME}:CURRENT-ITERATION. RUN READONLY_FELDER ( INPUT Fenster, INPUT '{&ENABLED-FIELDS}', INPUT TRUE ). IF NUM-ENTRIES('{&KEY_FELDER}', ',') > 0 THEN DO: RUN FARBE_FELDER ( INPUT Fenster, INPUT '{&KEY_FELDER}', INPUT 15 ). END. DO WITH FRAME {&FRAME-NAME}: END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE disable_UI vTableWin _DEFAULT-DISABLE PROCEDURE disable_UI : /*------------------------------------------------------------------------------ Purpose: DISABLE the User Interface Parameters: Notes: Here we clean-up the user-interface by deleting dynamic widgets we have created and/or hide frames. This procedure is usually called when we are ready to "clean-up" after running. ------------------------------------------------------------------------------*/ /* Hide all frames. */ HIDE FRAME F-Main. IF THIS-PROCEDURE:PERSISTENT THEN DELETE PROCEDURE THIS-PROCEDURE. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE displayFields vTableWin PROCEDURE displayFields : /*------------------------------------------------------------------------------ Purpose: Super Override Parameters: Notes: ------------------------------------------------------------------------------*/ DEFINE INPUT PARAMETER pcColValues AS CHARACTER NO-UNDO. IF NOT FDisp THEN DO: FDisp = TRUE. RETURN. END. IF FCancel THEN pcColValues = OldColValues. IF NOT FNeu THEN OldColValues = pcColValues. OldColList = DYNAMIC-FUNCTION('getDisplayedFields':U). IF FNeu THEN RUN FEHLWERTE ( INPUT-OUTPUT pcColValues ). DO WITH FRAME {&FRAME-NAME}: END. RUN SUPER( INPUT pcColValues). FCancel = FALSE. DO WITH FRAME {&FRAME-NAME}: IF rowObject.addFieldTabelle:SCREEN-VALUE <> '' THEN DO: T_Fremdfeld:SCREEN-VALUE = STRING(TRUE). CB_Tabellen:SCREEN-VALUE = rowObject.addFieldTabelle:SCREEN-VALUE. END. ELSE T_Fremdfeld:SCREEN-VALUE = STRING(FALSE). APPLY 'ENTRY' TO rowObject.Feld. END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE enableFields vTableWin PROCEDURE enableFields : /*------------------------------------------------------------------------------ Purpose: Super Override Parameters: Notes: ------------------------------------------------------------------------------*/ /* Code placed here will execute PRIOR to standard behavior. */ /* RUN SUPER. */ IF NOT VALID-HANDLE(Fenster) THEN Fenster = FRAME {&FRAME-NAME}:CURRENT-ITERATION. RUN READONLY_FELDER ( INPUT Fenster, INPUT '{&ENABLED-FIELDS}', INPUT FALSE ). IF NUM-ENTRIES('{&NUR_LESEN}', ',') > 0 THEN DO: RUN READONLY_FELDER ( INPUT Fenster, INPUT '{&NUR_LESEN}', INPUT TRUE ). END. DO WITH FRAME {&FRAME-NAME}: END. IF FNeu THEN RETURN. IF NUM-ENTRIES('{&KEY_FELDER}', ',') > 0 THEN DO: RUN SCHUETZE_FELDER ( INPUT Fenster, INPUT '{&KEY_FELDER}', INPUT TRUE ). END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE enableObject vTableWin PROCEDURE enableObject : /*------------------------------------------------------------------------------ Purpose: Super Override Parameters: Notes: ------------------------------------------------------------------------------*/ DEFINE VARIABLE cString AS CHARACTER NO-UNDO. DO WITH FRAME {&FRAME-NAME}: FOR EACH AnaDat._File NO-LOCK WHERE NOT _File._File-Name BEGINS 'SYS' AND NOT _File._File-Name BEGINS '_': cString = cString + (IF cString = '' THEN '' ELSE ';') + _File._File-Name. END. CB_Tabellen:DELIMITER = ';'. CB_Tabellen:LIST-ITEMS = cString. CB_Tabellen:SCREEN-VALUE = ENTRY(1, cString, ';') NO-ERROR. RUN COMBO_FELDER ( CB_Tabellen:SCREEN-VALUE). END. RUN SUPER. { incl/viwenableobject.i } END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ENTRY_FELD_TEST vTableWin PROCEDURE ENTRY_FELD_TEST : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ { incl/viwentryfeldtest.i } DO WITH FRAME {&FRAME-NAME}: CASE FeldName: END CASE. END. RETURN ''. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE FEHLWERTE vTableWin PROCEDURE FEHLWERTE : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEF INPUT-OUTPUT PARAMETER pcColValues AS CHAR NO-UNDO. DEF VAR i1 AS INT NO-UNDO. IF FCancel THEN RETURN. IF NOT FCopy THEN DO WITH FRAME {&FRAME-NAME}: /* i1 = LOOKUP('Feld', oldColList, ',') + 1. */ /* ENTRY(i1, pcColValues, CHR(1)) = 'Fehlwert' NO-ERROR. */ END. IF FCopy THEN DO: END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE initializeObject vTableWin PROCEDURE initializeObject : /*------------------------------------------------------------------------------ Purpose: Notes: ------------------------------------------------------------------------------*/ /* Code placed here will execute PRIOR to standard behavior. */ RUN SUPER. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE LEAVE_FELD_TEST vTableWin PROCEDURE LEAVE_FELD_TEST : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ { incl/viwleavefeldtest.i } DO WHILE FNeu WITH FRAME {&FRAME-NAME}: CASE FeldName: WHEN 'feld' THEN DO: RUN ADD_FIELD ( SELF:SCREEN-VALUE ) NO-ERROR. IF RETURN-VALUE = '' THEN RETURN 'APPLY'. IF SELF:SCREEN-VALUE BEGINS 'Dummy' THEN DO: ASSIGN rowObject.attributes:SCREEN-VALUE = 'id="Dummy_2" name="Dummy_2" type="hidden" maxlength="30" readonly="true"' rowObject.feldformat:SCREEN-VALUE = 'x(10)' rowObject.lHidden :SCREEN-VALUE = STRING(TRUE) rowObject.lReadonly :SCREEN-VALUE = STRING(TRUE) rowObject.textalign :SCREEN-VALUE = 'left' rowObject.feldtype :SCREEN-VALUE = 'character' . END. ELSE DO: ASSIGN rowObject.attributes:SCREEN-VALUE = SUBSTITUTE('id="&1" name="&1" type="text" maxlength="30px" readonly="true"', SELF:SCREEN-VALUE) rowObject.feldformat:SCREEN-VALUE = 'x(30)' rowObject.lHidden :SCREEN-VALUE = STRING(FALSE) rowObject.lReadonly :SCREEN-VALUE = STRING(TRUE) rowObject.textalign :SCREEN-VALUE = 'left' rowObject.feldtype :SCREEN-VALUE = 'character' rowObject.styles :SCREEN-VALUE = 'width: 90%' . END. END. END CASE. LEAVE. END. DO WHILE TRUE WITH FRAME {&FRAME-NAME}: CASE FeldName: END CASE. LEAVE. END. IF LOOKUP(FeldName, '{&LETZTES_FELD}', ',') > 0 THEN DO: DO WHILE TRUE: IF KEYFUNCTION(LKY) = 'TAB' THEN LEAVE. IF KEYFUNCTION(LKY) = 'RETURN' THEN LEAVE. IF KEYFUNCTION(LKY) = 'F9' THEN LEAVE. RETURN ''. END. APPLY 'ALT-S'. RETURN 'APPLY'. END. RETURN ''. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE RETURN_FELD vTableWin PROCEDURE RETURN_FELD : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ { incl/viwreturnfeld.i } END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE TEST_EINGABEN vTableWin PROCEDURE TEST_EINGABEN : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEF OUTPUT PARAMETER opJa AS LOG NO-UNDO. DEF VAR eHandle AS HANDLE NO-UNDO. DEF VAR cString AS CHAR NO-UNDO. DEF VAR iNummer AS INT NO-UNDO. opJa = FALSE. eHandle = ?. IF NOT FMut THEN RETURN. AAA000: DO WHILE TRUE WITH FRAME {&FRAME-NAME}: LEAVE. END. IF VALID-HANDLE(eHandle) THEN DO: APPLY 'ENTRY' TO eHandle. RETURN NO-APPLY. END. opJa = TRUE. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE updateMode vTableWin PROCEDURE updateMode : /*------------------------------------------------------------------------------*/ /* Purpose: Super Override */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ DEFINE INPUT PARAMETER pcMode AS CHARACTER NO-UNDO. CASE pcMode: WHEN 'updateBegin' THEN DO: END. WHEN 'updateEnd' THEN DO: END. END. RUN SUPER( INPUT pcMode). CASE pcMode: WHEN 'updateBegin' THEN DO: FMut = TRUE. END. WHEN 'updateEnd' THEN DO: FNeu = FALSE. FMut = FALSE. FCopy = FALSE. END. END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE updateRecord vTableWin PROCEDURE updateRecord : /*------------------------------------------------------------------------------ Purpose: Super Override Parameters: Notes: ------------------------------------------------------------------------------*/ DO WITH FRAME {&FRAME-NAME}: IF T_FremdFeld:SCREEN-VALUE BEGINS 'n' THEN DO: ASSIGN rowObject.addFieldTabelle:SCREEN-VALUE = '' rowObject.addFieldField:SCREEN-VALUE = '' rowObject.addFieldKeyFields:SCREEN-VALUE = '' rowObject.addFieldKeyValues:SCREEN-VALUE = '' . END. ELSE DO: ASSIGN rowObject.addFieldTabelle:SCREEN-VALUE = CB_Tabellen:SCREEN-VALUE rowObject.addFieldField:SCREEN-VALUE = CB_Felder:SCREEN-VALUE . END. IF FNeu THEN DO: DYNAMIC-FUNCTION('SETMODIFIEDFLAG':U, INPUT Fenster, INPUT TRUE). END. END. FNeu = FALSE. FCopy = FALSE. RUN SUPER. DO WITH FRAME {&FRAME-NAME}: PUBLISH 'ANZEIGE_FELDER' ( rowObject.benutzer:SCREEN-VALUE, rowObject.program:SCREEN-VALUE, rowObject.tabelle:SCREEN-VALUE ). END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME