&ANALYZE-SUSPEND _VERSION-NUMBER UIB_v8r12 GUI &ANALYZE-RESUME &Scoped-define WINDOW-NAME C-Win &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS C-Win /*------------------------------------------------------------------------ File: wS&R-ShowFile.w Description: Editor para mostrar archivos Input Parameters: Output Parameters: Author: Rubizel Damian Correa Created: ------------------------------------------------------------------------*/ CREATE WIDGET-POOL. /* *************************** Definitions ************************** */ /* Parameters Definitions --- */ &IF DEFINED(UIB_is_Running) NE 0 &THEN DEF VAR pe-archivo AS CHARACTER INIT "" NO-UNDO. DEF VAR pe-texto AS CHARACTER INIT "Texto de busqueda" NO-UNDO. &ELSE DEF INPUT PARAMETER pe-archivo AS CHARACTER NO-UNDO. DEF INPUT PARAMETER pe-texto AS CHARACTER NO-UNDO. &ENDIF /* Local Variable Definitions --- */ DEF VAR pe-desc-reporte AS CHARACTER NO-UNDO. DEF var nombre-archivo AS CHARACTER NO-UNDO. def var seleccion as logical no-undo. def var num-error as integer no-undo. DEF VAR v-estatus AS LOGICAL NO-UNDO. DEF VAR ed-archivo LIKE pe-archivo NO-UNDO. DEF VAR ed-desc-reporte LIKE pe-desc-reporte NO-UNDO. DEFINE VARIABLE Banderas-busqueda AS INTEGER NO-UNDO. DEFINE VARIABLE Criterio-busqueda AS INTEGER NO-UNDO. DEFINE VARIABLE Comando-busqueda AS INTEGER NO-UNDO. DEFINE VARIABLE Busqueda-ejecutada AS LOGICAL NO-UNDO. DEFINE VARIABLE Archivo-Guardado AS LOGICAL NO-UNDO. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK /* ******************** Preprocessor Definitions ******************** */ &Scoped-define PROCEDURE-TYPE Window &Scoped-define DB-AWARE no /* Name of designated FRAME-NAME and/or first browse and/or first query */ &Scoped-define FRAME-NAME DEFAULT-FRAME /* Standard List Definitions */ &Scoped-Define ENABLED-OBJECTS edt-Pantalla &Scoped-Define DISPLAYED-OBJECTS edt-Pantalla /* 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 C-Win AS WIDGET-HANDLE NO-UNDO. /* Menu Definitions */ DEFINE SUB-MENU m_Archivo MENU-ITEM m_Abrir LABEL "&Abrir" ACCELERATOR "CTRL-O" MENU-ITEM m_Imprimir LABEL "&Imprimir" ACCELERATOR "CTRL-P" MENU-ITEM m_Guardar LABEL "&Guardar" ACCELERATOR "CTRL-G" MENU-ITEM m_Guardar_como_ LABEL "G&uardar como..." MENU-ITEM m_Salir LABEL "&Salir" ACCELERATOR "CTRL-Q". DEFINE SUB-MENU m_Edicin MENU-ITEM m_Ir_a_ LABEL "&Ir a..." ACCELERATOR "CTRL-G" MENU-ITEM m_Buscar LABEL "&Buscar" ACCELERATOR "CTRL-F" MENU-ITEM m_Buscar_Siguiente LABEL "Buscar siguiente" ACCELERATOR "F9". DEFINE MENU MENU-BAR-C-Win MENUBAR SUB-MENU m_Archivo LABEL "&Archivo" SUB-MENU m_Edicin LABEL "&Edición" . /* Definitions of the field level widgets */ DEFINE VARIABLE edt-Pantalla AS CHARACTER VIEW-AS EDITOR NO-WORD-WRAP SCROLLBAR-HORIZONTAL SCROLLBAR-VERTICAL LARGE SIZE 97 BY 19.52 BGCOLOR 15 FONT 2 DROP-TARGET NO-UNDO. DEFINE BUTTON Btn_BT_Cancel AUTO-END-KEY DEFAULT LABEL "Cancelar" SIZE 13.2 BY 1.14 BGCOLOR 8 . DEFINE BUTTON Btn_BT_OK AUTO-GO DEFAULT LABEL "OK" SIZE 13.2 BY 1.14 BGCOLOR 8 . DEFINE VARIABLE fl-texto AS CHARACTER FORMAT "X(256)":U LABEL "Buscar" VIEW-AS FILL-IN SIZE 37 BY 1 NO-UNDO. DEFINE VARIABLE Rd-direccion AS CHARACTER INITIAL "Abajo" VIEW-AS RADIO-SET VERTICAL RADIO-BUTTONS "Arriba", "Arriba", "Abajo", "Abajo" SIZE 10.2 BY 1.81 NO-UNDO. DEFINE RECTANGLE RECT-4 EDGE-PIXELS 2 GRAPHIC-EDGE NO-FILL SIZE 31 BY 4.52. DEFINE VARIABLE Tg-filtro-busqueda AS LOGICAL INITIAL yes LABEL "Reiniciar al llegar al final" VIEW-AS TOGGLE-BOX SIZE 27.6 BY .76 NO-UNDO. DEFINE BUTTON Btn_GL_Cancel AUTO-END-KEY DEFAULT LABEL "Cancelar" SIZE 12.6 BY 1.14 BGCOLOR 8 . DEFINE BUTTON Btn_GL_OK AUTO-GO DEFAULT LABEL "OK" SIZE 12.6 BY 1.14 BGCOLOR 8 . DEFINE VARIABLE Fl-num-linea AS INTEGER FORMAT ">,>>>,>>9":U INITIAL 0 LABEL "Ir a línea" VIEW-AS FILL-IN SIZE 10.2 BY 1 NO-UNDO. /* ************************ Frame Definitions *********************** */ DEFINE FRAME DEFAULT-FRAME edt-Pantalla AT ROW 1 COL 1 NO-LABEL WITH 1 DOWN NO-BOX KEEP-TAB-ORDER OVERLAY SIDE-LABELS NO-UNDERLINE THREE-D AT COL 1 ROW 1 SIZE 97.6 BY 19.57 FONT 4. DEFINE FRAME Frame-buscar fl-texto AT ROW 1.24 COL 10 COLON-ALIGNED Btn_BT_OK AT ROW 2.67 COL 36 Tg-filtro-busqueda AT ROW 3.38 COL 4.6 Btn_BT_Cancel AT ROW 4.29 COL 36 Rd-direccion AT ROW 4.91 COL 4 NO-LABEL "Dirección" VIEW-AS TEXT SIZE 12.6 BY .52 AT ROW 4.29 COL 4 "Opciones de búsqueda" VIEW-AS TEXT SIZE 22.6 BY .81 AT ROW 2.29 COL 4 RECT-4 AT ROW 2.67 COL 3 WITH 1 DOWN KEEP-TAB-ORDER OVERLAY SIDE-LABELS NO-UNDERLINE THREE-D AT COL 14 ROW 3.1 SIZE 54.2 BY 8.38 FONT 4 TITLE "Buscar texto..." DEFAULT-BUTTON Btn_BT_OK. DEFINE FRAME Frame-Linea Fl-num-linea AT ROW 1.48 COL 12 COLON-ALIGNED Btn_GL_OK AT ROW 3.14 COL 4.4 Btn_GL_Cancel AT ROW 3.14 COL 23.8 WITH 1 DOWN KEEP-TAB-ORDER OVERLAY NO-HELP SIDE-LABELS NO-UNDERLINE THREE-D AT COL 20.4 ROW 4.05 SIZE 38.4 BY 5.57 FONT 4 TITLE "Ir a línea..." DEFAULT-BUTTON Btn_GL_OK CANCEL-BUTTON Btn_GL_Cancel. /* *********************** Procedure Settings ************************ */ &ANALYZE-SUSPEND _PROCEDURE-SETTINGS /* Settings for THIS-PROCEDURE Type: Window Allow: Basic,Browse,DB-Fields,Window,Query Other Settings: COMPILE */ &ANALYZE-RESUME _END-PROCEDURE-SETTINGS /* ************************* Create Window ************************** */ &ANALYZE-SUSPEND _CREATE-WINDOW IF SESSION:DISPLAY-TYPE = "GUI":U THEN CREATE WINDOW C-Win ASSIGN HIDDEN = YES TITLE = "Visualizar archivo en pantalla" HEIGHT = 19.57 WIDTH = 97.6 MAX-HEIGHT = 19.57 MAX-WIDTH = 97.6 VIRTUAL-HEIGHT = 19.57 VIRTUAL-WIDTH = 97.6 RESIZE = yes SCROLL-BARS = no STATUS-AREA = no BGCOLOR = ? FGCOLOR = ? KEEP-FRAME-Z-ORDER = yes THREE-D = yes MESSAGE-AREA = no SENSITIVE = yes. ELSE {&WINDOW-NAME} = CURRENT-WINDOW. ASSIGN {&WINDOW-NAME}:MENUBAR = MENU MENU-BAR-C-Win:HANDLE. /* END WINDOW DEFINITION */ &ANALYZE-RESUME /* *********** Runtime Attributes and AppBuilder Settings *********** */ &ANALYZE-SUSPEND _RUN-TIME-ATTRIBUTES /* SETTINGS FOR WINDOW C-Win VISIBLE,,RUN-PERSISTENT */ /* SETTINGS FOR FRAME DEFAULT-FRAME FRAME-NAME */ /* SETTINGS FOR FRAME Frame-buscar NOT-VISIBLE */ ASSIGN FRAME Frame-buscar:HIDDEN = TRUE. /* SETTINGS FOR FRAME Frame-Linea NOT-VISIBLE */ ASSIGN FRAME Frame-Linea:HIDDEN = TRUE. IF SESSION:DISPLAY-TYPE = "GUI":U AND VALID-HANDLE(C-Win) THEN C-Win:HIDDEN = no. /* _RUN-TIME-ATTRIBUTES-END */ &ANALYZE-RESUME /* ************************ Control Triggers ************************ */ &Scoped-define SELF-NAME C-Win &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL C-Win C-Win ON END-ERROR OF C-Win /* Visualizar archivo en pantalla */ OR ENDKEY OF {&WINDOW-NAME} ANYWHERE DO: IF THIS-PROCEDURE:PERSISTENT THEN RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL C-Win C-Win ON WINDOW-CLOSE OF C-Win /* Visualizar archivo en pantalla */ DO: /* This event will close the window and terminate the procedure. */ APPLY "CLOSE":U TO THIS-PROCEDURE. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL C-Win C-Win ON WINDOW-RESIZED OF C-Win /* Visualizar archivo en pantalla */ DO: /* El size de la ventana depende del manejo del mouse */ ASSIGN /* size maximo para el frame */ FRAME {&FRAME-NAME}:VIRTUAL-WIDTH-CHARS = {&WINDOW-NAME}:WIDTH-CHARS FRAME {&FRAME-NAME}:VIRTUAL-HEIGHT-CHARS = {&WINDOW-NAME}:HEIGHT-CHARS /* El size del frame sera del maximo posible */ FRAME {&FRAME-NAME}:WIDTH-CHARS = FRAME {&FRAME-NAME}:VIRTUAL-WIDTH-CHARS FRAME {&FRAME-NAME}:HEIGHT-CHARS = FRAME {&FRAME-NAME}:VIRTUAL-HEIGHT-CHARS /* El size del editor sera el mismo que el size del frame */ edt-pantalla:WIDTH-CHARS IN FRAME {&FRAME-NAME} = FRAME {&FRAME-NAME}:VIRTUAL-WIDTH-CHARS edt-pantalla:HEIGHT-CHARS IN FRAME {&FRAME-NAME} = FRAME {&FRAME-NAME}:VIRTUAL-HEIGHT-CHARS NO-ERROR. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME Frame-buscar &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Frame-buscar C-Win ON END-ERROR OF FRAME Frame-buscar /* Buscar texto... */ DO: APPLY "END-ERROR" TO FRAME Frame-buscar. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Frame-buscar C-Win ON GO OF FRAME Frame-buscar /* Buscar texto... */ DO: RUN aplica-busqueda. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME Frame-Linea &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Frame-Linea C-Win ON GO OF FRAME Frame-Linea /* Ir a línea... */ DO: HIDE FRAME Frame-Linea NO-PAUSE. ASSIGN Fl-num-linea = INPUT FRAME Frame-Linea Fl-num-linea. RUN mueve-a-linea . END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME m_Abrir &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL m_Abrir C-Win ON CHOOSE OF MENU-ITEM m_Abrir /* Abrir */ DO: SYSTEM-DIALOG GET-FILE nombre-archivo TITLE "Seleccion de archivo a visualizar." FILTERS "Archivos OpenEdge (*.p)" "*.p", "Archivos GUI (*.w)" "*.w", "Incluidos OE (*.i)" "*.i", "Archivos de texto (*.txt)" "*.txt", "Todos los archivos (*.*)" "*.*" MUST-EXIST USE-FILENAME UPDATE seleccion. IF NOT seleccion THEN RETURN NO-APPLY. ASSIGN ed-desc-reporte = nombre-archivo ed-archivo = nombre-archivo. run inicia-editor(ed-archivo). END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME m_Buscar &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL m_Buscar C-Win ON CHOOSE OF MENU-ITEM m_Buscar /* Buscar */ DO: VIEW FRAME Frame-buscar. IF Edt-pantalla:TEXT-SELECTED in frame {&frame-name} THEN ASSIGN Fl-texto = Edt-pantalla:SELECTION-TEXT . ELSE ASSIGN fl-texto = pe-texto. Busqueda: DO ON ENDKEY UNDO Busqueda , LEAVE Busqueda : DISPLAY Rd-direccion Tg-filtro-busqueda WITH FRAME Frame-buscar /*IN WINDOW {&Window-name}*/ . ENABLE ALL WITH FRAME Frame-buscar. UPDATE Fl-texto WITH FRAME Frame-buscar. END. HIDE FRAME Frame-buscar NO-PAUSE. APPLY "ENTRY" TO Edt-pantalla . END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME m_Buscar_Siguiente &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL m_Buscar_Siguiente C-Win ON CHOOSE OF MENU-ITEM m_Buscar_Siguiente /* Buscar siguiente */ DO: RUN Aplica-Busqueda. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME m_Guardar &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL m_Guardar C-Win ON CHOOSE OF MENU-ITEM m_Guardar /* Guardar */ DO: DEFINE VARIABLE pw_Window AS WIDGET-HANDLE NO-UNDO. /* --- Begin SCM changes --- */ DEFINE VAR scm_ok AS LOGICAL NO-UNDO. /* --- End SCM changes ----- */ DO ON STOP UNDO, LEAVE: /* Get widget handles of Procedure Window. */ RUN adecomm/_pwgetwh.p ( INPUT Edt-Pantalla , OUTPUT pw_Window ). /* --- Begin SCM changes --- */ RUN adecomm/_adeevnt.p (INPUT pe-archivo , INPUT "Before-Save", INPUT STRING( Edt-Pantalla ), INPUT pe-archivo , OUTPUT scm_ok ). IF scm_ok = FALSE THEN DO: ASSIGN Archivo-Guardado = FALSE. /* Cancela Guardar. */ RETURN. END. /* --- End SCM changes ----- */ ASSIGN Archivo-Guardado = Edt-Pantalla:SAVE-FILE( pe-archivo ) IN FRAME {&FRAME-NAME} NO-ERROR . IF ( Archivo-Guardado = FALSE ) THEN DO: MESSAGE pe-archivo SKIP "No se puede guardar este archivo." SKIP(1) "Archivo de Solo-Lectura o el Path especificado" SKIP "es inválido. Use un nombre de archivo diferente." VIEW-AS ALERT-BOX WARNING BUTTONS OK IN WINDOW pw_Window. END. ELSE DO: /* Assign new file name to editor widget and update Window title. */ ASSIGN Edt-Pantalla:NAME = pe-archivo {&WINDOW-NAME}:TITLE = "Edicion de " + Edt-Pantalla:NAME. /* Reset the EDIT-CAN-UNDO attribute. */ ASSIGN Edt-Pantalla:EDIT-CAN-UNDO = FALSE. /* --- Begin SCM changes --- */ RUN adecomm/_adeevnt.p (INPUT pe-archivo , INPUT "Save", INPUT STRING( Edt-Pantalla ), INPUT Edt-Pantalla:NAME , OUTPUT scm_ok ). /* --- End SCM changes ----- */ END. END. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME m_Guardar_como_ &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL m_Guardar_como_ C-Win ON CHOOSE OF MENU-ITEM m_Guardar_como_ /* Guardar como... */ DO: SYSTEM-DIALOG GET-FILE nombre-archivo TITLE "Guardar archivo como" FILTERS "Reportes (*.rep)" "*.rep", "Bitácoras (*.log)" "*.log", "Listados (*.lis)" "*.lis", "Todos los archivos (*.*)" "*.*" /* ASK-OVERWRITE SAVE-AS ** Peligroso si reescribe archivos importantes ** */ USE-FILENAME UPDATE seleccion. IF NOT seleccion THEN RETURN NO-APPLY. IF nombre-archivo = "" THEN DO: BELL. MESSAGE "El archivo de entrada no puede dejarse en blanco." view-as alert-box warning title "Advertencia". RETURN NO-APPLY. END. IF SEARCH(nombre-archivo) <> ? THEN DO: BELL. MESSAGE "El archivo para salvar ya existe. No se puede reescribir." view-as alert-box error title "Error". RETURN NO-APPLY. END. os-copy value(ed-archivo) value(nombre-archivo). /* Antes os-rename */ num-error = os-error. if num-error <> 0 then do: case num-error: when 10 then message "El archivo indicado ya existe." view-as alert-box error title "Error". otherwise message "Hubo error al guardar el archivo. El código de error es:" num-error view-as alert-box error title "Error". end case. end. APPLY "CLOSE":U TO THIS-PROCEDURE. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME m_Imprimir &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL m_Imprimir C-Win ON CHOOSE OF MENU-ITEM m_Imprimir /* Imprimir */ DO: RUN pS&R-PrintFile.p (ed-archivo, FALSE). END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME m_Ir_a_ &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL m_Ir_a_ C-Win ON CHOOSE OF MENU-ITEM m_Ir_a_ /* Ir a... */ DO: VIEW FRAME Frame-Linea. ASSIGN Fl-num-linea = edt-pantalla:CURSOR-LINE IN FRAME {&FRAME-NAME}. DLG_GOTO: DO ON STOP UNDO DLG_GOTO, LEAVE DLG_GOTO ON ERROR UNDO DLG_GOTO, LEAVE DLG_GOTO ON ENDKEY UNDO DLG_GOTO, LEAVE DLG_GOTO: UPDATE Fl-num-linea btn_GL_OK btn_GL_Cancel GO-ON( GO,WINDOW-CLOSE ) WITH FRAME Frame-Linea IN WINDOW {&WINDOW-NAME}. END. HIDE FRAME Frame-Linea NO-PAUSE. APPLY "ENTRY" TO edt-pantalla. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME m_Salir &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL m_Salir C-Win ON CHOOSE OF MENU-ITEM m_Salir /* Salir */ DO: APPLY "CLOSE":U TO THIS-PROCEDURE. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &UNDEFINE SELF-NAME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK C-Win /* *************************** Main Block *************************** */ /* Set CURRENT-WINDOW: this will parent dialog-boxes and frames. */ /* Best default for GUI applications is... */ PAUSE 0 BEFORE-HIDE. /* Set CURRENT-WINDOW: this will parent dialog-boxes and frames. */ ASSIGN CURRENT-WINDOW = {&WINDOW-NAME} THIS-PROCEDURE:CURRENT-WINDOW = {&WINDOW-NAME} {&WINDOW-NAME}:MIN-HEIGHT-CHARS = 7.5 {&WINDOW-NAME}:MIN-WIDTH-CHARS = 45 {&WINDOW-NAME}:MAX-WIDTH-CHARS = SESSION:WIDTH-CHARS {&WINDOW-NAME}:MAX-HEIGHT-CHARS = SESSION:HEIGHT-CHARS - 0.75 {&WINDOW-NAME}:TITLE = pe-desc-reporte ed-desc-reporte = pe-desc-reporte ed-archivo = pe-archivo. /* The CLOSE event can be used from inside or outside the procedure to */ /* terminate it. */ ON CLOSE OF THIS-PROCEDURE RUN disable_UI. /* Best default for GUI applications is... */ PAUSE 0 BEFORE-HIDE. /* Validaciones */ IF SEARCH(ed-archivo) = ? THEN DO: MESSAGE "El archivo " + ed-archivo + " no existe." VIEW-AS ALERT-BOX ERROR. RETURN. END. /* Now enable the interface and wait for the exit condition. */ /* (NOTE: handle ERROR and END-KEY so cleanup code will always fire. */ ASSIGN FILE-INFO:FILE-NAME = pe-archivo. {&WINDOW-NAME}:TITLE = FILE-INFO:FULL-PATHNAME. MAIN-BLOCK: DO ON ERROR UNDO MAIN-BLOCK, LEAVE MAIN-BLOCK ON END-KEY UNDO MAIN-BLOCK, LEAVE MAIN-BLOCK: apply "window-resized":u to {&window-name}. RUN enable_UI. form with frame Frame-Linea view-as dialog-box. form with frame Frame-Buscar view-as dialog-box. run inicia-editor(ed-archivo). IF NOT THIS-PROCEDURE:PERSISTENT THEN WAIT-FOR CLOSE OF THIS-PROCEDURE. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* ********************** Internal Procedures *********************** */ &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE Aplica-Busqueda C-Win PROCEDURE Aplica-Busqueda : DEF VAR texto-encontrado AS LOGICAL NO-UNDO. HIDE FRAME Frame-buscar NO-PAUSE. Comando-busqueda = IF Rd-direccion:SCREEN-VALUE IN FRAME Frame-buscar = "Abajo" THEN FIND-NEXT-OCCURRENCE ELSE FIND-PREV-OCCURRENCE. ASSIGN Fl-texto = INPUT FRAME Frame-buscar Fl-texto INPUT FRAME Frame-buscar Tg-filtro-busqueda INPUT FRAME Frame-buscar Rd-direccion Busqueda-ejecutada = TRUE. /* Se permite al usuario buscar un signo de interrogación( ? ). Se necesita un manto. especial.*/ IF Fl-texto = ? OR fl-texto = "?" THEN ASSIGN Fl-texto = IF ( SESSION:WINDOW-SYSTEM BEGINS "MS-WIN" AND Edt-pantalla:LARGE IN FRAME {&FRAME-NAME} ) THEN "??" ELSE "?". ASSIGN Criterio-busqueda = FIND-SELECT Criterio-busqueda = IF Tg-filtro-busqueda THEN Criterio-busqueda + FIND-WRAP-AROUND ELSE Criterio-busqueda Banderas-busqueda = Comando-busqueda + Criterio-busqueda . Busqueda: DO WHILE TRUE: ASSIGN Texto-encontrado = Edt-pantalla:SEARCH(Fl-Texto, Banderas-busqueda) IN FRAME {&FRAME-NAME}. IF Texto-encontrado THEN LEAVE Busqueda. MESSAGE "Texto no encontrado." VIEW-AS ALERT-BOX INFORMATION . LEAVE Busqueda. END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE disable_UI C-Win _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. ------------------------------------------------------------------------------*/ /* Delete the WINDOW we created */ IF SESSION:DISPLAY-TYPE = "GUI":U AND VALID-HANDLE(C-Win) THEN DELETE WIDGET C-Win. 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 C-Win _DEFAULT-ENABLE PROCEDURE enable_UI : /*------------------------------------------------------------------------------ Purpose: ENABLE the User Interface Parameters: 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. ------------------------------------------------------------------------------*/ DISPLAY edt-Pantalla WITH FRAME DEFAULT-FRAME IN WINDOW C-Win. ENABLE edt-Pantalla WITH FRAME DEFAULT-FRAME IN WINDOW C-Win. {&OPEN-BROWSERS-IN-QUERY-DEFAULT-FRAME} DISPLAY fl-texto Tg-filtro-busqueda Rd-direccion WITH FRAME Frame-buscar IN WINDOW C-Win. ENABLE RECT-4 fl-texto Btn_BT_OK Tg-filtro-busqueda Btn_BT_Cancel Rd-direccion WITH FRAME Frame-buscar IN WINDOW C-Win. {&OPEN-BROWSERS-IN-QUERY-Frame-buscar} DISPLAY Fl-num-linea WITH FRAME Frame-Linea IN WINDOW C-Win. ENABLE Fl-num-linea Btn_GL_OK Btn_GL_Cancel WITH FRAME Frame-Linea IN WINDOW C-Win. {&OPEN-BROWSERS-IN-QUERY-Frame-Linea} VIEW C-Win. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE inicia-editor C-Win PROCEDURE inicia-editor : /*------------------------------------------------------------------------------ Purpose: Inicializa editor con el archivo a visualizar Parameters: Archivo a editar (CHAR, Input) Notes: ------------------------------------------------------------------------------*/ DEF INPUT PARAMETER ini-archivo AS CHARACTER NO-UNDO. v-estatus = edt-pantalla:READ-FILE(ini-archivo) IN FRAME {&FRAME-NAME} NO-ERROR. IF ERROR-STATUS:ERROR THEN DO: MESSAGE "No se pudo abrir el archivo para verlo en pantalla. La causa es: " ERROR-STATUS:GET-MESSAGE(1) + "." SKIP "El archivo se dejará en verarch.rep, donde usted puede verlo usando otro programa." view-as alert-box error title "Error". ASSIGN {&WINDOW-NAME}:TITLE = "< Archivo no accesible >". OS-COPY VALUE(ini-archivo) verarch.rep. RETURN. END. IF NOT v-estatus THEN DO: MESSAGE "No se pudo abrir el archivo " + ini-archivo view-as alert-box error title "Error". ASSIGN {&WINDOW-NAME}:TITLE = "". RETURN. END. ASSIGN {&WINDOW-NAME}:TITLE = ini-archivo. assign edt-pantalla:VISIBLE = TRUE edt-pantalla:READ-ONLY = FALSE. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE mueve-a-linea C-Win PROCEDURE mueve-a-linea : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEF VAR ir-al-FDA AS LOGICAL NO-UNDO. DO WITH FRAME {&FRAME-NAME}: IF edt-pantalla:EMPTY THEN RETURN. IF Fl-num-linea > edt-pantalla:NUM-LINES THEN ASSIGN ir-al-FDA = edt-pantalla:MOVE-TO-EOF(). ELSE DO: IF ( Fl-num-linea < 1 ) THEN ASSIGN Fl-num-linea = 1. ASSIGN edt-pantalla:CURSOR-LINE = Fl-num-linea. END. END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME