Boa tarde Estou tentando usar o zoom da tabela "modul_dtsul" (Tabela de módulos) e não estou conseguindo. Minha primeira suspeita é que o nome da variável global que retorna o recid (v_rec_modul_dtsul) esteja errado. Quando executo o programa, o zoom é exibido e eu escolho um registro. Porem a variável global v_rec_modul_dtsul está retornando ? e não o recid do registro. Abaixo um fragmento do código usado: Código: def new global shared var v_rec_modul_dtsul as recid no-undo. /*--- Inicio ---*/ run fnd/fnzoom/z02fn116.p. if v_rec_modul_dtsul <> ? then do: MESSAGE "*** FALHOU ***" VIEW-AS ALERT-BOX INFO BUTTONS OK. find modul_dtsul where recid(modul_dtsul) = v_rec_modul_dtsul no-lock no-error. if avail modul_dtsul then do: MESSAGE modul_dtsul.cod_modul_dtsul VIEW-AS ALERT-BOX INFO BUTTONS OK. end. end. else do: MESSAGE "*** FALHOU ***" VIEW-AS ALERT-BOX INFO BUTTONS OK. end. /*--- Fim ---*/ Sds
Boa noite, pelo codigo esse zoom é no padrão do ddkgui/ems2 e não o padrão do ems5 como vc está querendo usar. tenta usar a include zoomvar.i que vai dar certo. Código: &ANALYZE-SUSPEND _VERSION-NUMBER UIB_v8r12 GUI ADM1 &ANALYZE-RESUME /* Connected Databases */ &Scoped-define WINDOW-NAME w-pesquisa &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS w-pesquisa {include/i-prgvrs.i Z02FN116 1.00.00.000} /* 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 ************************** */ /* Parameters Definitions --- */ /* Local Variable Definitions --- */ def var v-row-table as rowid no-undo. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK /* ******************** Preprocessor Definitions ******************** */ &Scoped-define PROCEDURE-TYPE SmartWindow &Scoped-define DB-AWARE no &Scoped-define ADM-CONTAINER WINDOW /* Name of designated FRAME-NAME and/or first browse and/or first query */ &Scoped-define FRAME-NAME f-zoom /* Standard List Definitions */ &Scoped-Define ENABLED-OBJECTS rt-button bt-implantar bt-ok bt-cancela ~ bt-ajuda /* Custom List Definitions */ /* List-1,List-2,List-3,List-4,List-5,List-6 */ /* _UIB-PREPROCESSOR-BLOCK-END */ &ANALYZE-RESUME /* *********************** Control Definitions ********************** */ /* Define the widget handle for the window */ DEFINE VAR w-pesquisa AS WIDGET-HANDLE NO-UNDO. /* Menu Definitions */ DEFINE MENU POPUP-MENU-bt-ajuda MENU-ITEM mi-sobre LABEL "Sobre..." . /* Definitions of handles for SmartObjects */ DEFINE VARIABLE h_b01fn116 AS HANDLE NO-UNDO. DEFINE VARIABLE h_b02fn116 AS HANDLE NO-UNDO. DEFINE VARIABLE h_folder AS HANDLE NO-UNDO. /* Definitions of the field level widgets */ DEFINE BUTTON bt-ajuda LABEL "&Ajuda" SIZE 10 BY 1 BGCOLOR 8 . DEFINE BUTTON bt-cancela AUTO-END-KEY LABEL "&Cancelar" SIZE 10 BY 1 BGCOLOR 8 . DEFINE BUTTON bt-implantar LABEL "Implantar" SIZE 15 BY 1 BGCOLOR 8 . DEFINE BUTTON bt-ok AUTO-GO LABEL "&OK" SIZE 10 BY 1 BGCOLOR 8 . DEFINE RECTANGLE rt-button EDGE-PIXELS 2 GRAPHIC-EDGE SIZE 88 BY 1.42 BGCOLOR 7 . /* ************************ Frame Definitions *********************** */ DEFINE FRAME f-zoom bt-implantar AT ROW 14.83 COL 1.57 bt-ok AT ROW 16.54 COL 3 bt-cancela AT ROW 16.54 COL 14 bt-ajuda AT ROW 16.54 COL 79 rt-button AT ROW 16.29 COL 2 WITH 1 DOWN NO-BOX KEEP-TAB-ORDER OVERLAY SIDE-LABELS NO-UNDERLINE THREE-D AT COL 1 ROW 1 SIZE 90 BY 17 DEFAULT-BUTTON bt-ok CANCEL-BUTTON bt-cancela WIDGET-ID 100. /* *********************** Procedure Settings ************************ */ &ANALYZE-SUSPEND _PROCEDURE-SETTINGS /* Settings for THIS-PROCEDURE Type: SmartWindow Allow: Basic,Browse,DB-Fields,Query,Smart,Window Design Page: 1 Other Settings: COMPILE */ &ANALYZE-RESUME _END-PROCEDURE-SETTINGS /* ************************* Create Window ************************** */ &ANALYZE-SUSPEND _CREATE-WINDOW IF SESSION:DISPLAY-TYPE = "GUI":U THEN CREATE WINDOW w-pesquisa ASSIGN HIDDEN = YES TITLE = "Pesquisa de M¢dulo" HEIGHT = 17 WIDTH = 90 MAX-HEIGHT = 17 MAX-WIDTH = 90 VIRTUAL-HEIGHT = 17 VIRTUAL-WIDTH = 90 RESIZE = no SCROLL-BARS = no STATUS-AREA = yes BGCOLOR = ? FGCOLOR = ? THREE-D = yes MESSAGE-AREA = no SENSITIVE = yes. ELSE {&WINDOW-NAME} = CURRENT-WINDOW. /* END WINDOW DEFINITION */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _INCLUDED-LIB w-pesquisa /* ************************* Included-Libraries *********************** */ {src/adm/method/containr.i} {include/w-pesqui.i} {utp/ut-glob.i} /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* *********** Runtime Attributes and AppBuilder Settings *********** */ &ANALYZE-SUSPEND _RUN-TIME-ATTRIBUTES /* SETTINGS FOR WINDOW w-pesquisa VISIBLE,,RUN-PERSISTENT */ /* SETTINGS FOR FRAME f-zoom FRAME-NAME L-To-R */ ASSIGN bt-ajuda:POPUP-MENU IN FRAME f-zoom = MENU POPUP-MENU-bt-ajuda:HANDLE. IF SESSION:DISPLAY-TYPE = "GUI":U AND VALID-HANDLE(w-pesquisa) THEN w-pesquisa:HIDDEN = yes. /* _RUN-TIME-ATTRIBUTES-END */ &ANALYZE-RESUME /* ************************ Control Triggers ************************ */ &Scoped-define SELF-NAME w-pesquisa &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL w-pesquisa w-pesquisa ON END-ERROR OF w-pesquisa /* Pesquisa de M¢dulo */ OR ENDKEY OF {&WINDOW-NAME} ANYWHERE DO: /* This case occurs when the user presses the "Esc" key. In a persistently run window, just ignore this. If we did not, the application would exit. */ RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL w-pesquisa w-pesquisa ON WINDOW-CLOSE OF w-pesquisa /* Pesquisa de M¢dulo */ DO: /* This ADM code must be left here in order for the SmartWindow and its descendents to terminate properly on exit. */ APPLY "CLOSE":U TO THIS-PROCEDURE. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME f-zoom &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL f-zoom w-pesquisa ON GO OF FRAME f-zoom DO: run pi-go. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME bt-ajuda &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL bt-ajuda w-pesquisa ON CHOOSE OF bt-ajuda IN FRAME f-zoom /* Ajuda */ OR HELP OF FRAME {&FRAME-NAME} DO: {include/ajuda.i} END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME bt-cancela &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL bt-cancela w-pesquisa ON CHOOSE OF bt-cancela IN FRAME f-zoom /* Cancelar */ DO: RUN dispatch IN THIS-PROCEDURE ('exit':U). END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME bt-implantar &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL bt-implantar w-pesquisa ON CHOOSE OF bt-implantar IN FRAME f-zoom /* Implantar */ DO: /* {include/i-implan.i <programa de implanta‡Æo> <handle do browse1 de zoom> <handle do browse2 de zoom>} Devem ser passados os handles de todos os browsers do programa */ END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME mi-sobre &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL mi-sobre w-pesquisa ON CHOOSE OF MENU-ITEM mi-sobre /* Sobre... */ DO: {include/sobre.i} END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &UNDEFINE SELF-NAME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK w-pesquisa assign {&window-name}:title = {&window-name}:title + " - Z02FN116 - 1.00.00.001":U. /* *************************** Main Block *************************** */ /* Include custom Main Block code for SmartWindows. */ {src/adm/template/windowmn.i} /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* ********************** Internal Procedures *********************** */ &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE adm-create-objects w-pesquisa _ADM-CREATE-OBJECTS PROCEDURE adm-create-objects : /*------------------------------------------------------------------------------ Purpose: Create handles for all SmartObjects used in this procedure. After SmartObjects are initialized, then SmartLinks are added. Parameters: <none> ------------------------------------------------------------------------------*/ DEFINE VARIABLE adm-current-page AS INTEGER NO-UNDO. RUN get-attribute IN THIS-PROCEDURE ('Current-Page':U). ASSIGN adm-current-page = INTEGER(RETURN-VALUE). CASE adm-current-page: WHEN 0 THEN DO: RUN init-object IN THIS-PROCEDURE ( INPUT 'adm/objects/folder.w':U , INPUT FRAME f-zoom:HANDLE , INPUT 'FOLDER-LABELS = ':U + 'M¢dulo|Descri‡Æo' + ', FOLDER-TAB-TYPE = 1':U , OUTPUT h_folder ). RUN set-position IN h_folder ( 1.17 , 1.57 ) NO-ERROR. RUN set-size IN h_folder ( 13.67 , 88.57 ) NO-ERROR. /* Links to SmartFolder h_folder. */ RUN add-link IN adm-broker-hdl ( h_folder , 'Page':U , THIS-PROCEDURE ). /* Adjust the tab order of the smart objects. */ RUN adjust-tab-order IN adm-broker-hdl ( h_folder , bt-implantar:HANDLE IN FRAME f-zoom , 'BEFORE':U ). END. /* Page 0 */ WHEN 1 THEN DO: RUN init-object IN THIS-PROCEDURE ( INPUT 'fnbrw/b01fn116.w':U , INPUT FRAME f-zoom:HANDLE , INPUT 'Layout = ':U , OUTPUT h_b01fn116 ). RUN set-position IN h_b01fn116 ( 3.50 , 6.00 ) NO-ERROR. /* Size in UIB: ( 10.17 , 80.14 ) */ /* Links to SmartBrowser h_b01fn116. */ RUN add-link IN adm-broker-hdl ( h_b01fn116 , 'State':U , THIS-PROCEDURE ). /* Adjust the tab order of the smart objects. */ RUN adjust-tab-order IN adm-broker-hdl ( h_b01fn116 , h_folder , 'AFTER':U ). END. /* Page 1 */ WHEN 2 THEN DO: RUN init-object IN THIS-PROCEDURE ( INPUT 'fnbrw/b02fn116.w':U , INPUT FRAME f-zoom:HANDLE , INPUT 'Layout = ':U , OUTPUT h_b02fn116 ). RUN set-position IN h_b02fn116 ( 3.50 , 6.00 ) NO-ERROR. /* Size in UIB: ( 10.17 , 80.14 ) */ /* Links to SmartBrowser h_b02fn116. */ RUN add-link IN adm-broker-hdl ( h_b02fn116 , 'State':U , THIS-PROCEDURE ). /* Adjust the tab order of the smart objects. */ RUN adjust-tab-order IN adm-broker-hdl ( h_b02fn116 , h_folder , 'AFTER':U ). END. /* Page 2 */ END CASE. /* Select a Startup page. */ IF adm-current-page eq 0 THEN RUN select-page IN THIS-PROCEDURE ( 1 ). END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE adm-row-available w-pesquisa _ADM-ROW-AVAILABLE PROCEDURE adm-row-available : /*------------------------------------------------------------------------------ Purpose: Dispatched to this procedure when the Record- Source has a new row available. This procedure tries to get the new row (or foriegn keys) from the Record-Source and process it. Parameters: <none> ------------------------------------------------------------------------------*/ /* Define variables needed by this internal procedure. */ {src/adm/template/row-head.i} /* Process the newly available records (i.e. display fields, open queries, and/or pass records on to any RECORD-TARGETS). */ {src/adm/template/row-end.i} END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE disable_UI w-pesquisa _DEFAULT-DISABLE PROCEDURE disable_UI : /*------------------------------------------------------------------------------ Purpose: DISABLE the User Interface Parameters: <none> 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. ------------------------------------------------------------------------------*/ /* Delete the WINDOW we created */ IF SESSION:DISPLAY-TYPE = "GUI":U AND VALID-HANDLE(w-pesquisa) THEN DELETE WIDGET w-pesquisa. IF THIS-PROCEDURE:PERSISTENT THEN DELETE PROCEDURE THIS-PROCEDURE. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE enable_UI w-pesquisa _DEFAULT-ENABLE PROCEDURE enable_UI : /*------------------------------------------------------------------------------ Purpose: ENABLE the User Interface Parameters: <none> Notes: Here we display/view/enable the widgets in the user-interface. In addition, OPEN all queries associated with each FRAME and BROWSE. These statements here are based on the "Other Settings" section of the widget Property Sheets. ------------------------------------------------------------------------------*/ ENABLE rt-button bt-implantar bt-ok bt-cancela bt-ajuda WITH FRAME f-zoom IN WINDOW w-pesquisa. {&OPEN-BROWSERS-IN-QUERY-f-zoom} VIEW w-pesquisa. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE local-destroy w-pesquisa PROCEDURE local-destroy : /*------------------------------------------------------------------------------ Purpose: Override standard ADM method Notes: ------------------------------------------------------------------------------*/ /* Code placed here will execute PRIOR to standard behavior. */ /* Dispatch standard ADM method. */ RUN dispatch IN THIS-PROCEDURE ( INPUT 'destroy':U ) . {include/i-logfin.i} /* Code placed here will execute AFTER standard behavior. */ END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE local-exit w-pesquisa PROCEDURE local-exit : /* ----------------------------------------------------------- Purpose: Starts an "exit" by APPLYing CLOSE event, which starts "destroy". Parameters: <none> Notes: If activated, should APPLY CLOSE, *not* dispatch adm-exit. -------------------------------------------------------------*/ APPLY "CLOSE":U TO THIS-PROCEDURE. RETURN. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE local-initialize w-pesquisa PROCEDURE local-initialize : /*------------------------------------------------------------------------------ Purpose: Override standard ADM method Notes: ------------------------------------------------------------------------------*/ /* Code placed here will execute PRIOR to standard behavior. */ {include/win-size.i} {utp/ut9000.i "Z02FN116" "1.00.00.000"} /* Dispatch standard ADM method. */ RUN dispatch IN THIS-PROCEDURE ( INPUT 'initialize':U ) . /* Code placed here will execute AFTER standard behavior. */ assign bt-implantar:sensitive in frame {&frame-name} = l-implanta l-implanta = no. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE send-records w-pesquisa _ADM-SEND-RECORDS PROCEDURE send-records : /*------------------------------------------------------------------------------ Purpose: Send record ROWID's for all tables used by this file. Parameters: see template/snd-head.i ------------------------------------------------------------------------------*/ /* SEND-RECORDS does nothing because there are no External Tables specified for this SmartWindow, and there are no tables specified in any contained Browse, Query, or Frame. */ END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE state-changed w-pesquisa PROCEDURE state-changed : /* ----------------------------------------------------------- Purpose: Parameters: <none> Notes: -------------------------------------------------------------*/ DEFINE INPUT PARAMETER p-issuer-hdl AS HANDLE NO-UNDO. DEFINE INPUT PARAMETER p-state AS CHARACTER NO-UNDO. case entry(1, p-state, "|"): when 'New-Line':U then do: if num-entries(p-state, "|":U) > 1 then assign v-row-table = to-rowid(entry(2, p-state, "|":U)). else assign v-row-table = ?. end. end. run pi-trata-state (p-issuer-hdl, p-state). END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME
Bom dia Richard Muito obrigado pelo apoio. Funcionou perfeitamente. Eu me iludi com o fato do zoom estar ligado ao banco "foundation" que eu associo ao TOTVS11. Dai achei que ele seguia o modelo do EMS5, que e mais recente. Sds