You are on page 1of 59

ENTRENAMIENTO EN POWERBUILDER 9.

Ing. Ismael Castañeda Fuentes


Departamento de Ingeniería de Sistemas
UNIVERSIDAD NACIONAL DE COLOMBIA
Bogotá, febrero de 2003.
ENTRENAMIENTO EN POWER BUILDER 9.0
PowerBuilder es una herramienta computacional que permite la elaboración de aplicaciones
cliente/servidor utilizando principalmente elementos gráficos. Las aplicaciones desarrolladas con
PowerBuilder se almacenan en una librería (PowerBuilder Library, archivos caracterizados con el
tipo *.PBL ). Una vez desarrollada una aplicación PowerBuilder, se crea un archivo tipo *.EXE
para que los usuarios ejecuten la aplicación desde Windows cuando lo deseen.

La versión 9.0 del entorno integrado para desarrollo de aplicaciones empresariales ofrece
mejoras significativas en rendimiento y productividad, un amplio soporte para componentes
estándar, basados en Web y muchas características orientadas al uso de XML. Algunas de las
nuevas características son:

• Soporte DataWindow XML:

Esta característica permite exportar e importar las filas de datos del DataWindow a y de
Lenguaje Extensible de Marcado (XML) Usted puede especificar la estructura lógica de
cómo las filas iteran dentro del elemento raíz del documento XML. Esto ser realiza por
medio de objetos plantilla XML que están encapsulados en objetos DataWindow y
construidos gráficamente en una nueva vista del DataWindow Painter.

• PowerBuilder Document Object Model (PBDOM):

PBDOM es la implementación PowerBuilder del Modelo de Objetos de Documento (DOM),


una interfaz de programación que define la forma en que se pueden acceder y manipular
documentos XML. A pesar de que PBDOM no es una implementación DOM API del
consorcio World Wide Web (W3C), el API PowerBuilder API se puede usar para leer,
escribir y manipular XML de formato estándar desde dentro de código PowerScript.
PBDOM representa un documento XML como una colección de objetos interconectados y
métodos intuitivos que indican el uso y funcionalidad de cada objeto.

• La interfaz nativa PowerBuilder (PBNI):

La interfaz nativa PowerBuilder (PBNI) es una interfaz estándar de programación que


permite a los desarrolladores extender la funcionalidad de PowerBuilder. Utilizando PBNI,
usted puede crear extensiones para PowerBuilder—extensiones no visuales, visuales—e
integrar la máquina virtual de PowerBuilder en aplicaciones C++. Por medio de JNI, las
aplicaciones Java se pueden comunicar también con la PBVM.

• Destinos JSP:

PowerBuilder 9 provee un ambiente de desarrollo para creación de JSP fácil de usar que
automatiza varias tareas de desarrollo y permite el desarrollo de aplicaciones Web
compatibles con JSP 1.2. Un modelo de objetos JSP duplica —con muy pocas
modificaciones—la funcionalidad de servidor disponible anteriormente para destinos web
ASP y PowerDynamo, incluyendo la extensión de modelo de eventos 4GL para
aplicaciones PowerDynamo.

• Servicios Web para los clientes JSP:

Usted puede utilizar servicios Web en páginas JSP generando etiquetas (tags)
personalizadas para estos. PowerBuilder 9 provee un asistente que crea una etiqueta
personalizada con la información necesaria para llamar un servicio Web en un JSP.

• Servicios Web para los clientes Windows:

ENTRENAMIENTO EN P OWERB UILDER 9.0


Página 1 de 2
Ing. Ismael Castañeda Fuentes
Una aplicación PowerBuilder puede actuar como un cliente utilizando un servicio Web
(Web Service) que se accede por medio de Internet. Utilizando SOAP y WSDL, un
conjunto de funciones publicadas remotamente como una sola entidad pueden llegar a
hacer parte de su aplicación PowerBuilder. Un servicio Web acepta y responde solicitudes
enviadas por aplicaciones u otros servicios Web.

• Clientes EJB para servidores de aplicación de terceros:

Una aplicación PowerBuilder puede actuar como un cliente de un componente EJB que se
ejecuta en un servidor de aplicaciones que es compatible con J2EE. Se probaron los
servidores incluyen Sybase EAServer 4.1, IBM WebSphere 4.0, y BEA WebLogic 6.1 y
7.0.

• Mejoras en el control origen (Source control):

PowerBuilder 9 incluye características para mejorar la velocidad y desempeño de la


integración del control de orig en.

• El lenguaje OrcaScript:

OrcaScript permite escribir guiones (scripts) por lotes para procesar aplicaciones y
archivos PowerBuilder sin utilizar el ambiente de desarrollo de PowerBuilder.

• Soporte para Oracle 9i:

PowerBuilder 9 soporta pools de co nexiones, tipos de datos NCHAR o NVARCHAR2 y


tipos de datos LOB con Oracle9i.

• Importar y guardar XML y XSV:

Los métodos ImportFile, ImportString, e ImportClipboard para los objetos DataWindows


y Graph soportan como formatos de importación XML y CSV y el método SaveAs soporta
XML. En los painters DataWindow y Database también puede importar y guardar
utilizando estos formatos.

• Guardar como XSL-FO y PDF:

Basado en la habilidad de guardar datos como XML, PowerBuilder también puede


guardar los datos y presentación del DataWindow como un documento o cadena
utilizando Formato de Objetos XSL (XSL -FO) o Formato de Documentos Portables (PDF).

• Versiones DBCS de las funciones de cadena:

Ahora hay disponibles para ambientes BDCS versiones separadas de funciones de


cadenas basadas en caracteres. Los caracteres en ambientes DBCS pueden ser de un
único byte, doble byte, o mixtos, pero las funciones de cadena estándares retornan
datos de caracteres de un solo byte.

• Mejoras en el DataWindow:

Mejoras en la impresión, recuperación de DataWindows Hijos, Desplazamiento (scrolling)


en reportes de grupo.

• Mejoras en el depurador

ENTRENAMIENTO EN P OWERB UILDER 9.0


Página 2 de 3
Ing. Ismael Castañeda Fuentes
COMPONENTES DE UNA APLICACIÓN POWERBUILDER.

• Objetos.
Un objeto es una forma de comunicación con el usuario, por ejemplo una ventana o un menú.
Nombres de objetos PowerBuilder:
F Application object
F Window
F DataWindow
F Menu
F Global functions
F Queries
F Structures
F User objects
F Libraries
F Projects

• Eventos.
Un evento puede ocurrir cuando un usuario ejecuta una acción con el ratón, el teclado, por una
orden del lenguaje PowerScript de PowerBuilder o por el mismo sistema.

Algunos de los eventos más comunes son:


F Clic (clicked)
F Doble clic (DoubleClicked)
F Modificación (Modified)
F Abrir (Open)
F Cerrar (Close)
F Tomar el foco (GetFocus)
F Perder el foco (LoseFocus)
F Cambiar la selección (SelectionChanged)
w Scripts.
Un script es un conjunto de órdenes escritas en lenguaje PowerScript que se deben ejecutar al
ocurrir un evento.

COMPONENTES DE UNA VENTANA.


w Controles.
Un control es u n objeto colocado en una ventana.
Los controles son:
F CheckBox
F CommandButton
F DataWindow
F DropDownListBox
F DropDownPictureListBox
F EditMask
F Graph
F GroupBox
F HscrollBar
F Line
F ListBox
F ListView
F MultiLineEdit
F OLEcontrol
F OLECustomControl
F Oval
F Picture
F PictureButton
F PictureListBox
F RadioButton
F Rectangle
ENTRENAMIENTO EN P OWERB UILDER 9.0
Página 3 de 4
Ing. Ismael Castañeda Fuentes
F RichTextEdit
F RoundRectangle
F SingleLineEdit
F StaticText
F Tab
F TreeView
F UserObject
F VscrollBar
w Focus.
Identifica el lugar de la pantalla donde va a suceder la siguiente acción. Para establecer el foco
en un sitio deseado, el usuario puede:
F Mover con el ratón el apuntador a un control y hacer clic.
F Presionar la tecla del tabulador hasta el control deseado.
Un control puede perder el foco cuando el usuario:
F Hace clic en otro control.
F Hace clic en otra ventana donde no hay controles.
F Presiona la tecla del tabulador y pasa a otro control.
w Atributos.
Los objetos y controles tienen atributos que definen su:
F Apariencia.
F Comportamiento.

LENGUAJE POWERSCRIPT
Es un lenguaje de alto nivel basado en objetos con el cual se pueden construir scripts.
PowerScript tiene:
w Comandos, por ejemplo IF ... THEN.
w Funciones predefinidas para manipular objetos, números, textos, para procesar
fechas y datos de tiempo, imprimir reportes, ejecutar DDE (Dynamic Data
Exchange), manejar archivos; por ejemplo SHOW, MOVE, OPEN, MAX, HIDE.
w Las funciones regresan un valor (return value) que puede ser utilizado o ignorado.
w Proposiciones SQL, por ejemplo SELECT, INSERT, UPDATE.
w Variables:
F Locales en un script.
F A nivel de una ventana/objeto.
F Globales.
Convenciones aconsejadas por PowerBuilder para dar nombre a los objetos:

ENTRENAMIENTO EN P OWERB UILDER 9.0


Página 4 de 5
Ing. Ismael Castañeda Fuentes
Cuando se están creando los objetos, PowerBuilder sugiere un nombre para el objeto utilizando
el prefijo de la tabla anterior y un número. Ellos aconsejan cambiar este número por algo
significativo para el usuario que está elaborando el aplicativo.

ENTRENAMIENTO EN P OWERB UILDER 9.0


Página 5 de 6
Ing. Ismael Castañeda Fuentes
EJERCICIO PRÁCTICO

El ejercicio deben hacerlo de forma individual y presentarlo funcionando perfectamente,


desde ejecutable y desde PowerBuilder. En grupo deben presentar un informe, indicando
sus comentarios sobre este documento, errores encontra dos, sugerencias para mejorarlo
y utilidad al realizar el ejercicio.

Elaborar una Aplicación sencilla, que permita manipular información del personal de una
empresa así: a) Listar todos los empleados, b) Buscar los empleados que concuerden con el
nombre y/o el primer apellido digitado por el usuario, c) Buscar los empleados de un
determinado Departamento. Una vez obtenida la lista, al hacer la selección de un empleado ver
sus datos detallados. La aplicación también debe estar en capacidad de ejecutar las acciones de
impresión, adición, modificación y borrado de datos de empleados. Como un servicio adicional de
la Aplicación, se debe proporcionar una Calculadora que esté en capacidad de ejecutar las cuatro
operaciones aritméticas básicas: suma, resta, multiplicación y división de dos valores dados por
el usuario.

Estructura de la aplicación:

VENTANA
PRINCIPAL

Ventana para Ventana para Calculadora


Búsqueda Mantenimiento

Los pasos indica dos a continuación corresponden a un procedimiento que se puede seguir
utilizando PowerBuilder 9.0 y Sistema Operativo Windows 98 (de forma similar en Windows 95,
NT, 2000 y XP):
1. Entrar a Windows.

2. Escoger un directorio exclusivo para dejar todos los archivos del ejercicio
(recomendado).

3. Copiar en este directorio:


ü Tres (3) archivos tipo *.bmp
ü Tres (3) archivos tipo *.ico

4. Activar PowerBuilder.

ENTRENAMIENTO EN P OWERB UILDER 9.0


Página 6 de 7
Ing. Ismael Castañeda Fuentes
5. Crear un área de trabajo (workspace):

5.1. Crear una nueva aplicación:


ü En barra de herramientas F New F Workspace, o,
ü En menú F File F New F Workspace
5.2. Llenar los datos de la ventana “New Workspace”, así:
ü “Nombre de Archivo” Escribir el nombre del archivo donde va a quedar almacenado el
área de trabajo.
5.3. F “Guardar”. Automáticamente PowerBuilder genera un archivo con extensión .pbw, y se
muestra el área de trabajo en el árbol de sistemas (panel de la izquierda).

6. Establecer opciones del área de trabajo:


ü En menú F Tools F System Options F Workspaces asegurarse de que estén
seleccionadas las opciones Reopen Workspace on startup y Reload Pain ters when
opening workspace. F OK.

ENTRENAMIENTO EN P OWERB UILDER 9.0


Página 7 de 8
Ing. Ismael Castañeda Fuentes
7. Crear una aplicación:

7.1. Crear una nueva aplicación:


ü En barra de herramientas F New F Target F Application, o,
ü En menú F File F New F Target F Application
7.2. Llenar los datos de la ventana “Specify New Application and Library”, así:

ü “Application Name” Escribir el nombre del archivo donde va a quedar la Librería.


ü “Library” Seleccionar el directorio donde se van a dejar los archivos del ejercicio.
ü “Target” Seleccionar el directorio donde se van a dejar los archivos del destino.
Nota: un archivo de destino (target) puede contener varias librerías.
7.3. F “Finish”. Automáticamente PowerBuilder genera un archivo con extensión .pbl, otro con
extensión .pbt y una aplicación con el mismo nombre del archivo.

ENTRENAMIENTO EN P OWERB UILDER 9.0


Página 8 de 9
Ing. Ismael Castañeda Fuentes
Workspace

Target
Library
Application
Árbol de Sistema

Si se quieren colocar comentarios a la aplicación creada (y de la misma forma a la mayoría


de componentes),
ü Se presiona clic derecho sobre el nombre de la aplicación (o el componente) en el
árbol de sistema, se selecciona propiedades y se escriben los comentarios deseados
F OK, o,
ü En barra de herramientas F Open F Objects of Type: Applications
F Seleccionar el nombre de la aplicación F OK

ü F File F Save as F Seleccionar el archivo de librería F Guardar


ü F “Save Application” F Aparece nombre de la aplicación y directorio
seleccionado aquí se puede colocar otro nombre a la aplicación, entonces Power
Builder crea otra aplicación con el nombre actual) F Comments: Escribir un
comentario significativo relacionado con la aplicación F OK

ENTRENAMIENTO EN P OWERB UILDER 9.0


Página 9 de 10
Ing. Ismael Castañeda Fuentes
8. Árbol de sistema:
La ventana Árbol de sistema (System Tree) sirve como el centro de sus actividades de
desarrollo. Esta se utiliza para abrir, ejecutar, depurar y construir (build) sus destinos
(targets), y para realizar operaciones de programación arrastrando y soltando.
En esta se pueden visualizar y seleccionar: el área de trabajo (workspace), los destinos
(targets), las librerías .pbl existentes, los objetos respectivos, sus propiedades, eventos,
funciones y estructuras.

Árbol de
sistema

ENTRENAMIENTO EN P OWERB UILDER 9.0


Página 10 de 11
Ing. Ismael Castañeda Fuentes
9. Elaborar una ventana como la siguiente:

9.1. En barra de herramientas F New F PB Object F Window F OK.

9.2. Para manejar el objeto creado PowerBuilder 9.0 abrirá por omisión dos vistas básicas en
una ventana: “Layout” (donde podrá visualizar la forma del objeto) y “Properties”. Por
medio de unas solapas ubicadas en la parte inferior de las dos vistas básicas mencionadas
es posible acceder a otras vistas tales como script (en el diagrama aparece como open),
Event List, Control List; en este caso las propiedades de una ventana son agrupadas bajo
tres grupos de característica s: “General”, “Scroll”, “Toolbar” y “Other”.

ENTRENAMIENTO EN P OWERB UILDER 9.0


Página 11 de 12
Ing. Ismael Castañeda Fuentes
9.3. Mirar, comprobar y/o modificar características de la ventana:
Si se quieren observar y/o modificar las características de la ventana, situándose en la vista
de “Layout” y no está activa la vista de “Properties”, con el botón derecho F Properties...

9.3.1. Para la ventana “Window” en el tipo de características (solapa) “General” colocar:


ü Identificación o título deseado (“Title”: ICF – Pantalla para búsqueda)
ü Elementos activos (“Control Menu, Maximize Box, Minimize Box, ...)
ü Tipo de ventana (“Window Type”): popup!
En la serie de características “Other”
ü Dentro de “ Position” se puede colocar la ubicación y tamaño dentro de la pantalla

9.4. Colocar los objetos deseados dentro de la ventana y darle sus características.
9.4.1. Insertar el control CommandButton en la ventana, así:
ü En el menú: F Insert F Control F CommandButton
ü En barra de herramientas: F Control F CommandButton

ENTRENAMIENTO EN P OWERB UILDER 9.0


Página 12 de 13
Ing. Ismael Castañeda Fuentes
9.4.2. En la ventana, hacer clic en el sitio donde se desea ubicar el control seleccionado.
9.4.3. Mirar, comprobar y/o modificar las características del control (hay que tener seleccionado
el control deseado):
ü En barra de herramientas F Properties, o,
ü En la vista de “Properties”..., o
ü Con botón derecho dentro del control F Properties..., o
ü Doble clic dentro del control
9.4.4. En la vista de “Properties”, las características de un ComandButton están agrupadas en:
“General”, “Font” y “Other”. Dar al control CommandButton las características del control,
tales como:
ü Nombre del control (cb_salir).
ü Texto deseado dentro del control. (&Salir)
ü Características de aparición.
ü Características de las fuentes.
ü Posición dentro de la ventana.

ENTRENAMIENTO EN P OWERB UILDER 9.0


Página 13 de 14
Ing. Ismael Castañeda Fuentes
9.4.5. Grabar el trabajo adelantado (Guardar la ventana en la librería):
ü En barra de herramientas F Save, o
ü En menú F File F Save, o
ü En menú F File F Save as..., o
ü Ctrl + S
9.4.6. En la ventana “Save Window” escribir:
ü Nombre de la ventana (por ejemplo, w_icf_basica).
ü Un comentario.
9.4.7. F OK
9.4.8. Para ver cómo va quedando el diseño de la pantalla:
ü En barra de herramientas F Preview, o
ü En menú F Design F Preview, o
ü Ctrl + Shift + P

10. Elaborar una ventana como la siguiente:

ENTRENAMIENTO EN P OWERB UILDER 9.0


Página 14 de 15
Ing. Ismael Castañeda Fuentes
Esta ventana debe heredar las propiedades de la ventana anterior (ICF -Pantalla básica). Por
lo tanto se puede seguir un procedimiento similar, con las siguientes particularidades:
10.1. Cierre la ventana anterior y Cree la nueva ventana:
ü En el menú F File F Inherit... (si la ventana de la cual hereda está abierta esta
selección no funcionará)
ü En la ventana “Inherit From Window” seleccionar la ventana que da las características
a heredar.
ü F OK
10.2. Mirar y/o cambiar las características de la ventana heredada.
10.3. Añadir los otros controles mostrados en la figura (un CommandButton y un RadioButton).
10.4. Cambiar el texto del CommandButton heredado “&Salir” por “&Cancelar”.
10.5. Los controles deben quedar con las características de visible y enabled
10.6. Grabar el trabajo adelantado (Guardar la ventana en la librería; nombre sugerido:
w_icf_busqueda)
10.7. Ver cómo va quedando el diseño y si es necesario hacer las modificaciones que estime
convenientes.

11. Elaborar una ventana como la siguiente:

Esta ventana debe heredar las propiedades de la ventana anterior (ICF - Pantalla básica
para búsqueda), con las siguientes particularidades:
11.1. Mirar y/o cambiar las características de la ventana heredada.
Cambiar el texto del RadioButton heredado “&Otro” por “&Todos”
11.2. Añadir los otros controles mostrados en la figura:
ü Dos SingleLineEdit, uno para Nombre y otro para Primer Apellido.
ü Tres StaticText: “Nombre”, “Primer Apellido” y “Departamento”.
ü Un DropDownListBox, con la lista de los siguientes Departamentos:
• Contabilidad
• Personal
• Ventas
• Mercadeo
• Desarrollo
• Recursos
• Administración
• Sistemas
En el tipo de características (solapa) “General” colocar: ShowList y VScrollBar.
ENTRENAMIENTO EN P OWERB UILDER 9.0
Página 15 de 16
Ing. Ismael Castañeda Fuentes
Agregar la lista de Departamentos, en la vista “Properties” del DropDownListBox en el
grupo de características: “Items”.

ü Dos RadioButton, para “Por Nombre” y “Por Departamento”.


ü Un GroupBox, para “Buscar”.
ü Un PictureButton para Imprimir.
Escoger de la lista de archivos *.BMP una figura para el caso que esté disponible el
servicio de impresión y otra figura para el caso que no esté disponible.
ü Un DataWindow, identificado como “Datos de los Empleados”.
Allí se mostrarán los resultados de consulta a la base de datos (posteriormente se harán
las asociaciones necesarias con los DataWindows object que acceden a la base de datos).
11.3. Dar las demás características deseadas, tanto a la ventana como a los controles.
11.4. Grabar el trabajo adelantado. (nombre sugerido: w_icf_pordepto_nom)
11.5. Ver cómo va quedando el diseño y si es necesario, hacer las modificaciones que estime
convenientes.

12. Elaborar una ventana como la siguiente:

ENTRENAMIENTO EN P OWERB UILDER 9.0


Página 16 de 17
Ing. Ismael Castañeda Fuentes
El objetivo es tener una calculadora en la cual se va a obtener un resultado aritmético dados
dos operandos.
12.1. Crear la ventana y colocar sus características (ventana tipo popup).
12.2. Colocar los objetos y sus características, así:
ü Dos SingleLineEdit, para primer y segundo operando.
ü Cuatro StaticText, uno para colocar el resultado de la operación aritmética (el cual no
tendrá texto) y tres para colocar los textos: “Primer Operando”, “Segundo Operando”
y “Resultado”.
ü Cuatro CommandButton, uno para cada operación: suma, resta, multiplicación y
división.
ü Dos Rectangle, uno para encerrar el resultado y otro para encerrar los
CommandButton de las operaciones aritméticas.
12.3. Grabar el trabajo adelantado.
12.4. Ver cómo va quedando el diseño y (si es necesario) hacer las modificaciones que estime
convenientes.

13. Colocar el punto de entrada del aplicativo (inicio de ejecución). Inicialmente


direccionar directamente a la Calculadora.
13.1. En el árbol de sistema: Presionar doble clic sobre la aplicación, o, barra de herramientas
F Open F Objects of Type: Applications Seleccionar el nombre de la aplicación
F OK
ü Al abrir el objeto Application, PowerBuilder abre por omisión la vista “Script”, con el
método open seleccionado.
13.2. Para programar el evento inicial de la aplicación, escribir el programa (script) para abrir la
ventana con el cual inicia el aplicativo; en esta primera etapa será la ventana donde está el
diseño de la calculadora.
ü En la vista de “Script” de la aplicación seleccionar el evento “open” (abrir), si no
esta ba ya seleccionado.
ü Elaborar un programa asociado con el evento open, similar al siguiente:

// open icf_1

// Punto inicial del aplicativo.


open (w_icf_calculadora) //Nombre de la ventana que se desea activar.

ENTRENAMIENTO EN P OWERB UILDER 9.0


Página 17 de 18
Ing. Ismael Castañeda Fuentes
Sugerencia: Cuando se está escribiendo el programa y se necesita el nombre de un
objeto o una variable, este nombre se puede traer directamente (no hay necesidad de
digitarlo) desde el árbol de sistema (system tree) arrastrando y soltando o utilizando las
ventana clip, la cual se despliega por medio de barra de herramientas F Window
F Clip, o utilizando las opciones “Paste Global”, “Paste Shared”, “Paste Instance”,
“Paste Window”, “Paste Object” y “Paste Argument” de la barra de herramientas
haciendo la selección apropiada. También se pueden utilizar las otras facilidades que se
proporcionan a través de las barras de herramientas y opciones de los menús.
13.3. Compilarlo (paso opcional):
ü En barra de herramientas: F Compile, o
ü En menú: F Edit F Compile, o
ü Ctrl + L

13.4. Volver a la ventana principal d e PowerBuilder:


ü En barra de herramientas: F Close
ü Si no hizo el paso de compilación, confirmar (compilar y grabar) o descartar los
cambios realizados, en la ventana de diálogo “Application”: F Sí, o F No, o
F Cancelar.

14. Probar que la aplicación se puede ejecutar:


ü En barra de herramientas: F Run, o
ü En menú: F File F Run, o
ü Ctrl + R

15. Escribir las demás acciones que se desean tener al utilizar la calculadora.
ENTRENAMIENTO EN P OWERB UILDER 9.0
Página 18 de 19
Ing. Ismael Castañeda Fuentes
Se sugiere que la calculadora efectúe por lo menos las operaciones aritméticas básicas
(suma, resta, multiplicación y división) y permita algunas facilidades de manejo de
memoria.
15.1. Seleccionar la ventana de la calculadora.
15.2. Elaborar un programa, asociado con el evento modified (modificar), del control que recibe
el primer operando, similar al siguiente:
// modified sle_operando1
If not IsNumber(This.text) Then
MessageBox ("Error", "Se debe dar un número", StopSign!, OK!)
This.text = ""
This.SetFocus()
End if
15.3. Para el control que recibe el segundo operando, escrib ir un programa similar al que recibe
el primer operando.
15.4. Elaborar un programa, asociado con el evento clicked, del botón que va a ejecutar la
operación de suma, similar al siguiente:
// clic cb_suma
Double oper1, oper2, oper3

oper1 = Double(sle_operando1.text)
oper2 = Double(sle_operando2.text)
oper3 = oper1 + oper2
st_resultado_n.text = String(oper3)
15.5. Elaborar programas similares para las operaciones de resta, multiplicación y división.
15.6. Dejar el resultado en blanco, cuando se pase el curs or al campo que recibe el primer o
segundo operando (programar el evento getfocus: st_resultado_n.text = “”).
15.7. Probar la aplicación.

16. Seleccionar el botón Salir de la ventana básica: w_icf_basica y asociarle un


programa que cierre la ventana (programar el evento clicked), con un programa
como el siguiente:
// clic cb_salir
If MessageBox("Salir", "Cerrar esta ventana?", Question!, YesNo! ) = 1 then
Close( Parent )
End If
17. Correr la ventana para probar su funcionamiento:
ü En barra de herramientas F File F Run/Preview F Objects of Type: Windows
F Object: nombre de la ventana, en este caso: w_icf_basica F OK

18. Seleccionar la ventana donde se pueden hacer búsquedas.


18.1. Seleccionar el control “Todos” (RadioButton) y elaborar un programa para que cuando este
control sea el seleccionado, desactive los controles que piden datos. Puede ser un
programa como el siguiente:
// Ventana: w_icf_pordepto_nom, Objeto: rb_todos, Heredado de:
// w_icf_busqueda:rb_otro
// Evento: Clicked

ddlb_departamento.visible = false
sle_nombre.visible = false
sle_primer_apellido.visible = false
st_nombre.visible = false
st_primer_apellido.visible = false
st_departamento.visible = false
dw_datos_empleados.visible = false
18.2. Correr la ventana para probar su funcionamiento.
18.3. Seleccionar el control “Por Nombre” (RadioButton). Escribir un programa para que active
los campos que piden los datos de nombre. Puede ser un programa como el siguiente:
// Ventana: w_icf_pordepto_nom, Objeto: rb_nombre
// Evento: Clicked

ENTRENAMIENTO EN P OWERB UILDER 9.0


Página 19 de 20
Ing. Ismael Castañeda Fuentes
ddlb_departamento.visible = false
sle_nombre.visible = true
sle_primer_apellido.visible = true
st_nombre.visible = true
st_primer_apellido.visible = true
st_departamento.visible = false
dw_datos_empleados.visible = false
18.4. Correr la ventana para probar su funcionamiento.
18.5. Seleccionar el control “Por Departamento” (RadioButton). Escribir un programa para que
active el control que pide el dato de Departamento. Puede ser un script como el siguiente:
// Ventana: w_icf_pordepto_nom, Objeto: rb_departamento
// Evento: Clicked

ddlb_departamento.visible = true
sle_nombre.visible = false
sle_primer_apellido.visible = false
st_nombre.visible = false
st_primer_apellido.visible = false
st_departamento.visible = true
dw_datos_empleados.visible = false
18.6. Correr la ventana para probar su funcionamiento.

19. Crear una función que sirva para ejecutar las cuatro operaciones básicas
aritméticas: sumar, restar, multiplicar y dividir.
19.1. En barra de herramientas o en el menú seleccionar: F New F PB Object
F Function.
19.2. Llenar los datos solicitados:
19.2.1. Valor a retornar (Return Type): string.
19.2.2. Nombre de la función.
19.2.3. Dar los argumentos: primer operando (“arg_operando1”, tipo string, paso por valor),
segundo operando (“arg_operando2”, tipo string, paso por valor) y operador
(“arg_operador”, tipo integer, paso por valor)

20. Escribir las instrucciones que van a conformar la función. Puede ser un programa
como el siguiente:
// Nombre de la funcion: f_operaciones
// Objetivo: Hacer un cálculo aritmético
// Parámetro 1: Primer operando
// Parámetro 2: Segundo operando
// Parámetro 3: Operación a realizar así:
// 1 Sumar
// 2 Restar
// 3 Multiplicar
// 4 Dividir
Double oper1, oper2, oper3

IF arg_operando1 = "" OR arg_operando2 = "" THEN


Messagebox ("Error","Los operandos deben ser aritméticos",StopSign!, OK!)
return ""
END IF
oper1 = Double(arg_operando1)
oper2 = Double(arg_operando2)
Choose Case arg_operador
Case 1
oper3 = oper1 + oper2
Case 2
oper3 = oper1 - oper2
Case 3
oper3 = oper1 * oper2
Case 4

ENTRENAMIENTO EN P OWERB UILDER 9.0


Página 20 de 21
Ing. Ismael Castañeda Fuentes
If oper2 = 0 Then
Return "División por cero"
Else
oper3 = oper1 / oper2
End If
Case else
Return "Operación no válida"
End Choose
Return String (oper3)

21. Cambiar los programas asociados con los botones de operaciones de la ventana de
la calculadora para que utilicen la función anterior.
21.1. Para el botón de Resta (-) puede ser un programa como el siguiente (para el evento clic):
// clic para cb_resta
st_resultado_n.text = f_operaciones ( sle_operando1.text, sle_operando2.text, 2 )
21.2. Proceder de manera similar para la suma, multiplicación y división.
21.3. Probar su funcionamiento.
21.4. Comprobar el funcionamiento de la Calculadora para valores con punto decimal. En caso
que no funcione, hacer las modificaciones necesarias.

22. Crear una base de datos que implemente lo mostrado en la siguiente figura:

ENTRENAMIENTO EN P OWERB UILDER 9.0


Página 21 de 22
Ing. Ismael Castañeda Fuentes
22.1. Crear localmente una nueva base de datos. Dejar el archivo físico en el directorio donde se
están dejando todos los archivos de este ejercicio:
ü En barra de herramientas: F Database, o,
ü En el menú: F File F New F Database F Database Painter, o,
ü Shift + F7

ü Se crea una base de datos local:


w En Database Painter aparece la vista de “Objects”, en el árbol Installed
Database Interfaces F ODB ODBC F Utilities F Create ASA Database.

ENTRENAMIENTO EN P OWERB UILDER 9.0


Página 22 de 23
Ing. Ismael Castañeda Fuentes
ü Aparece la ventana “Create Adaptive Server Anywhere Database”, se deben llenar los
datos allí pedidos:
w Database Name: Camino y nombre del archivo en Windows donde se va a
guardar el archivo físico. Se sugiere:
F Browse,
Llegar al directorio deseado, y
Dar el nombre al archivo.
w User ID: Identificación del usuario. Valor por omisión: DBA
w Password: Clave. Valor por omisión: SQL.
w F OK

ENTRENAMIENTO EN P OWERB UILDER 9.0


Página 23 de 24
Ing. Ismael Castañeda Fuentes
23. Es bueno comprobar lo siguiente:
ü En el árbol Installed Database Interfaces F ODB ODBC F Utilities F ODBC
Administrator, o,
ü En Windows Inicio F Configuración F Panel de Control F Fuentes de datos
ODBC (32 bits):
w En ventana “Administrador de Orígenes de Datos ODBC” (ODBC Data Source
Administrator): F DSN de usuario (User DSN) en donde aparece ahora una
nueva entrada ODBC con el nombre del perfil creado ante la base de datos,
cuyo controlador será Adaptive Server Anywhere 8.0.
w Al dar doble clic sobre dicha entrada ODBC se aprecia la ventana “ODBC
Configuration for Adaptive Server Anywhere”: en el tab de ODBC aparece el
nombre de la fuente de datos (“Data Source Name”); en el tab de Login los
datos proporcionados de User ID y Password; y en el tab de Database el
nombre y la ubicación de la base de datos creada.

ENTRENAMIENTO EN P OWERB UILDER 9.0


Página 24 de 25
Ing. Ismael Castañeda Fuentes
ü Retornando a PowerBuilder, en la vista de “Database Painter” o en la vista de
“Database Profiles” (las dos opciones de la barra de herramientas) se encuentra
ahora la conexión activa (indicada por un chulo sobre el perfil) a la base de datos
creada. Al dar con el ratón doble clic sobre el perfil seleccionado o clic derecho
F Properties: se puede ver la ventana “Database Profile Setup – ODBC”:
w En la solapa Connection se encuentra: el nombre de la fuente de datos (“Data
Source”) y del perfil (“Profile Name”), además de los datos de User ID y
Password; en la solapa Preview se observa la sintaxis de la conexión a la
base de datos perteneciente al perfil creado.

ENTRENAMIENTO EN P OWERB UILDER 9.0


Página 25 de 26
Ing. Ismael Castañeda Fuentes
En caso de algún problema, hay que arreglarlo o sino la base de datos queda
inalcanzable. En casos extremos: borrar la base de datos recién creada, revisar la
Configuración ODBC, revisar los Profile, y ver las entradas que puedan estar causando
conflicto (si es del caso borrarlas F Remove).

24. Crear las tablas (Estando la base de datos activa) Definir las columnas y sus
características: nombre, tipo de datos, aceptación o no de nulos, valor por
omisión.
Colocar letreros significativos para encabezamientos de columnas, rótulos identificadores de
campos y comentarios a nivel de tabla y columna. Para ello:
ü En la barra de herramientas F Create Table, o,

ü Conectarse a la base de datos, clic para desplegar sus componentes dentro de ellos
se encuentran Tables y me diante clic derecho con el ratón F New Table F Definir
las columnas F Save Table as

25. Seleccionada una tabla: definir la llave primaria, crear los índices y llenar datos.
ü Definir llave primaria: clic derecho sobre la cualidad Primary key F New Primary
key
ü Crear índices: clic derecho sobre la cualidad Index F New Index
ü Crear llaves foráneas: clic derecho sobre la cualidad Foreign key F New Foreign
key, en la solapa General F Columns seleccionar la columna que es llave foránea y
en la solapa Primary Key seleccionar la tabla y las columnas que están asociadas con
la llave foránea.
ü Llenarla de datos:
w Clic derecho sobre la tabla F Edit Data (grid, tabular o freeform)

ENTRENAMIENTO EN P OWERB UILDER 9.0


Página 26 de 27
Ing. Ismael Castañeda Fuentes
w F Insert Row
w Digitar los datos
w En Barra de Herramientas F Save Changes

ü Una vez creadas y llenas todas las tablas de la base de datos cerrar la vista de
“DataBase Painter”, en barra de herramientas F Close o, en el menú, F File
F Close.
ü Si se le quiere hacer un cambio posterior a la tabla es posible posicionándose sobre la
tabla y mediante clic derecho con el ratón escoger la opción F Alter table.

26. Preparar el sitio donde se van a mostrar los datos de los empleados. Para ese fin,
definir los DataWindows Object necesarios. Como primer paso definir un DataWindows que
presente en forma tabular los siguientes datos: Nombre y Apellido del empleado y nombre
del Departamento donde trabaja. La salida se debe presentar en orden alfabético por
Apellido del empleado. Se puede seguir un procedimiento similar al siguiente:
26.1. En barra de herramientas : F New F DataWindow F Tabular F OK, o,
En menú: F File F New F DataWindow F Tabular F OK

26.1.1. En la ventana “Choose Data Source for Tabular DataWindow” (selección de la fuente de
datos para el DataWindow escogido): F SQL Select F Next
26.2. En ventana “Select Tables”, seleccionar las tablas Empleado y Departamento F Open
26.3. En tabla Empleado: Código del empleado (id), Nombre del empleado, Apellido del
empleado.
26.4. En tabla Departamento: F Nombre del departamento
26.5. En la solapa “Sort”: è Apellido del empleado (hacer “drag and drop”).

ENTRENAMIENTO EN P OWERB UILDER 9.0


Página 27 de 28
Ing. Ismael Castañeda Fuentes
Si se quiere cambiar algo en la sintaxis del código SQL, esto se puede ver con la opción del
menú F Design F Convert To Syntax.
26.6. Pasar a diseño de la salida: En barra de herramientas: F Return
26.7. En la ventana “Select Color and Border Settings” se escogen las opciones de borde y color
para el DataWindow. En la ventana “Ready to Create Tabular DataWindow” aparecen las
selecciones dadas con opción de Regresar (para cambiar alguna opción) o Finalizar.
26.8. A continuación aparece la vista de diseño “Design” del DataWindow, y la de vista previa
“Preview”, acompañadas (por omisión) de la vista de propiedades “Properties” y, en la
parte inferior, de la especificación de columnas, datos y la lis ta de controles “Control List”,
aparecerán los datos de las tablas seleccionados. En la vista de diseño se pueden colocar
encabezados apropiados, cambiar color de fondo y otras cuantas propiedades. Tener en
cuenta de que a pesar de haber seleccionado el código del empleado, no se desea en la
salida!!

ENTRENAMIENTO EN P OWERB UILDER 9.0


Página 28 de 29
Ing. Ismael Castañeda Fuentes
ü Si se quiere volver a la ventana de “Select” correspondiente, escoger en barra de
herramientas F SQL (icono que dice SQL)

26.9. Hacer modificaciones al diseño.


26.10. Grabar el trabajo adelantado: En barra de herramientas: F Save
26.11. En ventana “Save DataWindow”:
26.12. Colocar el nombre de la ventana (d_...). Ejemplo: d_lista_empleados
26.13. Escribir un comentario significativo
26.14. F OK
26.15. Ver resultado del diseño. En el menú File F Run/Preview F Objects of Type:
DataWindows F Object: nombre de la DataWindow.

ENTRENAMIENTO EN P OWERB UILDER 9.0


Página 29 de 30
Ing. Ismael Castañeda Fuentes
26.16. Probar realizando inserciones, borrados y modificaciones a la base de datos.

27. De manera similar elaborar un DataWindow donde se muestre el listado de


personas, dado el código del Departamento donde trabajan.
27.1. Seguir un procedimiento similar a la creación del anterior DataWindow. Adicionalmente, en
la ventana donde se seleccionan campos de las tablas (donde también aparecen las
solapas Sort, Where, Group, Having, Compute y Syntax), dar la información del
argumento:
27.1.1. En menú: F Design F Retrieval Arguments...
27.1.2. En ventana “Specify Retrieval Arguments”: escribir el nombre del argumento (por
ejemplo departamento) y seleccionar el tipo de dato (por ejemplo Number)
27.1.3. F OK
27.2. En carpeta Where, especificar la condición deseada, por ejemplo:

28. Elaborar un tercer DataWindow que muestre los empleados que tengan el Nombre
y/o el Apellido digitado por el usuario.
28.1. Seguir un procedimiento similar a la elaboración del DataWindow anterior. En este caso es
necesario especificar dos argumentos (por ejemplo: nombre de tipo String y apellido de
tipo String).
28.2. F OK
28.3. En carpeta Where: especificar la condición deseada, por ejemplo:

29. Elaborar un DataWindow que muestre toda la información contenida en la base de


datos relacionada con un empleado. En este caso el argumento de búsqueda puede ser
el código del empleado y el estilo de presentación puede ser Freeform.

ENTRENAMIENTO EN P OWERB UILDER 9.0


Página 30 de 31
Ing. Ismael Castañeda Fuentes
30. Cambiar el Punto de Inicio del Aplicativo, para que active la ventana que muestra
las opciones de búsqueda de personal y adicionalmente conecte la base de datos
que se va a utilizar. Elaborar un programa similar al siguiente (evento abrir la
aplicación):
// open icf_1
// Punto inicial del aplicativo.
// ------------------------------------------------------------------------------------------------------------------

// CONEXIÓN AL MOTOR DE BASE DE DATOS


// Conexión a un motor de Base de Datos SQL Anywhere con ODBC
sqlca.DBMS = "ODBC"
sqlca.DbParm="ConnectString='DSN=Entrenamiento;UID=dba;PWD=sql'"

MessageBox ("Motor de Base de Datos conectado:",sqlca.dbparm)


connect;

// Prueba para ver si quedó conectado


if sqlca.sqlcode <> 0 then
MessageBox ("No se pudo Conectar a la Base de Datos", &
"Mensaje enviado por el sistema:~n~r'"+sqlca.sqlerrtext+"'")
return
end if
// ------------------------------------------------------------------------------------------------------------------

open (w_icf_pordepto_nom)
//Nombre de la ventana que se desea activar, en este caso la de búsqueda

31. Correr la aplicación y comprobar que funciona el nuevo punto de entrada.

32. En la ventana donde se presentan las opciones de búsqueda, programar el botón


de “Buscar” para que de acuerdo con la selección hecha (Todos, Por Nombre o Por
Departamento), muestre el resultado de la búsqueda.
32.1. Seleccionar el evento clic del botón Buscar y elaborar un programa como el siguiente:
// clic para cb_buscar
IF rb_otro.checked THEN
// Seleccionado todos
dw_datos_empleados.visible=true
dw_datos_empleados.dataobject='d_lista_empleados'
dw_datos_empleados.SetTransObject(SQLCA)
dw_datos_empleados.retrieve ()
END IF

IF rb_nombre.checked THEN
// Seleccionado Por Nombre
dw_datos_empleados.visible=true
dw_datos_empleados.dataobject='d_empleados_dado_nombre'
dw_datos_empleados.SetTransObject(SQLCA)
dw_datos_empleados.retrieve (sle_nombre.text,sle_primer_apellido.text)
END IF

IF rb_departamento.checked THEN
// Seleccionado Por Departamento
dw_datos_empleados.visible=true
dw_datos_empleados.dataobject='d_empleados_depto'
dw_datos_empleados.SetTransObject(SQLCA)
// Obtener el dato numérico xxx de la instrucción para pasárselo como entrada al
// datawindow:
dw_datos_empleados.retrieve(DOUBLE(ddlb_departamento.selectitem(
ddlb_departamento.text,1)))
END IF
32.2. Correr la aplicación y comprobar su correcto funcionamiento.

ENTRENAMIENTO EN P OWERB UILDER 9.0


Página 31 de 32
Ing. Ismael Castañeda Fuentes
33. Programar el evento doble click “doubleclicked” para el DataWindows Control de la
ventana que permite búsqueda. Por ejemplo:
// doble clic para dw_datos_empleados

integer l_codigo, l_casos

IF dw_datos_empleados.dataobject='d_lista_empleados' OR &
dw_datos_empleados.dataobject='d_empleados_dado_nombre' OR &
dw_datos_empleados.dataobject='d_empleados_depto' THEN

l_codigo=GetItemNumber(row,1) //Supone que en los DataWindows la


//primera Columna corresponde
// al código del trabajador!!!!!!!!!!!!
dw_datos_empleados.d ataobject='d_detalle_empleado'
dw_datos_empleados.SetTransObject(SQLCA)
l_casos=dw_datos_empleados.retrieve (l_codigo)

IF l_casos > 0 THEN


dw_datos_empleados.retrieve (l_codigo)
ELSE
MessageBox ("De la Base de Datos","El empleado no tiene
tareas asignadas")
w_icf_pordepto_nom.cb_buscar.postevent(Clicked!)
END IF
END IF
34. Crear una ventana, que sea el nuevo punto de entrada y exhiba en menús las
posibilidades que presenta el aplicativo, ver las siguientes tres figuras:

34.1. Para hacer el menú, se puede seguir un procedimiento similar al siguiente:


34.2. En Barra de herramientas o en menú: F New F PB Object F Menu
34.3. Crear los menús y submenús, junto con sus características, para ello:
ü En el menú F Insert F Submenu item, o,
ü Ctrl+Shift+S, o,
ü Click derecho con el ratón sobre untitled0 en la vista “untitled0” activa y seleccionar:

ENTRENAMIENTO EN P OWERB UILDER 9.0


Página 32 de 33
Ing. Ismael Castañeda Fuentes
F Insert Submenu Item
ü Si desea colocar separadores entre los submenús como aparece en las figuras, en
“Properties” F General del submenú: colocar en Text: “-“ y seleccionar la opción
Default.
34.4. En barra de herramientas: F Save
34.5. En ventana “Save Menu”: Dar Nombre y Comentarios.

35. Escribir los programas asociados con el evento clic para cada una de las opciones
de los menús, por ejemplo:
35.1. Para: F Calculadora
// click m_servicios.m_calculadora
open ( w_icf_calculadora )

35.2. Para: F Terminar


// click m_servicios.m_terminar

If MessageBox("Salir","Salir del aplicativo?",Question!,YesNo!)=1 then


Close( ParentWindow ) // Cerrar la ventana donde se encuentra el menu
End If //No toma accion en caso negativo
35.3. Para: F Buscar F Todos
// Click m_personal.m_buscar.m_todos

open ( w_icf_pordepto_nom)
w_icf_pordepto_nom.rb_otro.setfocus()
w_icf_pordepto_nom.cb_buscar.postevent(Clicked!)

ENTRENAMIENTO EN P OWERB UILDER 9.0


Página 33 de 34
Ing. Ismael Castañeda Fuentes
35.4. Para: F Buscar F Por Nombre
// Clic m_personal.m_buscar.m_pronombre

open ( w_icf_pordepto_nom)
w_icf_pordepto_nom.rb_nombre.setfocus()
35.5. Para: F Buscar F Por Departamento
// Clic m_personal.m_buscar.m_pordepto

open ( w_icf_pordepto_nom)
w_icf_pordepto_nom.rb_departamento.setfocus()

36. A la nueva ventana creada (w_aplicativo_entrenamiento) en la vista de


“Properties” F General: colocar nombre, asociar el menú recién elaborado en
MenuName, seleccionar un icono en Icon (desde que los iconos e imágenes estén
en la misma ruta en que se encuentra el aplicativo, no hay necesidad de dejarle la
ruta, esto para mayor portabilidad de equipo a equipo).

37. Modificar el punto de Inicio para arranque con la ventana recién diseñada.

38. Agregar facilidades de menú a la ventana de la calculadora, ver ejemplo presentado


en las siguientes tres gráficas:

39. Escribir los programas asociados con el evento clic para cada una de las opciones
de los menús, por ejemplo:
39.1. Para: F Archivo F Cerrar Ventana
// click m_archivo.m_cerrarventana
Close( ParentWindow )

ENTRENAMIENTO EN P OWERB UILDER 9.0


Página 34 de 35
Ing. Ismael Castañeda Fuentes
39.2. Para: F Archivo F Salir del Aplicativo
// click m_archivo.m_salirdelaplicativo

Close ( w_aplicativo_entrenamiento ) //Ventana principal del aplicativo


39.3. Para: F Editar F Borrar Todo
// click m_editar.m_borrartodo

w_icf_calculadora.sle_operando1.text = ""
w_icf_calculadora.sle_operando2.text = ""
w_icf_calculadora.st_resultado_n.text = ""
39.4. Para: F Editar F Resultado a Memoria
// click m_editar.m_resultadoamemoria

// Objetivo: Llevar el resultado al clipboard


clipboard ( w_icf_calculadora.st_resultado_n.text )
39.5. Para: F Editar F Memoria a Operando 1
// clic m_editar.m_memoriaaoperando1

// Copia el contenido del clipboard al Primer Operando


w_icf_calculadora.sle_operando1.text = clipboard ( )
39.6. Para: F Ayuda F Temas
// clic m_ayuda.m_temas

ShowHelp ( "C:\Archivos de programa\Sybase\PowerBuilder 9.0\Help\pbhlp90.hlp", index! )

40. Elaborar un ejecutable de la aplicación.


40.1. Crear un objeto proyecto. Este objeto permite crear el archivo ejecutable de la aplicación.
40.1.1. En barra de herramientas : F New F Project F Application Wizard F OK, o,
En menú: F File F New F Project F Application Wizard F OK

40.1.2. F Next
40.1.3. Si no está seleccionado el archivo pbl correcto seleccionarlo F Next
40.1.4. Escribir el nombre del proyecto, o utilizar el por defecto F Next
40.1.5. Escribir la dirección y el nombre del archivo ejecutable que se generará F Next
40.1.6. Asegurarse de que la opción Incremental Build esté seleccionada F Next

ENTRENAMIENTO EN P OWERB UILDER 9.0


Página 35 de 36
Ing. Ismael Castañeda Fuentes
40.1.7. Asegurarse de que la opción No, do not generate machine code esté seleccionada
F Next
Nota: la opción No, do not generate machine code se recomienda mientras el aplicativo
esté en desarrollo. La generación definitiva se recomienda hacerla con Yes, generate
machine code EXE and DLLs.
40.1.8. F Next
40.1.9. Llene la información de versión (y copyright) del aplicativo F Next
40.1.10. Verifique que la información ingresada sea correcta F Finish
40.1.11. PowerBuilder crea un objeto Project para su aplicación y lo muestra en la vista
Project:

40.1.12. Cerrar la vista Project.


40.2. Crear el archivo ejecutable
En barra de herramientas : F Deploy Workspace, o,
En menú: F Run F Deploy Workspace

41. Salir de PowerBuilder.

42. Correr desde Windows el ejecutable que contiene el aplicativo.

ENTRENAMIENTO EN P OWERB UILDER 9.0


Página 36 de 37
Ing. Ismael Castañeda Fuentes
43. Crear una ventana como la siguiente:

El DropDown
DataWindow es útil en
caso de que se
requiera hacer
referencia a datos de
otras tablas.

Última Fila

Siguiente Fila

Anterior Fila

Primera Fila

En esta ventana se utilizará un nuevo control (TabControl), y el DropDown DataWindow.


La estructura de las páginas Departamentos y Niveles es la misma.
ENTRENAMIENTO EN P OWERB UILDER 9.0
Página 37 de 38
Ing. Ismael Castañeda Fuentes
43.1. Crear una nueva ventana:
ü En barra de herramientas F New F PB Object F Window, o,
ü En menú F File F New F PB Object F Window
Con el botón derecho sobre la nueva ventana, modificar las propiedades de la
ventana “Properties”:
ü Window Type: Popup!.
ü Las opciones Resizable y MaxBox no deberán seleccionarse.
43.2. Insertar un control Tab en la ventana y darle el tamaño adecuado.
ü En el menú Insert F Control F Tab, o,
ü En la barra de herramientas F Create Tab Control
Seleccionar el control insertado y hacer click con el botón derecho del mouse en el área
superior que no está ocupada por el TabPage (Cada una de las páginas del control Tab
recibe este nombre). En las propiedades generales del tabpage: “Properties”
F General:
ü Name: tab_actualizaciones
ü Seleccionar Bold Selected Text (El texto de la página seleccionada se muestra en
negrilla)
ü OK
43.2.1. Hacer click con el botón derecho dentro de la primera página (la que tiene el texto none)
y elegir propiedades generales, “Properties” F Genera l:
ü Name: tabpage_empleados
ü Tab Text: Empleados
ü OK
43.2.2. Insertar los demás controles en la ventana (como lo muestra la figura)
ü Un DataWindow control (se usa el botón que se encuentra en la barra de
herramientas junto con los demás controles. No confundir con el botón de
DataWindow Object que se encuentra en la barra de herramientas superior o
PowerBar).En las propiedades del nuevo DataWindow elegir Name:
dw_act_empleados y seleccionar VscrollBar.
ü Los botones Nuevo (cb_nuevo), Borrar (cb_borrar), Actualizar (cb_actualizar), Cargar
Datos (cb_cargar).
ü Los botones para desplazarse por las filas del DataWindow: Primero (cb_primero),
Siguiente (cb_siguiente), Anterior (cb_anterior), Ultimo (cb_ultimo).
43.2.3. Guardar el trabajo: File F Save. El nombre de la nueva ventana será
w_actualiz aciones.
43.2.4. Modificar la opción actualizar del menú, para que se abra la nueva ventana:
ü En la barra de herramientas F Open F Objects of Type: Menus.
ü Seleccionar el menú ya realizado (p.ej. m_entrenamiento) F OK
ü Seleccionar la opción Actualizar en la ventana de edición del menú.
ü Oprimir el botón Script en la barra de herramientas
ü Escribir: open(w_actualizaciones)
ü Guardar las modificaciones hechas al menú.
43.2.5. Correr la aplicación y probar el funcionamiento del menú y la nueva ventana.
43.2.6. Crear un DataWindow Object en el que se relacionen el código y nombre de los
departamentos.
ü En la barra de herramientas F New F DataWindow: Grid
w Data Source F SQL Select F Next
ü En la ventana Select Tables seleccionar la tabla departamento. F Open
ü Seleccionar las columnas código de departamento (depto_id) y nombre de
departamento (depto_nombre).
ü Pasar a diseño de salida o vista de diseño: F Return
ü Seleccionar colores y bordes F Aceptar selecciones F Finalizar
ü Colocar los encabezados apropiados.
ü File F Save. En la ventana Save DataWindow:
w Name: ddd_depto (será utilizado como DropDownDataWindow)
w OK
w Cerrar la ventana de edición del DataWindow
ENTRENAMIENTO EN P OWERB UILDER 9.0
Página 38 de 39
Ing. Ismael Castañeda Fuentes
43.2.7. Crear un DataWindow Object para actualizar los datos relacionados con los empleados.
ü En la barra de herramientas F New F DataWindow: Grid
w Data Source F SQL Select F Next
ü En la ventana Select Tables seleccionar la tabla Empleado F Open
ü Seleccionar todas las columnas de la tabla empleado.
ü Pasar a diseño de salida o vista de diseño: F Return
ü Seleccionar colores y bordes F Aceptar selecciones F Finalizar
ü Elegir “Properties” (con el botón derecho sobre el DataWindow, vista de diseño)
w En la página General: Color F ButtonFace
ü Para los encabezados de todas las columnas, en la página general:
Border F Raised
Text F modificar el texto
ü Para la columna emp_depto_id (código de departamento): Elegir “Properties” :
w En la página General: Borde F Lowered.
w En la página Font: Background Color F WindowBackground.
w En la página Edit:
Ø Style Type F DropDownDW
Ø DataWindow F ddd_depto (el que se creó en el paso 43.2.6.)
Ø Display Column F depto_nombre (nombre de departamento)
Ø Data Colum F depto_id (código de departamento)
Ø Width of DropDown(%) (ancho del DropDown) F 300%
Ø Seleccionar VScrollBar
w OK
ü File F Save. En la ventana Save DataWindow:
w Name: d_act_empleados
w OK
w Cerrar la ventana de edición del DataWindow
43.2.8. Abrir w_actualizaciones y seleccionar el DataWindow dw_act_empleados en la página
Empleados. Hacer clic con el botón derecho y seleccionar la opción properties del menú
popup.
ü DataObject F browse... F d_act_empleados (el que se creó en el apartado
anterior:43.2.7)
ü OK
43.3. Para agregar una nueva página al control Tab, se hace clic con el botón derecho sobre e l
control. En el menú popup F Insert TabPage
43.3.1. Hacer clic con el botón derecho dentro de la nueva página (la que tiene el texto none) y
elegir propiedades en el menú popup, F General:
ü Name: tabpage_actividades
ü TabText: Actividades
ü OK
43.3.2. Insertar los demás controles en la ventana (como lo muestra la figura)
ü Un DataWindow control. En las propiedades del nuevo DataWindow elegir name:
dw_act_actividades y seleccionar VscrollBar.
ü Los botones Nuevo (cb_nuevo_a), Borrar (cb_borrar_a), Actualiz ar (cb_actualizar_a),
Cargar Datos (cb_cargar_a). Los nombres de los botones deben ser diferentes a los
utilizados en la página Empleados.
ü Los botones para desplazarse por las filas del DataWindow: Primero (cb_primero_a),
Siguiente (cb_siguiente_a), Ante rior (cb_anterior_a), Ultimo (cb_ultimo_a).
43.3.3. Crear un DataWindow Object en el que se relacionen el código y nombre de los
empleados. (se usa el botón DataWindow de la barra de herramientas PowerBar)
ü En la barra de herramientas F New F DataWindow: Grid
w Data Source F SQL Select F Next
ü En la ventana Select Tables seleccionar la tabla Empleado F Open
ü Seleccionar las columnas código de empleado, nombre y apellido del empleado.
ü Pasar a diseño de salida o vista de diseño: F Return
ü Seleccionar colores y bordes F Aceptar selecciones F Finalizar

ENTRENAMIENTO EN P OWERB UILDER 9.0


Página 39 de 40
Ing. Ismael Castañeda Fuentes
ü Colocar los encabezados apropiados.
ü File F Save. En la ventana Save DataWindow:
w Name: ddd_empleado (será utilizado como DropDownDatraWindow)
w OK
w Cerrar la ventana de edición del DataWindow
43.3.4. Crear un DataWindow Object en el que se relacionen el código y nombre de los niveles.
ü En la barra de herramientas F New F DataWindow: Grid
w Data Source F SQL Select F Next
ü En la ventana Select Tables seleccionar la tabla nivel. F Open
ü Seleccionar las columnas código de nivel y nombre de nivel.
ü Pasar a diseño de salida o vista de diseño: F Return
ü Seleccionar colores y bordes F Aceptar selecciones F Finalizar
ü Colocar los encabezados apropiados.
ü File F Save. En la ventana Save DataWindow:
w Name: ddd_nivel (será utilizado como DropDownDatraWindow)
w OK
w Cerrar la ventana de edición del DataWindow
43.3.5. Crear un DataWindow Object para actualizar los datos relacionados con los actividades
de los empleados.
ü En la barra de herramientas F New F DataWindow: Tabular
w Data Source F SQL Select F Next
ü En la ventana Select Tables seleccionar la tabla Actividad. F Open
ü Seleccionar todas las columnas de la tabla Actividad.
ü Pasar a diseño de salida o vista de diseño: F Return
ü Seleccionar colores y bordes F Aceptar selecciones F Finalizar
ü Elegir Properties en el menu popup (con el botón derecho sobre el DataWindow):
w En la página General: Color F Button Face
ü Para los encabezados de todas las columnas: Elegir Properties en el menu popup (con
el botón derecho):
w En la página General: Borde F Raised. Text F modificar el texto
w En la página Font: Background Color F Button Face.
w OK
ü Para la columna act_emp_id (código del empleado): Elegir Properties en el menu
popup (con el botón derecho):
w En la página General: Borde F Lowered.
w En la página Font: Background Color F Window Background.
w En la página Edit:
Ø Style Type F DropDownDW
Ø DataWindow F ddd_empleado (el que se creó en el paso 43.3.3.)
Ø Display Column F emp_id (código del empleado)
Ø Data Column F emp_id (código del empleado)
Ø Width of DropDown (ancho del DropDown) F 400%
Ø Seleccionar VscrollBar
ü OK
ü Para la columna act_niv_id (código del nivel): Elegir Properties en el menu popup
(con el botón derecho):
w En la página General: Borde F Lowered.
w En la página Font: Background Color F Window Background.
w En la página Edit:
Ø Style Type F DropDownDW
Ø DataWindow F ddd_nivel (el que se creó en el paso 43.3.3.)
Ø Display Column F niv_id (código del nivel)
Ø Data Column F niv_id (código del nivel)
Ø Width of DropDown (ancho del DropDown) F 250%
Ø Seleccionar VscrollBar

ENTRENAMIENTO EN P OWERB UILDER 9.0


Página 40 de 41
Ing. Ismael Castañeda Fuentes
ü OK
ü File F Save. En la ventana Save DataWindow:
w Name: d_act_actividades
w OK
w Cerrar la ventana de edición del DataWindow
43.3.6. Seleccionar el DataWindow dw_act_actividades en la página Empleados. Hacer clic con el
botón derecho y seleccionar la opción properties del menú popup.
ü DataWindow Object Name F browse... F d_act_actividades (el que se creó en el
apartado anterior: 43.3.5)
ü OK
43.4. El procedimiento utilizado para agregar las dos páginas restantes (Departamentos y
Niveles) es bastante similar al descrito anteriormente.
43.5. Hasta ahora no se han escrito los programas (scripts) para ninguno de los eventos de los
controles creados.
43.5.1. En la ventana w _actualizar, seleccionar la página Empleados (tabpage_empleados)
ü Hacer clic con el botón derecho sobre la página y seleccionar la opción script en el
menú popup.
ü En el editor, seleccionar el evento constructor del listbox de la parte superior
izquierda de la ventana. El siguiente es el código para dicho evento:
//-------Evento: constructor--------------
//-------Control: tabpage_empleados -------

//Se selecciona el Transaction Object, que proporciona la


//información para la comunicación con la base de datos y se
//deshabilitan los botones de borrar y actualizar.

tab_actualizaciones.tabpage_empleados.dw_act_empleados.SetTransObject(SQLCA)
tab_actualizaciones.tabpage_empleados.cb_borrar.enabled = false
tab_actualizaciones.tabpage_empleados.cb_actualizar.enabled = false
ü Para compilar el script: en la barra de herramientas F Compile; o Ctrl+L; o
F Edit F Compile; o también al guardar, se compila automáticamente.
ü Para el botón que de desplazamiento hasta la primera fila (cb_primero), evento
clicked:
//-------Evento: clicked--------------
//-------Control: cb_primero----------

dw_act_empleados.SetFocus() // El datawindow toma el foco


dw_act_empleados.ScrollToRow(1) // Se desplaza hasta la fila No. 1
dw_act_empleados.SetColumn(1) // Se selecciona la primera columna
ü Para el botón de desplazamiento a la siguiente fila (cb_siguiente), evento clicked:
//-------Evento: clicked--------------
//-------Control: cb_siguiente----------

long l_fila_actual

dw_act_empleados.SetFocus()
l_fila_actual = dw_act_empleados.getrow() //el número de la fila
//seleccionada actualmente
dw_act_empleados.ScrollToRow(l_fila_actual + 1) //se desplaza a la
//fila siguiente
dw_act_empleados.SetColumn(1) //se selecciona la primera columna
ü Para el botón de desplazamiento a la fila anterior(cb_anterior), evento clicked:
//-------Evento: clicked--------------
//-------Control: cb_anterior----------

long l_fila_actual

dw_act_empleados.SetFocus()
l_fila_actual = dw_act_empleados.getrow() //el número de la fila

ENTRENAMIENTO EN P OWERB UILDER 9.0


Página 41 de 42
Ing. Ismael Castañeda Fuentes
//seleccionada actualmente
dw_act_empleados.ScrollToRow(l_fila_actual - 1) //se desplaza a la
//fila anterior
dw_act_empleados.SetColumn(1) //se selecciona la primera columna
ü Para el botón que de desplazamiento hasta la ultima fila (cb_ultimo), evento clicked:
//-------Evento: clicked--------------
//-------Control: cb_ultimo----------

long l_numfilas

dw_act_empleados.SetFocus()
l_numfilas = dw_act_empleados.RowCount() //se obtiene el número de
//filas en el datawindow
dw_act_empleados.scrolltorow(l_numfilas) //se desplaza hasta la última
dw_act_empleados.setcolumn(1) //se selecciona la primera columna
ü Para el botón Cargar Datos (cb_cargar), evento clicked:
//-------Evento: clicked--------------
//-------Control: cb_cargar----------

long l_numfilas

//se recibe la información de la base de datos en el datawindow


// tab_actualizaciones.tabpage_empleados.dw_act_empleados
tab_actualizaciones.tabpage_empleados.dw_act_empleados.retrieve()
l_numfilas=tab_actualizaciones.tabpage_empleados.dw_act_empleados.RowCount()
tab_actualizaciones.tabpage_empleados.dw_act_empleados.ScrollToRow(l_numfilas)

//Si el número de filas en el datawindow es 0 entonces se deshabilita


//el botón de borrar, de lo contrario, se habilita.
if l_numfilas = 0 then
cb_borrar.enabled = false
else
cb_borrar.enabled = true
end if
ü Para el botón de insertar un nuevo empleado (cb_nuevo), evento clicked:
//-------Evento: clicked--------------
//-------Control: cb_nuevo------------

tab_actualizaciones.tabpage_empleados.dw_act_empleados.SetTransObject(SQLCA)
long fila_nueva

//la nueva fila se inserta al final del datawindow


fila_nueva = tab_actualizaciones.tabpage_empleados.dw_act_empleados.InsertRow(0)

//el datawindow toma el foco


tab_actualizaciones.tabpage_empleados.dw_act_empleados.SetFocus()

//se desplaza hasta la nueva fila


tab_actualizaciones.tabpage_empleados.dw_act_empleados.ScrollToRow(fila_nueva)
tab_actualizaciones.tabpage_empleados.dw_act_empleados.SetColumn(1)
cb_actualizar.enabled = true
ü Para el botón de borrar un empleado (cb_borrar), evento clicked:
//-------Evento: clicked--------------
//-------Control: cb_borrar-----------

long l_fila_actual

tab_actualizaciones.tabpage_empleados.dw_act_empleados.SetRedraw (false)

//se guarda el número de la fila seleccionada, que es la que se


//eliminará

ENTRENAMIENTO EN P OWERB UILDER 9.0


Página 42 de 43
Ing. Ismael Castañeda Fuentes
l_fila_actual = tab_actualizaciones.tabpage_empleados.dw_act_empleados.getrow()

//se elimina la fila seleccionada


tab_actualizaciones.tabpage_empleados.dw_act_empleados.DeleteRow (l_fila_actual)

//si después de borrarla no quedan filas en el datawindow,


//se deshabilita el botón de borrar
if tab_actualizaciones.tabpage_empleados.dw_act_empleados.RowCount()=0 then
cb_borrar.enabled = false
else
tab_actualizaciones.tabpage_empleados.dw_act_empleados.SetColumn(1)
tab_actualizaciones.tabpage_empleados.dw_act_empleados.SetFocus()
end if
cb_actualizar.enabled = true
tab_actualizaciones.tabpage_empleados.dw_act_empleados.SetRedraw (true)
ü Para el botón de actualización de datos, después de haber realizado inserciones y/o borrados
(cb_actualizar), evento clicked:
//-------Evento: clicked--------------
//-------Control: cb_actualizar-----------

tab_actualizaciones.tabpage_empleados.dw_act_empleados.SetRedraw (false)

//si la actualización de la base de datos no es exitosa, se deshacen


//todos los cambios con la orden rollback.
//De lo contrario, se realizan todos los cambios con la orden commit.
if tab_actualizaciones.tabpage_empleados.dw_act_empleados.Update() = -1 then
rollback;
else
commit;
end if

tab_actualizaciones.tabpage_empleados.dw_act_empleados.SetRedraw (true)

//Si después de actualizar la base de datos no quedan filas en el


//datawindow, se deshabilita el botón de actualizar.
if tab_actualizaciones.tabpage_empleados.dw_act_empleados.RowCount() = 0 then
cb_actualizar.enabled = false
else
cb_actualizar.enabled = true
end if
43.6. Los scripts para los eventos de los controles de las páginas restantes (actividades, niveles
y departamentos) son similares a los descritos en el apartado anterior: 39.5 , modificando
los nombres de los controles y los datawindows.
43.7. Se agregará un nuevo botón, que permitirá exportar los datos del datawindow a diferentes
formatos. La apariencia de la ventana será la siguiente:

ENTRENAMIENTO EN P OWERB UILDER 9.0


Página 43 de 44
Ing. Ismael Castañeda Fuentes
ü Agregar un nuevo botón, hacer click derecho sobre él y elegir la opción “Properties”
del menú popup.
w Name F cb_exportar
w Text F Exportar.
w OK
ü Hacer click derecho sobre el botón Exportar y elegir la opción Script del menú popup.
ü Elegir el evento clicked en la parte superior izquierda de la ventana del editor y
escribir el siguiente programa:
//--Evento clicked---
//--cb_exportar------

integer i_tab

i_tab = tab_actualizaciones.SelectedTab

//la función SelectedTab retorna el número del tabpage seleccionado.


CHOOSE CASE i_tab
CASE 1 //el tabpage seleccionado es el 1 (empleados)
tab_actualizaciones.tabpage_empleados.dw_act_empleados.SaveAs("",EXCEL!, TRUE)
//la función SaveAs permite guardar los datos que están en un datawindow
//en diferentes formatos de archivo. Esta función utiliza el cuadro de
//diálogo "guardar archivo" y permite al usuario elegir el formato al que
//desea exportar los datos. En este caso el formato por defecto es el de
//la hoja de cálculo EXCEL
CASE 2 //el tabpage seleccionado es el 2 (actividades)
tab_actualizaciones.tabpage_actividades.dw_act_actividades.SaveAs("",EXCEL!, TRUE)
CASE 3 //el tabpage seleccionado es el 3 (departamentos)
tab_actualizaciones.tabpage_departamentos.dw_act_departamentos.SaveAs("", EXCEL!,
TRUE)
CASE 4 //el tabpage seleccionado es el 4 (niveles)
tab_actualizaciones.tabpage_niveles.dw_act_niveles.SaveAs("", EXCEL!, TRUE)
END CHOOSE

ENTRENAMIENTO EN P OWERB UILDER 9.0


Página 44 de 45
Ing. Ismael Castañeda Fuentes
43.8. De manera similar, agregar un botón adicional para cerrar la ventana de actualizaciones
(w_actualizaciones)
ü Properties F Name F cb_cancelar
ü Properties F Text F Cancelar
ü OK
ü El script para el evento clicked de este botón es:
Close (parent)

44. Crear una ventana como la siguiente:

Explorador

En esta ventana se utilizará un nuevo control: TreeView. El TreeView es un control que permite
desplegar información jerarquicamente. Cada item en un TreeView consiste de texto y una
imagen, los cuales pueden ser manipulados durante una rutina de programa.
El aspecto de la ventana será similar al siguiente:
Como puede verse, este TreeView tendrá cuatro niveles. El primer nivel solo constará de un ítem
con el texto empresa. Los ítems del segundo nivel corresponden a los departamentos de la
empresa, el tercero a los empleados de cada departamento, y el cuarto a las actividades
asignadas a los emp leados.
44.1. En la barra de herramientas:
ü File F New F Object F Window
Con el botón derecho sobre la nueva ventana, modificar las propiedades de la ventana vista de
“Properties”:
ü Window Type F Popup.
ü Las opciones Resizable y Maximize Box no deberán seleccionarse.
44.2. Insertar un control TreeView en la ventana y darle el tamaño adecuado. Seleccionar el
control insertado y hacer click con el botón derecho del mouse sobre él.
ü En la barra de herramientas: Desplegar controles y seleccionar: F Treeview
ü En el menu Insert FControl F Treeview
w Name Ftv_depto_empleado
w Seleccionar la opción Lines at Root
w Indent F10

ENTRENAMIENTO EN P OWERB UILDER 9.0


Página 45 de 46
Ing. Ismael Castañeda Fuentes
w OK
44.2.1. Insertar los demás controles en la ventana (como lo muestra la figura)
ü Tres botones: Expandir Todo (cb_expandir), Contraer todo (cb_contraer), Cerrar
(cb_cerrar)
44.2.2. Guardar el trabajo: File F Save. El nombre de la nueva ventana será w_explorador.
44.2.3. Modificar la opción actualizar del menú, para que se abra la nueva ventana:
ü En la barra de herramientas abrir el menu principal: Open F Object Type:Menu
FSeleccionar menu principal (p.ej. m_entrenamiento) F OK
ü Agregar la opción Explorar en el menú Personal
ü Click derecho con el ratón sobre el treeview y seleccionar la opción Script
ü Escribir open(w_explorador)
ü Guardar las modificaciones hechas al menú.
44.2.4. Correr la aplicación y probar el funcionamiento del menú y la nueva ventana.
44.2.5. Crear un DataWindow Object en el que se relacionen el nombre de los departamentos.
(se usa el botón DataWindow de la barra d e herramientas PowerBar)
ü En la barra de herramientas F New F DataWindow: Tabular
w Data Source F SQL Select F Next
ü En la ventana Select Tables seleccionar la tabla departamento FOpen
ü Seleccionar las columnas código de departamento y nombre de departamento.
ü Pasar a diseño d e salida o vista de diseño: F Return
ü Seleccionar colores y bordes F Aceptar selecciones F Finalizar
ü Colocar los encabezados apropiados.
ü File F Save. En la ventana Save DataWindow:
w Name: d_depto
w OK
w Cerrar la ventana de edición del DataWindow
44.2.6. Crear un DataWindow Object en el que se relacionen el nombre de los empleados de un
departamento determinado. (se puede usar uno de los ya existentes si cumple con esta
condición).
ü En la barra de herramientas F New F DataWindow: Tabular
w Data Source F SQL Select F Next
ü En la ventana Select Tables seleccionar la tabla empleado FOpen
ü Seleccionar las columnas código de empleado, apellido y nombre de empleado.
ü Pasar a diseño de salida o vista de diseño: F Return
ü Seleccionar colores y bordes F Aceptar selecciones F Finalizar
ü Colocar los encabezados apropiados.
ü En el menú Design elegir la opción Retrieval Arguments...
ü En la ventana Specify Retrieval Arguments: name Fdept_id, type Fnumber
ü OK
ü Oprimir el Tab "Where" en la parte inferior de la pantalla:
w Column F"empleado"."dept_id" (Al hacer click en el espacio en blanco se
puede elegir la columna deseada)
w Operator F= (Al hacer click en el espacio en blanco se puede elegir el
operador deseado)
w Value : Hacer click con el boton derecho sobre el espacio en blanco, elegir
arguments en el menú popup, y luego elegir :dept_id, que es el mismo
argumento que se definión en Retrieva Arguments.
ü Pasar a diseño de salida: En la barra de herramientas es el ícono que dice "SQL"
ü File F Save. En la ventana Save DataWindow:
w Name: d_empleados_por_depto
w OK
w Cerrar la ventana de edición del DataWindow
44.2.7. Crear un DataWindow Object en el que se puedan almacenar las actividades de un
empleado dado. (se puede usar uno de los ya existentes si cumple con esta condición)
ü En la barra de herramientas F New F DataWindow: Tabular
w Data Source F SQL Select F Next
ü En la ventana Select Tables seleccionar la tabla actividad y la tabla empleado FOpen
ENTRENAMIENTO EN P OWERB UILDER 9.0
Página 46 de 47
Ing. Ismael Castañeda Fuentes
ü Seleccionar las columnas código de empleado (de la tabla empleado), y descripción
de la actividad (de la tabla actividad).
ü En el menú Design elegir la opción Retrieval Arguments...
ü En la ventana Specify Retrieval Arguments: name Femp_id (código del empleado),
type F number
ü OK
ü Oprimir el Tab "Where" en la parte inferior de la pantalla:
w Column F"empleado"."emp_id" (Al hacer click en el espacio en blanco se
puede elegir la columna deseada)
w Operator F= (Al hacer click en el espacio en blanco se puede elegir el
operador deseado)
w Value : Hacer click con el boton derecho sobre el espacio en blanco, elegir
arguments en el menú popup, y luego elegir :emp_id, que es el mismo
argumento que se definión en Retrieva Arguments
ü Pasar a diseño de salida: En la barra de herramientas es el ícono que dice "SQL"
ü File F Save. En la ventana Save DataWindow:
w Name: d_activ_por_empleado
w OK
w Cerrar la ventana de edición del DataWindow
ü Guardar el trabajo adelantado hasta el momento File F Save.
44.3. Declaración de variable de instancia ids_datos
ü En la vista de “Scipt” del treeview desplegar la lista de objetos y seleccionar
F (Declare) y aparecerá al lado derecho Instance Variables.
ü Escribir: datastore ids_datos[4].
ü OK
ü La variable ids_datos es un array de cuatro posiciones de tipo DataStore, en el que
se almacenarán los datos de cada nivel del TreeView. Estos datos se obtendrán de los
DataWindow creados en 43.2.6. y 43.2.7.
44.4. Crear las Funciones:
ü lf_agregar_items
ü lf_config_item
44.4.1. Función lf_agregar_items
ü En la vista de “Scipt” del treeview desplegar la lista de objetos y seleccionar
F (Functions)
ü Aparecerá debajo un espacio como el que se muestra en la figura para que sea
declarada la función y las variables respectivas.
ü La nueva función tiene las siguientes especificaciones:
w Name F lf_agregar_items
w Access F Public
w Return F Integer
w Arguments:
Ø Name F al_parent, Ttype F Long, Pass By F Value 4 Oprimir
Add
Ø Name F ai_nivel, Type F Integer, Pass By F Value
F Oprimir Add
Ø Nam F ai_filas, Type F Integer, Pass By F Value
ü Colocar el s iguiente código para esta función:
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Función para agregar los items al TreeView usando los datos en el
// DataStore
// Los argumentos de la función son:
// - long al_parent
// - integer ai_nivel (el nivel en el que se agregarán los items)
// - integer ai_filas (el número de items que se agregarán)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////

Integer li_Cont

ENTRENAMIENTO EN P OWERB UILDER 9.0


Página 47 de 48
Ing. Ismael Castañeda Fuentes
//se declara un objeto TreeViewItem para manipular los valores del item
//que se agregará
TreeViewItem ltvi_Nuevo

// Se agrega cada item


For li_Cont = 1 To ai_filas
// Se llama a la función lf_config_item para asignar los valores
//del nuevo item a partir de los datos almacenados en el
//DataStore
lf_config_item(ai_nivel, li_Cont, ltvi_Nuevo)

// Se agrega el item después del último hijo


If tv_depto_empleado.InsertItemLast(al_Parent, ltvi_Nuevo) < 1 Then
// Si hay Error
MessageBox("Error", "Error al insertar item", & Exclamation!)
Return -1
End If
Next
Return ai_filas
ü Cerrar la ventana del editor y guardar el trabajo adelantado
ü Nota: Si se quieren modificar los argumentos de una función ya declarada, se debe en la
vista de “Script” desplegar la lista de objetos, elegir el objeto function y escoger la función a
modificar.
44.4.2. Función lf_config_item
ü En la vista de “Scipt” del treeview desplegar la lista de objetos y seleccionar
F (Functions)
ü Aparecerá debajo un espacio (como el que se mostró en la figura) para que sea
declarada la función y las variables respectivas.
ü La nueva función tiene las siguientes especificaciones:
w Name F lf_config_item
w Access F Public
w Return 4 (None)
w Arguments:
Ø Name F ai_nivel, Type F Integer, Pass By F Value
F Oprimir Add
Ø Name F ai_fila, Type F Integer, Pass By F Value F Oprimir
Add
Ø Name F atvi_nuevo, Type F TreeViewItem, Pass By
F Reference F OK
ü El código para esta función es el siguiente:
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Se configuran los atributos para el nuevo item a partir de los datos
// en el DataStore.
// Los atributos de TreeViewItem que se usan son:
// Label (el texto que se despliega en el TreeView)
// Data (es la información que contiene dicho item)
// Los argumentos de esta función son:
// integer ai_nivel = el nivel del TreeViewItem en el TreeView
// integer ai_fila = # de la fila del DataStore de la que se obtendrá
// la información
// atvi_nuevo = TreeViewItem que se agrega al TreeView. Los valores de
// sus atributos. (Label y Data) son los que se determinan a
// continuación
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Choose Case ai_nivel


Case 1
// El único item de primer nivel tiene como Label la

ENTRENAMIENTO EN P OWERB UILDER 9.0


Página 48 de 49
Ing. Ismael Castañeda Fuentes
// palabra "empresa", en este caso no se usa niungún
// DataStore
atvi_nuevo.Label = "Empresa"
atvi_nuevo.Data = "Empresa"
Case 2
// Label = nombre del departamento
// Data = codigo de departamento
atvi_nuevo.Label= ids_datos[2].Object.dept_nombre[ai_fila]
atvi_nuevo.Data = ids_datos[2].Object.dept_id[ai_fila]
Case 3
// Label = apellido + nombre del departamento
// Data = codigo de empleado
atvi_nuevo.Label = ids_datos[3].Object.emp_apellido[ai_fila]&
+ ", " + ids_datos[3].Object.emp_nombre[ai_fila]
atvi_nuevo.Data = ids_datos[3].Object.emp_id[ai_fila]
Case 4
// Label = descripción de la actividad
// Data = código del empleado
atvi_nuevo.Label =
ids_datos[4].Object.actividad_act_descripcion[ai_fila]
atvi_nuevo.Data =
ids_datos[4].Object.empleado_emp_id[ai_fila]
End Choose

If ai_nivel < 4 Then


atvi_nuevo.Children = True
Else
// Si el nivel es 4 (actividades) los items no tienen hijos)
atvi_nuevo.Children = False
End If

atvi_nuevo.PictureIndex = ai_nivel
atvi_nuevo.SelectedPictureIndex = ai_nivel
ü Guardar el trabajo adelantado
44.5. Escribir los scripts para los controles creados.
44.5.1. En la ventana w_explorador:
ü Hacer click con el botón derecho sobre la ventana y seleccionar la opción script en el
menú popup.
ü En el editor, seleccionar el e vento open del listbox de la parte superior izquierda de la
ventana. El siguiente es el código para dicho evento:
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Se crean los DataStore que contendrán los //
// datos almacenados en los datawindows espacificados //
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//d_depto se hace mediante un select a la tabla departamento.


//En este datawindow se almacena la lista de los departamentos
//de la empresa. Estos datos aparecerán en el segundo nivel
//del treeview.
ids_datos[2] = Create DataStore
ids_datos[2].DataObject = "d_depto"
ids_datos[2].SetTransObject(sqlca)

//d_empleados_por_depto contiene los empleados que trabajan en un


//departamento. Para esto, se debe escoger la columna código
//de departamento (dept_id) como argumento de recuperación (retrieval
//arguments)
//Los datos aquí recuperados serán los del tercer nivel del treeview
ids_datos[3] = Create DataStore
ids_datos[3].DataObject = "d_empleados_por_depto"
ids_datos[3].SetTransObject(sqlca)

ENTRENAMIENTO EN P OWERB UILDER 9.0


Página 49 de 50
Ing. Ismael Castañeda Fuentes
//d_activ_por_empleado contiene las actividades asignadas a un
//empleado. De forma similar, el retrieval argument para este
//datawindow es la columna código de empleado (emp_id)
//Los datos aquí recuperados serán los del cuarto nivel del treeview
ids_datos[4] = Create DataStore
ids_datos[4].DataObject = "d_activ_por_empleado"
ids_datos[4].SetTransObject(sqlca)

//Se agrega el primer item (el único) del primer nivel del treeview.
//Los parámetros que se pasan son: parent = 0, nivel = 1, filas = 1
lf_agregar_items(0, 1, 1)
ü Compilar el script: en el menú Edit F Compile Script (Ctrl+L).
ü Seleccionar el evento close. El script para este evento es:
-------Evento: close--------------
-------Control: w_explorador------
Integer li_Cont
// Se destruyen los DataStores usados en el ejemplo
For li_Cont = 1 To 4
Destroy ids_datos[li_Cont]
Next
Show(w_principal)
ü Compilar el script (Ctrl + L).
44.5.2. En el TreeView tv_depto_empleado:
ü Hacer click con el botón derecho sobre el TreeView y seleccionar la opción script en el
menú popup.
ü En el editor, seleccionar el evento itempopulate. El siguiente es el código para dicho
evento:
-------Evento: itempopulate--------------
-------Control: tv_depto_empleado--------
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Se expande el árbol con los hijos de cada item.
// p.ej. los hijos de un item de departamento son los nombres de los
// empleados
/////////////////////////////////////////////////////////////////////////////////////////////////////////////

Integer li_nivel, li_parametro, li_DeptID, li_EmpID, li_filas


// Se declara un TreeViewItem para el item actual
TreeViewItem ltvi_actual
SetPointer(HourGlass!)

// Se determina el nivel del item que se encuentra seleccionado


// actualmente en el TreeView
GetItem(handle, ltvi_actual)
li_nivel = ltvi_actual.Level + 1

// Departamentos
if li_nivel = 2 then
ids_datos[li_nivel].SetTransObject(sqlca)
ids_datos[li_nivel].Reset()
ids_datos[li_nivel].SetTransObject(sqlca)
// Se cargan los datos en el DataStore
li_filas = ids_datos[li_nivel].Retrieve()
End if

// Empleados X Departamento
if li_nivel = 3 Then
li_DeptID = Integer(ltvi_actual.Data)
ids_datos[li_nivel].Reset()
ids_datos[li_nivel].SetTransObject(sqlca)
// Se cargan los datos en el DataStore usando el argumento código de
//departamento

ENTRENAMIENTO EN P OWERB UILDER 9.0


Página 50 de 51
Ing. Ismael Castañeda Fuentes
li_filas = ids_datos[li_nivel].Retrieve(li_DeptID)
End if

// Actividades X Empleado
If li_nivel = 4 Then
li_EmpID = Integer(ltvi_actual.Data)
ids_datos[li_nivel].Reset()
ids_datos[li_nivel].SetTransObject(sqlca)
// Se cargan los datos en el DataStore usando el argumento código
// de empleado
li_filas = ids_datos[li_nivel].Retrieve(li_EmpID)
End If
lf_agregar_items(handle, li_nivel, li_filas)
ü Compilar el script (Ctrl + L) y cerrar la ventana del editor.
44.5.3. En el botón Expandir Todo (cb_expandir):
ü Hacer click con el botón derecho sobre cb_expandir y seleccionar la opción script en
el menú popup.
ü En el editor, seleccionar el evento clicked. El siguiente es el código para dicho
evento:
-------Evento: clicked--------------
-------Control: cb_expandir---------

Long ll_handle

ll_handle = tv_depto_empleado.FindItem ( RootTreeItem!, 0 )


tv_depto_empleado.ExpandAll ( ll_handle )
ü Compilar el script: en el menú Edit F Compile Script (Ctrl+L).
44.5.4. En el botón Contraer Todo (cb_contraer):
ü Hacer click con el botón derecho sobre cb_contraer y s eleccionar la opción script en
el menú popup.
ü En el editor, seleccionar el evento clicked. El siguiente es el código para dicho
evento:
-------Evento: clicked--------------
-------Control: cb_contraer---------

Long ll_handle

ll_handle = tv_depto_empleado.FindItem ( RootTreeItem!, 0 )


tv_depto_empleado.CollapseItem ( ll_handle ).
ü Compilar el script: en el menú Edit F Compile Script (Ctrl+L).
ü Cerrar la ventana del editor.
44.5.5. Para el botón Cerrar (cb_cerrar)
-------Evento: clicked--------------
-------Control: cb_cerrar---------

close(w_explorador)
ü Compilar el script: en el menú Edit F Compile Script (Ctrl+L).
44.6. Guardar el trabajo adelantado y correr la aplicación para comprobar el funcionamiento
del TreeView.

45. Modificar la ventana creada en el paso 40 de la siguiente forma:

ENTRENAMIENTO EN P OWERB UILDER 9.0


Página 51 de 52
Ing. Ismael Castañeda Fuentes
Explorador

El control que se añadirá se denomina ListView. Un ListView muestra información en


forma de lista al usuario. Cada ítem del ListView consiste de texto y un dibujo.
En este caso, el ListVie w mostrará los ítems del nivel inferior al que se encuentre
seleccionado en el árbol. Los botones “Lista”, “Detalles” e “Iconos Grandes”, cambian la
forma de presentación de los ítems en el ListView. Cuando el usuario haga doble click
sobre uno de los ítems del ListView, se desplegarán los ítems del nivel inferior, y se
expandirá la porción correspondiente en el árbol.
Los ítems se ordenarán de acuerdo cuando el usuario oprima las cabeceras de las
columnas, de forma similar a como ocurre, por ejemplo, en el explorador de windows.
45.1. Insertar un control ListView en la ventana y darle el tamaño adecuado. Seleccionar el
nuevo control y hacer click con el botón derecho del mouse sobre él. Con las siguientes
especificaciones:
ü Name 4lv_dept_empleados
ü Seleccionar la opción Show header
ü View 4Report (Detalles)
ü Sort 4Unsorted
ü OK
45.1.1. Insertar los demás controles en la ventana (como lo muestra la figura)
ü Tres botones: Lista (cb_lista), Detalles (cb_detalles), Iconos Grandes (cb_grandes)
45.1.2. Guardar el trabajo adelantado: File F Save.
45.2. Declaración de variable de instancia ii_columnas
ü En la vista de “Scipt” del treeview desplegar la lista de objetos y seleccionar
F (Declare) y aparecerá al lado derecho Instance Variables.
ü Escribir: integer ii_columnsas.
ü OK
ü La variable ii_columnas es un entero que se utilizará para contar el número de
columnas que se agregan al ListView dependiendo del nivel actual del árbol.
45.3. Crear las Funciones lf_agregar_items y lf_ config_item
De ahora en adelante se utilizarán los DataWindow y DataStore creados durante el paso
40 en los nuevos scripts. (ids_datos[], d_depto, d_empleados_por_depto y
d_activ_por_empleado)
45.3.1. Función wf_agregar_lv_items
ü En la vista de “Scipt” del treeview desplegar la lista de objetos y seleccionar
F (Functions)

ENTRENAMIENTO EN P OWERB UILDER 9.0


Página 52 de 53
Ing. Ismael Castañeda Fuentes
ü Aparecerá debajo un espacio (como el que se mostró en la figura) para que sea
declarada la función y las variables respectivas.
ü La nueva función tiene las siguientes especificaciones:
w Name 4wf_lv_agregar_items
w Access 4Public
w Return 4Integer
w Arguments:
Ø Name 4ai_nivel, Type4Integer, Pass By 4Value 4 Oprimir Add
Ø Name 4ai_filas, Type4Integer, Pass By 4Value 4OK
ü En la vista de “Script” colocar el siguiente código para esta función:
-------función wf_agregar_lv_items--------------
//////////////////////////////////////////////////////////////////////////////////
//
//Función para agregar items al ListView
//usando los datos del DataStore
//
// Argumentos:
// integer ai_nivel (el nivel en que se insertará)
// integer ai_filas (número de items a insertar)
//
//////////////////////////////////////////////////////////////////////////////////

Integer li_Cont
ListViewItem llvi_Nuevo

// Se borran todas las columnas existentes en el


// ListView
For li_Cont = 1 To ii_columnas
lv_dept_empleados.DeleteColumn(1)
Next

// Se agregan las columnas al ListView


Choose Case ai_nivel
Case 2
lv_dept_empleados.AddColumn("Nombre", Left!, 500)
lv_dept_empleados.AddColumn("ID", Right!, 150)
ii_columnas = 2
Case 3
lv_dept_empleados.AddColumn("Apellido", Left!, 700)
lv_dept_empleados.AddColumn("Nombre", Left!, 700)
lv_dept_empleados.AddColumn("ID", Right!, 150)
ii_columnas = 3
Case 4
lv_dept_empleados.AddColumn("Descripción", Left!, 900)
lv_dept_empleados.AddColumn("ID Nivel", Right!, 250)
ii_columnas = 2
End Choose

// Se agrega cada item al ListView


For li_Cont = 1 To ai_filas
// Se llama a la función para configurar los valores de los
// items del ListView a partir de los datos del DataStore
wf_config_lv_item(ai_nivel, li_Cont, llvi_nuevo)
// Se agrega cada item after the last child
If lv_dept_empleados.AddItem(llvi_nuevo) < 1 Then
MessageBox("Error", "Error al agregar item",
Exclamation!)
Return -1
End If
Next
Return ai_filas

ENTRENAMIENTO EN P OWERB UILDER 9.0


Página 53 de 54
Ing. Ismael Castañeda Fuentes
ü Compilar el script (Ctrl + L).
45.3.2. Función wf_config_lv_item
ü En la vista de “Scipt” del treeview desplegar la lista de objetos y seleccionar
F (Functions)
ü Aparecerá debajo un espacio (como el que se mostró en la figura) para que sea
declarada la función y las variables respectivas.
ü La nueva función tiene las siguientes especificaciones:
w Name 4wf_config_lv_item
w Access 4Public
w Return 4 (None)
w Arguments:
Ø Name 4ai_nivel, Type4Integer, Pass By 4Value4Oprimir Add
Ø Name 4ai_fila, Type4Integer, Pass By 4Value4Oprimir Add
Ø Name 4alvi_nuevo, Type4ListViewItem, Pass By4Reference
w OK
ü En la vista de “Script” colocar el siguiente código para esta función:
-------función wf_config_lv_item--------------
///////////////////////////////////////////////////////////////////////////////////////////////////
// Se configuran los atributos Label y Data para el nuevo
// item del ListView a partir de los datos en el DataStore.
//
// Argumentos:
// integer ai_nivel (el nivel del ítem a configurar)
// integer ai_fila (el número del item a configurar)
// listviewitem alvi_nuevo (el item a configurar)
///////////////////////////////////////////////////////////////////////////////////////////////////

Choose Case ai_nivel


Case 2
// Label = nombre del departamento | código dedepartamento
// Data = codigo de departamento
alvi_nuevo.Label = ids_datos[2].Object.dept_nombre[ai_fila]+"~t"+ &
string(ids_datos[2].Object.dept_id[ai_fila])
alvi_nuevo.Data = ids_datos[2].Object.dept_id[ai_fila]
Case 3
// Label = apellido empleado | nombre empleado | código empleado
// Data = codigo de empleado
alvi_nuevo.Label = ids_datos[3].Object.emp_apellido[ai_fila]+"~t"+ &
ids_datos[3].Object.emp_nombre[ai_fila] + "~t" + &
string (ids_datos[3].Object.emp_id[ai_fila])
alvi_nuevo.Data = ids_datos[3].Object.emp_id[ai_fila]
Case 4
// Label = descripción de actividad | código del nivel
// Data = codigo de empleado (no se utiliza)
alvi_nuevo.Label =
ids_datos[4].Object.actividad_act_descripcion[ai_fila] + "~t" + &
string(ids_datos[4].Object.actividad_niv_id[ai_fila])
alvi_nuevo.Data = ids_datos[4].Object.empleado_emp_id[ai_fila]
End Choose
alvi_nuevo.PictureIndex = ai_nivel
ü Compilar el script (Ctrl + L) y guardar el trabajo adelantado.
45.4. Escribir los scripts para los nuevos controles.
45.4.1. En el TreeView tv_depto_empleado:
ü Hacer click con el botón derecho sobre el TreeView y seleccionar la opción script en el
menú popup.
ü En el editor, seleccionar el evento selectionchanged. El siguiente es el código para
dicho evento:
-------control: tv_depto_empleado----------
-------evento: selectionchanged--------------
////////////////////////////////////////////////////////////////////////////////////

ENTRENAMIENTO EN P OWERB UILDER 9.0


Página 54 de 55
Ing. Ismael Castañeda Fuentes
// Este evento se ejecuta cuando cambia el ítem
// selecionado en el árbol.
// Se cargan los datos desde el DataStore y
// se agregan los items del nivel inferior al
// ListView
////////////////////////////////////////////////////////////////////////////////////

Integer li_nivel, li_DeptID, li_EmpID, li_filas

// Se declara un TreeViewItem para el item actual


TreeViewItem ltvi_actual
SetPointer(HourGlass!)

// Se determina el nivel del item que se


// encuentra seleccionado actualmente en el TreeView
GetItem(newhandle, ltvi_actual)
li_nivel = ltvi_actual.Level + 1

// Departamentos
if li_nivel = 2 then
ids_datos[li_nivel].SetTransObject(sqlca)
ids_datos[li_nivel].Reset()
ids_datos[li_nivel].SetTransObject(sqlca)
// Se cargan los datos del DataStore
li_filas = ids_datos[li_nivel].Retrieve()
End if

// Empleados X Departamento
if li_nivel = 3 Then
li_DeptID = Integer(ltvi_actual.Data)
ids_datos[li_nivel].Reset()
ids_datos[li_nivel].SetTransObject(sqlca)
// Se cargan los datos del DataStore usando
//el argumento código de departamento
li_filas = ids_datos[li_nivel].Retrieve(li_DeptID)
End if

// Actividades X Empleado
If li_nivel = 4 Then
li_EmpID = Integer(ltvi_actual.Data)
ids_datos[li_nivel].Reset()
ids_datos[li_nivel].SetTransObject(sqlca)
// Se cargan los datos del DataStore usando
// el argumento código de empleado
li_filas = ids_datos[li_nivel].Retrieve(li_EmpID)
End If

// Se borran todos los items del ListView


lv_dept_empleados.DeleteItems()

// La función wf_agregar_lv_items agrega un número


// de items igual a "li_filas" en el ListView, que
// pertenecen al nivel "li_nivel"
wf_agregar_lv_items(li_nivel, li_filas)
ü Cerrar la ventana del editor y guardar el trabajo adelantado
45.4.2. En el ListView lv_dept_empleados:
ü Hacer click con el botón derecho sobre el ListView y seleccionar la opción script en el
menú popup.
ü En el editor, seleccionar el evento doubleclicked. El siguiente es el código para dicho
evento:
-------control: lv_dept_empleados----------
-------evento: doubleclicked---------------
ENTRENAMIENTO EN P OWERB UILDER 9.0
Página 55 de 56
Ing. Ismael Castañeda Fuentes
Long ll_Padre, ll_Item
Boolean lb_Encontrado
TreeViewItem ltvi_Item
ListViewItem llvi_Actual

If index <= 0 Then Return // Error

// Se toma el ítem sobre el que se hizo doble click


If GetItem(index, llvi_Actual) = -1 Then Return

// Se toma el item actualmente seleccionado en el TreeView.


// Este debe ser el padre del item seleccionado en el ListView
ll_Padre = tv_depto_empleado.FindItem(CurrentTreeItem!, 0)
tv_depto_empleado.GetItem(ll_Padre, ltvi_Item)
tv_depto_empleado.ExpandItem(ll_Padre)

// Se busca el item del ListView en el árbol


lb_Encontrado = False
ll_Item = tv_depto_empleado.FindItem(ChildTreeItem!, ll_Padre)

Do Until (lb_Encontrado Or ll_Item < 1)


tv_depto_empleado.GetItem(ll_Item, ltvi_Item)
If Pos(ltvi_Item.Label, llvi_Actual.Label) > 0 Then
// Se ha encontrado el item
lb_Encontrado = True
Else
// Se revisa el siguiente item
ll_Item = tv_depto_empleado.FindItem(NextTreeItem!, ll_Item)
End If
Loop

If lb_Encontrado Then
// Al cambiar el elemento seleccionado en el TreeView,
// se ejecuta el código del evento SelectionChanged
// para el TreeVier tv_depto_empleado
tv_depto_empleado.SelectItem(ll_Item)
End If
ü Compilar el script (Ctrl + L).
45.4.3. En el ListView lv_dept_empleados:
ü Hacer click con el botón derecho sobre el ListView y seleccionar la opción script en el
menú popup.
ü En el editor, seleccionar el evento columnclick. El siguiente es el código para dicho
evento:
-------control: lv_dept_empleados----------
-------evento: columnclick-----------------

// Los items en el ListView se ordenan ascendentemente


// por la columna presionada por el usuario
// "column" es el argumento del evento columnclick
// es el número de la columna sobre la que se ha hecho click
lv_dept_empleados.SetRedraw(false)
lv_dept_empleados.Sort(Ascending! , column)
lv_dept_empleados.SetRedraw(true)
ü Compilar el script (Ctrl + L).
45.4.4. En el botón “Lista” (cb_lista):
ü Hacer click con el botón derecho sobre el botón y seleccionar la opción script en el
menú popup.
ü En el editor, seleccionar el evento clicked. El siguiente es el código para dicho
evento:
-------Evento: clicked--------------
-------Control: cb_lista------------

ENTRENAMIENTO EN P OWERB UILDER 9.0


Página 56 de 57
Ing. Ismael Castañeda Fuentes
// Muestra los ítems del ListView en forma de una lista sencilla
lv_dept_empleados.view = ListViewList!
ü Compilar el script: en el menú Edit F Compile Script (Ctrl+L).
ü Cerrar la ventana del editor.
45.4.5. En el botón “Detalles” (cb_detalles):
ü Hacer click con el botón derecho sobre cb_detalles y seleccionar la opción script en el
menú popup.
ü En el editor, seleccionar el evento clicked. El siguiente es el código para dicho
evento:
-------Evento: clicked--------------
-------Control: cb_detalles---------

// Muestra los ítems del ListView en forma de una lista detallada.


// Esta es la forma de presentación por defecto que se escogió al
// crear el control ( en propiedades de lv_dept_empleados: view =
// report )
lv_dept_empleados.view = ListViewReport!
ü Compilar el script: en el menú Edit F Compile Script (Ctrl+L).
45.4.6. En el botón “Iconos grandes” (cb_grandes):
ü Hacer click con el botón derecho sobre cb_grandes y seleccionar la opción script en
el menú popup.
ü En el editor, seleccionar el evento clicked. El siguiente es el código para dicho
evento:
-------Evento: clicked--------------
-------Control: cb_grandes---------

// Muestra los items del ListView en forma de íconos grandes


lv_dept_empleados.view = ListViewLargeIcon!
ü Compilar el script: en el menú Edit F Compile Script (Ctrl+L).
ü Cerrar la ventana del editor.
46. Correr la aplicación y probar su funcionamiento.
47. Crear un ejecutable de la aplicación creada.

ENTRENAMIENTO EN P OWERB UILDER 9.0


Página 57 de 58
Ing. Ismael Castañeda Fuentes
Nombre de archivo: EntrenamientoPowerBuilder9_0.doc
Directorio: C:\OODB\PB_9
Plantilla: C:\WINDOWS\Application Data\Microsoft\Plantillas\Normal.dot
Título: Entrenamiento en PowerBuilder 9
Asunto: Ejercicio de entrenamiento
Autor: Ismael Castañeda Fuentes
Palabras clave: PowerBuilder, Bases de Datos, Aplicativo
Comentarios: Herman Sandoval M. colaboró en la edición de esta versión.
Fecha de creación: 30/08/03 11:03 A.M.
Cambio número: 4
Guardado el: 30/08/03 11:10 A.M.
Guardado por: Ismael Castaneda Fuentes
Tiempo de edición: 57 minutos
Impreso el: 30/08/03 12:08 P.M.
Última impresión completa
Número de páginas: 58
Número de palabras: 12,899 (aprox.)
Número de caracteres: 73,529 (aprox.)

You might also like