domingo, 2 de octubre de 2011

Cómo crear en Forms un canvas tabular con scrollbar vertical y horizontal

Hola a todos y bienvenidos a este espacio web en el cual pretendo compartir con la comunidad mis conocimientos sobre PL/SQL, Oracle Forms y Reports fruto de 10 años de experiencia con estas herramientas.

Mi intención no es más que dar a conocer ciertos trucos o técnicas que pueden servir de gran ayuda sobre todo a los que lleváis poco tiempo trabajando con ellas, aunque en ocasiones es posible que resulte interesante a los más expertos. En cualquier caso, espero que os sea de utilidad.


Hoy voy a empezar explicando cómo se le puede poner a un canvas tabular barras de desplazamiento horizontales y verticales al mismo tiempo. Algo tan aparentemente trivial no lo es en Forms, puesto que en principio es posible hacerlo de manera sencilla, pero luego no funciona como es de esperar.


Para conseguirlo hay que seguir los siguientes pasos:
1) Crear un canvas content vacío que irá asociado a la ventana donde queramos mostrar los items del bloque.

2) Utilizando el asistente, crear un bloque en formato tabular multiregistro, cuyos items se han de posicionar en un nuevo stacked canvas creado con el asistente.

3) Nos vamos a las propiedades del bloque y poner el valor Sí en la propiedad "Mostrar barra de desplazamiento" del nuevo bloque. El canvas en el que mostrar la barra será el creado en el paso 1) y la orientación vertical.

4) Abrir el stacked canvas y agrupar todos sus items entorno a la parte superior izquierda. En las propiedades sobre la ventana del canvas ajustar su tamaño para que sea el mismo que el de los items agrupados. Es importante que sea así porque de lo contrario las barras funcionarán pero no será "bonito". Luego cerrar el canvas apilado.

5) Abrir el canvas principal y usar la opición de menú de ver los canvas apilados para mostrar nuestro stacked canvas. Seleccionarlo y modificar sus dimensiones, ajustando además la posición y tamaño de la barra de desplazamiento vertical, que aparece gracias a lo realizado en el punto 3).


6) Poner a Sí la propiedad del canvas para mostrar la barra de desplazamiento horizontal. Con esto ya tendremos el canvas con ambas barras de desplazamiento.

Aquí tenéis una captura con el resultado:

7 comentarios:

  1. Espero que te haya sido de utilidad.

    Un saludo.

    ResponderEliminar
  2. Yo tengo un caso un poco mas complicado.
    En un canvas tabular, quiero poner en una pestaña mucha información (proveniente de mas de un bloque) por lo que necesitaría una barra de desplazamiento vertical dentro de una de las pestañas.
    ¿Cómo tendría que hacer? es que soy muy novato con esta tecnología, seguro que es una chorrada

    ResponderEliminar
  3. Si quieres poner ambar barras de desplazamiento en un canvas tabular tienes que proceder como explico en el artículo para cada una de las pestañas, pero si lo que buscas es poner una sola barra por pestaña (que en este caso, lo normal sería una barra veretical), y suponiendo que en cada pestaña muestres datos de un bloque diferente, tienes que poner las siguientes propiedades por cada bloque correspondiente a cada pestaña:
    - Activar la opción Mostrar barra de desplazamiento (Show Scroll Bar).
    - En Lienzo de Barra de Desplazamiento (Scroll Bar Canvas), seleccionar tu canvas tabular.
    - En Página de Separador (Tab Page), la pestaña del canvas que desees asociar al bloque.
    - Por último, en Orientación de Barra de Desplazamiento (Scroll Bar Orientation), ponerlo en Vertical.

    Un saludo.

    ResponderEliminar
  4. el problema es que en donde quiero poner la barra de desplazamiento hay mas de un bloque.
    ¿Te podría enviar el código a una cuenta de correo que me digas para ver cuales son los pasos a seguir?

    mil gracias

    ResponderEliminar
  5. Antes que nada, he releído tus mensajes y puede haber una confusión: no es lo mismo un Tab Canvas (canvas con varias pestañas) que un Canvas "normal" que muestra los datos en disposición tabular (es decir, se muestran una o varias filas de items juntos y alineados). Yo entiendo que te refieres a lo primero.

    Una vez aclarado esto, debes saber que las barras de desplazamiento se pueden poner tanto a nivel de bloque como a nivel de canvas apilado (stacked canvas) (también las hay a nivel de ítem, pero es otro tema diferente) y precisamente este artículo se basa en ello. Aún así no es posible poner dos barras de desplazamiento correspondiente a items de bloques diferentes dentro de la misma pestaña.

    Aunque no lo he probado, una posible solución sea precisamente la utilización de diferentes canvas apilados dentro de la misma pestaña.

    Un saludo.

    ResponderEliminar