Cobol en español
  Página de Inicio Recomiéndala Contáctame Usuarios en Linea
12
     Crea Una cuenta  
Video 1
Video 2
Video 3

Si te ha servido la web
o te han gustado los videos, colabora haciendo click en el botón.

MANUALES
TEMATICOS
BASES DE DATOS
COBOL / WINDOWS
COBOL / UNIX
HISTORIA /DOCS
 
BUSCADOR
PROGRAMANDO-Dos
TRUCOS
AÑO 2.000
TEORIA POWCOB-3
PROG. POWCOB-3
TEORIA POWCOB-5
PROG. POWCOB-5
OCX-ESCOBOL
RUTINAS/MANUALES
OCX / JUEGOS
HERRAMIENTAS
COMPILADORES
ENCUESTAS
ENLACES
FOROS
TOP 10

CHAT   Usuarios: 0
Programando en PowerCobol 5
TEMARIOControl TreeView
BBDD en PowerCobol - I
Control de Ficheros

Control TreeView

(956 palabras totales en este texto)
(11466 Lecturas)   Versión Imprimible



imagen del control TreeViewEl control TreeView es un componente de PowerCobol que nos permite presentar de una manera jerárquica una serie de elementos. En realidad es un ListBox con relaciones de jerarquía.

El uso de éste control es muy variado, nos puede ayudar a presentar un menú, un plan contable y en definitiva todo aquella relación de elementos en la que existan opciones que cuelgan unas de otras.

En esta explicación vamos a aprender a utilizarlo y comprender su metodología de programación. Es un control algo distinto, ya que además de sus propiedades incluye objetos que a su vez poseen sus propias propiedades.

Este control tendrá una lista de elementos que llamaremos "primarios" de los que pueden o no colgar otros elementos que llamaremos "padre" que a su vez pueden tener otros elementos que cuelguen de el a los que llamaremos hijos y así indefinidamente. Cada uno de los elementos que contengan otros se llama nodo, los nodos son objetos propios con sus propiedades y sus métodos. Espero explicarme claramente, pero siempre tendréis el fuente del proyecto por si alguna duda no la he aclarado bien.

Pero veamos como funciona.

Las propiedades mas importantes son:
  • TVStyle. Le indicamos el estilo de presentación del TreeView, tiene 7 opciones, pero lo mas lógica es la 6, ya que aparecen un [+] [-] para indicar si está desplegado el nivel o no.
  • TVLineStyle. Indicamos si queremos la representación gráfica de la jerarquía desde el nivel primario o directamente del siguiente.
  • Indentation. Distancia de separación de los elementos.
  • PathSeparator. Será el separador que utilizará cuando queramos recuperar la ruta completa de un elemento seleccionado.
  • ImageList. Para incluir los iconos que pueden acompañar a los elementos.
  • Sorted. Para presentar los elementos clasificados.
  • LabelEdit. Si queremos que los elementos sean editables, es decir que los podamos modificar.
  • HideSelection. Para ocultar el efecto de selección.
  • Resto de propiedades propias de PowerCobol, colores, letras, nombre, etc ...
En cuanto a los métodos, son los siguientes:
  • Add. Añadir un elemento primario, un padre o un hijo.
  • Insert. Insertar un elemento primario, un padre o un hijo.
  • Delete. Borrar un elemento primario, un padre o un hijo.
  • Clear. Borrar todos los elementos y dejar el control vacio.
Vamos a cargar una lista con 3 niveles de profundidad, es decir primarios, padres e hijos. En el ejemplo lo cargamos de una tabla, pero evidentemente los datos los podeis cargar de cualquier fichero. Empezamos a definir las variables que vamos a necesitar:
    01 ELNODO OBJECT REFERENCE POW-CNODE.
    01 I PIC 9.
    01 J PIC 9.
    01 K PIC 9.
    01 ELNODO1 PIC S9(9) COMP-5.
    01 ELNODO2 PIC S9(9) COMP-5.
    01 ELNODO3 PIC S9(9) COMP-5.
    01 TABLAUNO.
      02 FILLER PIC X(40) VALUE 'NIVEL1-1 NIVEL1-2 NIVEL1-3 NIVEL1-4 '.
    01 RTABLAUNO REDEFINES TABLAUNO.
      02 ELEUNO PIC X(10) OCCURS 10 TIMES.
    01 TABLADOS.
      02 FILLER PIC X(40) VALUE 'NIVEL2-1 NIVEL2-2 NIVEL2-3 NIVEL2-4 '.
    01 RTABLADOS REDEFINES TABLADOS.
      02 ELEDOS PIC X(10) OCCURS 4 TIMES.
    01 TABLATRES.
      02 FILLER PIC X(40) VALUE 'NIVEL3-1 NIVEL3-2 NIVEL3-3 NIVEL3-4 '.
    01 RTABLATRES REDEFINES TABLATRES.
      02 ELETRES PIC X(10) OCCURS 4 TIMES.

Explicación de las variables:
  • ELNODO.Esta variable define un objeto de tipo nodo para PowerCobol.
  • I, J, K.Variables para hacer los PERFORM y cargar las tablas.
  • ELNODO1, ELNODO2, ELNODO3.Guardaremos los punteros de cada nivel del TreeView.
  • TABLAS.Las tablas con las que cargaremos el TreeView.
Antes de explicar el proceso que realizaremos veamos el resultado obtenido en esta imagen:
Proyecto TreeView
Todo este proceso se haya en el evento click del botón que hemos llamado Cargar TreeView, pero no os preocupeis que el proyecto completo está disponible para descargarse.
Lo primero que hacemos es inicializar el control con el método clear:
    INVOKE cmTreeView1 "clear"
Y a continuación mediante 3 Perform anidados rellenamos la tabla con sus elementos
    PERFORM VARYING I FROM 1 BY 1 UNTIL I > 4
      INVOKE CMTREEVIEW1 'Add' USING ELEUNO (I) RETURNING ELNODO1
      PERFORM VARYING J FROM 1 BY 1 UNTIL J > 4
        MOVE 'Root'(ELNODO1) OF CMTREEVIEW1 TO ELNODO
        INVOKE ELNODO 'Add' USING ELEDOS (J) RETURNING ELNODO2
        PERFORM VARYING K FROM 1 BY 1 UNTIL K > 4
          MOVE 'Child'(ELNODO2) OF 'Root'(ELNODO1) OF CMTREEVIEW1 TO ELNODO
          INVOKE ELNODO 'Add' USING ELETRES (K) RETURNING ELNODO3
        END-PERFORM
      END-PERFORM
    END-PERFORM

Lo más importante a tener en cuenta en el uso de éste control son los nodos que nos va generando y su jerarquía dentro del propio control. Por eso hemos utilizado unas variables distintas para rama del árbol y luego movemos al padre o hijo dependiendo de su posición.

Es posible que sea un poco lioso, pero cuando os bajéis el proyecto y lo veais mejor, seguro que lo implementais rapidamente.

Para completar completamente el proyecto, tenemos que programar el evento Click del TreeView, que es donde se muestra que elemento está seleccionado y cual es su ruta completa partiendo del inicio del árbol.
Esta es la programación de dicho evento.
    ENVIRONMENT DIVISION.
    DATA DIVISION.
    WORKING-STORAGE SECTION.
    01 ELTEXTO PIC X(100).
    01 ELNODO OBJECT REFERENCE POW-CNODE.
    PROCEDURE DIVISION.
      MOVE "SelNode" OF CMTreeView1 TO ELNODO
      MOVE 'Text' OF ELNODO TO ELTEXTO
      MOVE ELTEXTO TO CAPTION OF LTEXTO
      MOVE 'Path' OF ELNODO TO ELTEXTO
      MOVE ELTEXTO TO CAPTION OF LRUTA

    Hasta aquí la explicación del control TreeView, espero que os haya gustado y sobre todo que lo hayais comprendido.
    En la sección de descargas encontrareis la correspondiente a este artículo en el apartado PowerCobol-5.

   Inicio de Página   
Sitio desarrollado con PHP-Nuke. Todos los Derechos Reservados.
PHP-Nuke es un Software Libre realizado con licencia GNU/GPL.
Página creada en Junio de 1.998, con el proposito de difundir el lenguaje Cobol en nuestra lengua.
Andres Montes [98/11]