GSETEXCL()
 Define una región de pantalla que se excluirá en operaciones de
 visualización
------------------------------------------------------------------------------
 Sintaxis

     GSETEXCL([<nAreaExcl>]|[<nSup>, <nIzq>, <nInf>,
        <nDer>, <nTipo>]) --> NIL

 Argumentos

     <nAreaExcl> es un valor numérico que representa el número del área
     de exclusión.

     <nSup>, <nIzq>, <nInf>, <nDer> y <nTipo> definen
     las coordenadas del área de exclusión.

     Constantes del modo de coordenadas
     ------------------------------------------------------------------------
     Constante                Descripción
     ------------------------------------------------------------------------
     LLM_COOR_TEXT            <nSup> indica el número de fila.
                              Es el valor por defecto.
     LLM_COOR_GRAPH           <nSup> indica la fila en píxeles.
     ------------------------------------------------------------------------

     Nota:  Tiene la posibilidad de no especificar ningún argumento, de
     indicar sólo <nAreaExcl>, o la totalidad de los parámetros.

 Devuelve 

     Si se especifica <nAreaExcl>, se devuelve una matriz con las
     coordenadas del área de exclusión. GSETEXCL(LLG_EXCL_KILL_ALL) elimina
     todas las áreas de exclusión definidas con anterioridad. Si no se
     especifica ningún argumento, GSETEXCL() devuelve el número de áreas de
     exclusión activas. Si se especifican <nSup>, <nIzq>, <nInf>, <nDer> y
     <nTipo>, se devuelve NIL.

 Descripción

     Esta función se utiliza para que ciertas zonas de la pantalla no se
     vean afectadas por operaciones de salida. Probablemente, esta función
     sea la más compleja del modo gráfico de CA-Clipper. Si nunca ha
     utilizado las funciones DISPBEGIN() y DISPEND(), consulte la
     documentación de CA-Clipper correspondiente para mayor información.
     Fundamentalmente, estas funciones se utilizan para capturar o
     almacenar en memoria intermedia la salida por pantalla. DISPBEGIN()
     inicia el almacenamiento en memoria intermedia y DISPEND() lo detiene
     y, a continuación, actualiza el contenido de la pantalla.

     GSETEXCL() es opuesta a GSETCLIP(). GSETEXCL() y GSETCLIP() nunca se
     deben usar juntas. Una llamada a GSETCLIP() destruye todas las áreas de
     exclusión definidas previamente. Internamente, CA-Clipper mantiene las
     áreas de exclusión como si se trataran de áreas de inclusión múltiple.

     Para comprender el funcionamiento de GSETEXCL(), imagínese tres
     ventanas, A, B y C, dispuestas en cascada:
     .
     .
     .
     .......
     .......
     ............
     ............

     El objetivo es visualizar información en la ventana A mientras se
     encuentra cubierta por las ventanas B y C.

     ■ Técnica antigua en modo texto:   Suponga que trabaja en modo
        texto y que ha guardado el área que ocupan las ventanas antes de
        dibujarlas. En ese caso, probablemente haría lo siguiente:

        1. Llamar a DISPBEGIN() para activar la memoria intermedia vídeo.

        2. Hacer desaparecer las ventanas B y C. Para ello hay que guardar,
           en sucesivas operaciones, el contenido actual del área que ocupa
           cada ventana y restaurar el fondo de la ventana precedente,
           comenzando con la ventana C, y siguiendo con la ventana B. Por
           ejemplo,

           cNuevaPantC := SAVESCREEN(nSup, nIzq, nInf, nDer)
           RESTSCREEN(nSup, nIzq, nInf, nDer,cAntPantC)
           cNuevaPantB := SAVESCREEN(nSup, nIzq, nInf, nDer)
           RESTSCREEN(nSup, nIzq, nInf, nDer,cAntPantB)

        3. En este punto, la ventana A es la única visible por lo que es
           fácil manipularla o visualizar en ella información.

        4. A continuación, se deben guardar las ventanas B y C, y volver a
           dibujarlas, por ejemplo,

           cAntPantC := SAVESCREEN(nSup, nIzq, nInf, nDer)
           RESTSCREEN(nSup, nIzq, nInf, nDer,cNuevaPantC)
           cAntPantB := SAVESCREEN(nSup, nIzq, nInf, nDer)
           RESTSCREEN(nSup, nIzq, nInf, nDer,cNuevaPantB)

        5. Llamar a DISPEND(). Hasta ahora el usuario no ha visto ningún
           cambio en la pantalla, ya que la salida se ha almacenado en la
           memoria intermedia.

           Al llamar a DISPEND(), aparecen instantáneamente en pantalla
           TODOS los datos almacenados en la memoria intermedia.
           Fundamentalmente, el usuario sólo ve la pantalla final y ninguna
           de las operaciones de pantalla intermedias. El usuario no se ha
           enterado de las operaciones de visualización y revisualización de
           las ventanas B y C. De esta forma se consigue un efecto visual
           continuo. El método de almacenamiento en la memoria intermedia es
           posible en modo texto debido a que, en este modo, las operaciones
           de visualización son rápidas y simples y a que se necesita poca
           cantidad de memoria para guardar una pantalla (4KB).

     ■ Nueva técnica en modo gráfico: En modo gráfico la situación es
        totalmente diferente. DISPBEGIN() y DISPEND() no están presentes en
        este modo. CA-Clipper utiliza áreas de exclusión en lugar de ir
        quitando las ventanas que están encima de la ventana en la que se
        desea escribir. El concepto de área de exclusión se utiliza en la
        mayoría de sistemas gráficos, incluido Microsoft Windows. Un área de
        exclusión es simplemente una región de pantalla en la que se
        deshabilita la visualización de información.

        En el ejemplo anterior, se declararían las ventanas B y C como áreas
        de exclusión. Con esto se impide que puedan escribirse datos en
        estas ventanas. Por consiguiente, al modificar la información de la
        ventana A, las ventanas B y C no se ven afectadas. Si se utilizan
        áreas de exclusión, el ejemplo anterior queda como sigue:

        GSETEXCL(nSup, nIzq, nInf, nDer) //Coordenadas de la ventana B

        GSETEXCL(nSup, nIzq, nInf, nDer) //Coordenadas de la ventana C
        // Se manipulan o dibujan datos en la ventana A.
        GSETEXCL (LLG_EXCL_KILL_ALL)

 Notas

     Una vez terminada la operación de salida por pantalla, se deben
     eliminar las definiciones de áreas de exclusión; de lo contrario, las
     áreas de exclusión permanecen activas y no se podría escribir datos en
     las ventanas B y C. Como se ha podido comprobar, la gestión de un
     sistema de ventanas en cascada utilizando DISPBEGIN() y DISPEND()
     consume muchos recursos, lo que hace que esta técnica no sea adecuada
     para el modo gráfico. Las áreas de exclusión no consumen memoria, son
     más rápidas y más fáciles de usar.

 Ficheros   La biblioteca asociada es LLIBG.LIB,
            el fichero de cabecera asociado es Llibg.ch.

 To download this example - click here.

See Also: DISPBEGIN() DISPEND() GSETCLIP()