Escolar Documentos
Profissional Documentos
Cultura Documentos
Computacin II
Actividad de Aprendizaje N
03
Contenidos:
Estructuras:
Control ListView:
Control TreeView:
ESTRUCTURAS.
Es una estructura de datos que permite almacenar informacin referido a los atributos de un objeto.
Son colecciones de una o ms variables, del mismo tipo o no, agrupadas bajo una misma
denominacin. Esto permite que nos podamos referir a ellas utilizando solo sus nombres. Existen
dos tipos: Estructura de nivel de objeto (asociado a un objeto determinado) y Estructuras Globales
(no est asociado a ningn objeto dentro de la aplicacin).
Una estructura es una coleccin de una o ms variables relacionadas de uno o ms tipos de datos
agrupados bajo un mismo nombre. En algunos lenguajes, como Pascal y Cobol, las estructuras son
llamadas registros. Las estructuras permiten agrupar a entidades relacionadas como una unidad en
vez de individualmente.
Existen dos clases de estructuras:
Estructuras a nivel de objeto:
Estn asociadas con un tipo particular de objeto como una ventana o men. Estas estructuras
son usadas en scripts para el mismo objeto. Tambin se puede definir la estructura para que
pueda ser accesible desde otros scripts.
Estructuras Globales:
No estn asociadas con ningn objeto en su aplicacin. Podemos hacer referencia a estas
estructuras desde cualquier parte de su aplicacin.
CARACTERISTICAS:
Es similar como si fuera una tabla en una Base de datos, solo con la diferencia que los datos
que guardemos en la estructura solo funcionan en tiempo de ejecucin (se guardan en
memoria)
Introduccin a la Programacin
en Power Builder
-. Pg. 30.-
Computacin II
Tiene campos, y cada campo tiene nombre y tipo de dato similar a una tabla en Base de datos.
La estructura es declarada en mbito global o de instancia.
De esta manera podemos pasar datos de ventana a ventana, y de esta manera habr una
comunicacin entre ellas.
Por ejemplo, si quisiramos almacenar informacin de una persona en una sola variable no se
podra porque aqu existen varios de tipos de datos.
NOMBRE DEL DATO
TIPO DE DATO
Char
DNI
String
NOMBRES
Char
SEXO
FECHA DE NACIMIENTO
Date
Integer
EDAD
Decimal
TALLA
Para realizar ello, utilizamos una variable tipo estructura a partir del objeto estructura de
PowerBuilder.
Clic en
del ToolBar
Introduccin a la Programacin
en Power Builder
-. Pg. 31.-
Computacin II
Introduccin a la Programacin
en Power Builder
-. Pg. 32.-
Computacin II
Construimos la ventana con el nombre w_ventana2 que recibir los datos en tiempos de ejecucin.
Introduccin a la Programacin
en Power Builder
-. Pg. 33.-
Computacin II
Control TreeView
integer fila1,fila2,fila11,fila12
//
fila1=tv_1.InsertItemLast(0,"Matematicas",1)
fila2=tv_1.InsertItemLast(0,"Fisica",1)
//
fila11=tv_1.InsertItemLast(fila1,"Cuatro Operaciones Basicas",2)
fila12=tv_1.InsertItemLast(fila1,"Operaciones Avanzadas",2)
//
tv_1.InsertItemLast(fila11,"Suma",3)
tv_1.InsertItemLast(fila11,"Resta",3)
tv_1.InsertItemLast(fila11,"Multiplicacin",3)
tv_1.InsertItemLast(fila11,"Divisin",3)
//
tv_1.InsertItemLast(fila12,"Potenciacin",3)
tv_1.InsertItemLast(fila12,"Radicacin",3)
Introduccin a la Programacin
en Power Builder
-. Pg. 34.-
Computacin II
treeviewitem tv_nuevo
dec n1,n2,res
n1=dec(sle_1.text)
n2=dec(sle_2.text)
tv_1.getitem(newhandle,tv_nuevo)
if tv_nuevo.level=3 then
choose case tv_nuevo.label
case "Suma"
res=n1+n2
st_4.text=string(res)
case "Resta"
res=n1 - n2
st_4.text=string(res)
case "Multiplicacin"
res=n1*n2
st_4.text=string(res)
case "Divisin"
if n2=0 then
Messagebox("Error","Divisin por cero")
return
else
res=n1/n2
st_4.text=string(res)
end if
end choose
//
end if
El control ListView
Permite listar la informacin en una amplia variedad de formatos. Si se tiene en cuenta el control de
cuadro de lista de imgenes como un simple control de cuadro de lista que aade una serie de
imgenes, se puede pensar en el ListView como un cuadro de lista de imgenes con un par de
series de imgenes. Se utiliza el control ListView cuando se necesita para mostrar una coleccin
de elementos que constan de una etiqueta y un icono. Este control le permite presentar un conjunto
de informacin en una de cuatro maneras:
Large icon - Los elementos aparecen en forma de iconos, cada uno con una etiqueta debajo de
ella. El usuario puede arrastrar los iconos dentro de la vista.
Introduccin a la Programacin
en Power Builder
-. Pg. 35.-
Computacin II
Pequeo icono - Los artculos aparecen como iconos pequeos, cada uno con la etiqueta
hacia la derecha. El usuario tambin puede arrastrar estos iconos dentro de la vista.
Lista - Los artculos aparecen como iconos pequeos, cada uno con la etiqueta hacia la
derecha, en una columna y presentacin ordenada.
Introduccin a la Programacin
en Power Builder
-. Pg. 36.-
Computacin II
Informe - Los elementos aparecen en una lista de varias columnas, con la columna ms a la
izquierda que muestra el icono y la etiqueta. Puede definir tantas columnas adicionales como
sea necesario y especificar los datos correspondientes a aparecer en cada columna.
Para utilizar la vista del informe de este control, se debe especificar al menos una
columna. Esto slo puede hacerse a travs de una funcin PowerScript,
AddColumn (). De lo contrario, nada va a mostrar.
Introduccin a la Programacin
en Power Builder
-. Pg. 37.-
Computacin II
Propiedades ListView
Al abrir la hoja de propiedades de un control ListView se presentan una variedad de pginas de
fichas que le permiten personalizar el control.
Introduccin a la Programacin
en Power Builder
-. Pg. 38.-
Computacin II
Adems de especificar la forma en que desea que el ListView va aparecer y comportarse, puede
especificar los datos e imgenes usadas para crear el aspecto del control. Hay varias pginas con
pestaas que le ayudan a hacer esto: Gran Imagen, Imagen pequea, estatales y elementos. Los
tres primeros ayudan a especificar las imgenes (iconos) que se utilizan para los distintos puntos
de vista en el que el ListView se puede mostrar. Las imgenes generalmente se establecen en el
pintor y se asignan a los elementos en tiempo de ejecucin, aunque tambin se pueden asignar en
tiempo de diseo si la informacin del artculo es esttica. En cada una de las pginas de ficha
imagen, puede especificar las imgenes que se utilizarn, el color de la mscara de las imgenes,
as como su altura y anchura.
Las imgenes del estado se utilizan en el control para indicar que una accin ha
sido o est a punto de llevarse a cabo sobre el tema. Aparecer el cuadro de
estado en la esquina inferior izquierda del icono principal. Por ejemplo, el elemento
seleccionado se puede tener una idea del estado asociada con el que aparecer a
la izquierda de la imagen del artculo e indicar que el elemento actual ser parte de
una delecin grupo.
El control ListView tambin utiliza imgenes de superposicin, que son las imgenes que aparecen
en la parte superior de la imagen del producto y se utilizan para transmitir informacin adicional
sobre el estado del elemento. Imgenes de superposicin se discuten ms en la siguiente seccin.
Funciones ListView
Ahora que ha examinado las propiedades que estn disponibles para su uso en el desarrollo de un
control ListView, vamos a explorar las funciones asociadas y cmo interactan con las
propiedades.
Introduccin a la Programacin
en Power Builder
-. Pg. 39.-
Computacin II
Antes de hacer eso, el tipo de datos ListViewItem necesita ser introducido. Esta estructura se utiliza
para mantener la informacin sobre cada elemento del control ListView. Tiene las siguientes
propiedades:
1. CutHighLighted (Boolean) - El elemento se resalta y es el destino de una operacin de
corte.
2. Datos (Cualquiera) - El valor de los datos que desea asociar con el elemento.
3. DropHighLighted (Boolean) - El elemento se resalta y es el destino de un arrastrar y soltar.
4. HasFocus (Boolean) - El elemento tiene el foco.
5. Itemx (entero) - X del punto de coordenadas en el control ListView.
6. ItemY (entero) - Y del punto de coordenadas en el control ListView.
7. Label (String) - La etiqueta de texto del artculo.
8. OverlayPictureIndex (entero) - El nmero de ndice de la imagen en la lista de imgenes de
superposicin.
9. PictureIndex (entero) - El ndice dentro de la lista de imgenes del control que se utilizar
como icono del elemento.
10. Seleccionado (Boolean) - El artculo ha sido seleccionado.
11. StatePictureIndex (entero) - El ndice en la lista de imgenes de estado del control.
Debido a la estructura de la ListView puede ser algo compleja, el tipo de datos de ListViewItem
ayuda a simplificar el proceso. En lugar de crear las llamadas a funciones complejas con
numerosos argumentos opcionales, el tipo de datos ListViewItem permite especificar la informacin
que necesita, que luego se puede insertar en el control ListView. Estas son algunas de las
funciones-ListView especfica:
1. AddItem
Introduccin a la Programacin
en Power Builder
-. Pg. 40.-
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
Computacin II
en el ndice especificado ms 1, por lo que empezar desde el principio, el ndice debe ser
0.
FindItem ( nIndex , szSearchLabel , bPartial , bWrap ) - Se usa para buscar el siguiente
elemento que tiene la misma etiqueta que szSearchLabel . bPartial permite la bsqueda a
realizar una coincidencia parcial, y bWrap hace que el ndice de vuelta al primer punto
despus la llamada de funcin. nIndex es el ndice despus de lo cual debe comenzar la
bsqueda (recuerde poner a 0 para incluir el primer elemento de la bsqueda). La funcin
devuelve el ndice del elemento si se encuentra uno, y -1 si se produce un error.
GetItem ( nIndex , nColumn , szValue ) - Esta funcin se utiliza cuando el control ListView
se establece en el estilo de la vista Informe. nColumn representa el ndice de las columnas
del informe y, junto con nIndex, proporciona una referencia cruzada en el control para
extraer el valor en szValue .
GetItem ( nIndex , lviItem ) - Esta funcin recupera un objeto ListViewItem completa
en lviItem desde el ndice especificado en el control.
InsertItem ( nIndex , lviItem ) - Le permite especificar una estructura ListViewItem completa
para ser insertado en el ndice especificado.
InsertItem ( nIndex , szLabel , nPictureIndex ) - Esto le permite simplemente especifica un
nombre, su imagen para el elemento que desea insertar en el ndice especificado.
SetItem ( nIndex , nColumn , szValue ) -. Esta funcin se utiliza cuando el control ListView
se establece en el estilo de la vista Informe nColumn representa el ndice de las columnas
del informe, y junto con nIndexproporciona una referencia cruzada en el control para
ajustar el valor a szValue .
SetItem ( nIndex , lviItem ) - Ajusta el elemento en el ndice de los valores de una
estructura ListViewItem.
Sort ( SortType ) - Este ordena los elementos del control ListView utilizando un valor
enumerado de tipo grSortType: ascendente, descendente, Celebridad, o UserDefinedSort!
.
Sort ( SortType , nColumn ) - Cuando el control ListView est en modo de informe, esta
funcin le permite ordenar en una columna especfica.
AddLargePicture ( szPicture ), AddSmallPicture ( szPicture ) y AddStatePicture ( szPicture )
- Estas funciones se suman la imagen especificada en la lista de imgenes
correspondiente.
DeleteLargePicture ( nIndex ), DeleteSmallPicture ( nIndex ) y DeleteStatePicture
( nIndex ) - Estas funciones borrar la imagen que se especifica en la lista de imagen
correspondiente.
DeleteLargePictures (), DeleteSmallPictures (), y DeleteStatePictures () - Estas funciones
borran todas las imgenes de la lista de imgenes correspondiente.
SetOverLayPicture ( nOverlayIndex , nImageIndex ) - Esta funcin se utiliza para asignar
una imagen superpuesta a un ndice de lista de imgenes grandes o pequeas. En lugar
de mantener una lista de imgenes adicional, las superposiciones se asignan a la lista de
imgenes principal del control.
AddColumn ( szLabel , alineacin , nWidth ) - Esto aade una nueva columna con la
etiqueta especificada, alineacin y ancho.
DeleteColumn ( nIndex ) - Esto borra la columna correspondiente al ndice especificado.
DeleteColumns () - Esto borra todas las columnas.
GetColumn ( nIndex , szLabel , alineacin , nWidth ) - Esto extrae informacin sobre la
columna en el ndice especificado.
InsertColumn ( nIndex , szLabel , alineacin , nWidth ) - Se inserta una nueva columna en
el ndice solicitado, con la etiqueta, la alineacin y el ancho especificado.
Introduccin a la Programacin
en Power Builder
-. Pg. 41.-
Computacin II
26. SetColumn ( nIndex , szLabel , alineacin , nWidth ) - Esta funcin ajusta los valores de
etiqueta, alineacin y ancho de la columna especificada. Las columnas muestran slo en el
estilo de la vista Informe para el control.
27. TotalColumns () - Devuelve el nmero de columnas en el control.
28. GetOrigin ( nX , nY ) - Esta funcin se utiliza para encontrar la coordenadas X e Y de la
esquina superior izquierda del elemento ListView. Los parmetros nX y nY se utilizan para
recibir las coordenadas.
29. SelectedIndex () - Devuelve el ndice del elemento seleccionado en el control ListView. Si
ms de un elemento est seleccionado, la funcin devuelve el ndice del primer
elemento. De lo contrario, devuelve -1 en caso de un error o cuando no hay elementos
seleccionados.
La funcin SelectedIndex () slo se dise para los controles que permiten selecciones
individuales, y usted debe escribir su propio bucle de revisar individualmente la propiedad estatal
de cada elemento.
TotalItems () - Esta funcin devuelve el nmero total de elementos en el control.
TotalSelected () - Esta funcin devuelve el nmero total de elementos seleccionados en el
control.
Llenar un control ListView
Sobre la base de todas las propiedades y funciones tanto del control ListView y la estructura
ListViewItem, la siguiente pregunta es, cmo se ensamblan todas estas piezas en un control
utilizable? Aunque a primera vista esto puede parecer complejo, es un proceso bastante sencillo. El
siguiente cdigo del evento Constructor muestra cmo podra llenar un control ListView de un
almacn de datos:
ListViewItem llvi_cust
int li_numrows, i
lds_cust almacn de datos
SetPointer (HourGlass!)
lds_cust = CREAR almacn de datos
/ / Borrar la vista de lista de cualquier artculo antes
this.DeleteItems ()
/ / Establecer las columnas de la vista de informe
this.AddColumn ("Compaa", Izquierda!, 700)
this.AddColumn ("Contacto", Izquierda!, 500)
this.AddColumn ("Telfono", Izquierda!, 400)
/ / Recuperar los clientes
lds_cust.dataobject = "d_customer"
lds_cust.SetTransObject (SQLCA)
li_numrows = lds_cust.Retrieve ()
/ / Si hay filas recuperadas, ciclo a travs de todas las filas
Si li_numrows> 0 Then
/ / Llenar la vista de lista
Para i = 1 a li_numrows
llvi_cust.label = lds_cust.object.company_name [i] + "~ t" + &
lds_cust.object.contact [i] + "~ t" + &
Introduccin a la Programacin
en Power Builder
-. Pg. 42.-
Computacin II
Lo primero que se hace en este cdigo es que el control ListView suprimidos los artculos
anteriores utilizando la funcin () DeleteItems. Si desea dar al usuario la posibilidad de mostrar el
control ListView utilizando los cuatro puntos de vista diferentes, tiene que especificar cmo
aparecer el control cuando en la vista Informe. Los primeros tres puntos de vista (iconos grandes,
iconos pequeos, y Lista) todos utilizan el texto suministrado por la propiedad Label y las imgenes
especificadas para los distintos iconos.
La funcin AddColumn () se utiliza para definir cada una de las columnas que aparecern en el
control ListView. En este cdigo, se crean tres columnas que muestra el nombre de la empresa,
nombre de contacto y nmero de telfono. Se especifica cada columna como alineado a la
izquierda, y el ltimo argumento indica el tamao de cada columna. Las columnas deben ser
definidas antes de poder usar la vista Informe del ListView.
Despus de recuperar los datos en el almacn de datos, es necesario dar la vuelta a travs de
todas las filas recuperadas, ya que cada uno ser un nuevo elemento en el control ListView. Para
agregar un elemento en el control ListView, es necesario definir una variable de tipo ListViewItem y
asignar valores a sus propiedades.
La primera propiedad es la etiqueta, que es el texto que se muestra en el control ListView para
cada elemento. En este caso, la propiedad Label de llvi_cust se rellena con una cadena delimitado
por tabuladores que contiene el nombre de la empresa, nombre de contacto y nmero de
telfono. En Large Icon, Icon Pequeo y ListView, el nombre de la empresa es la nica informacin
que se mostrar. El resto de la informacin se utiliza cuando el control ListView muestra se
especifican en la vista Informe.
El orden de los valores colocados en la propiedad Label debe coincidir con el orden que ha
definido las columnas usando la funcin () AddColumns.
-. Pg. 43.-
Computacin II
Eventos ListView
Adems de las funciones y propiedades antes mencionadas, es posible que tenga que utilizar uno
de los muchos eventos especficos del control ListView:
BeginDrag - Se activa cuando el usuario utiliza el botn izquierdo del ratn y empieza a
arrastrar. El mango del ListViewItem el usuario est tratando de arrastrar est disponible
como un argumento de evento.
BeginLabelEdit - Se activa cuando el usuario empieza a editar una etiqueta del
elemento. La edicin se puede prevenir mediante la devolucin de un valor de 1 a partir de
este evento. El ndice del elemento que se encuentra disponible como un argumento.
BeginRightDrag - Se activa cuando el usuario utiliza el botn derecho del ratn y comienza
a arrastrar. El mango del ListViewItem el usuario est tratando de arrastrar est disponible
como un argumento de evento.
ColumnClick - Se activa cuando el usuario hace clic en una columna. La columna se pasa
como un parmetro.
DeleteAllItems - activa cuando se eliminan todos los elementos de la lista.
DeleteItem - Se activa cuando se elimina un elemento por el usuario utilizando una funcin
PowerScript.
EndLabelEdit - Se activa cuando el usuario ha terminado de editar una etiqueta. Puede
devolver 1 para descartar el cambio. El ndice del elemento y la nueva etiqueta estn
disponibles como parmetros.
InsertItem - Se activa cuando se aade un elemento. El nuevo ndice es disponible como
un parmetro.
ItemChanged - Se activa cuando algo en el tema ha cambiado. Estos son los parmetros
disponibles para determinar el cambio:
ndice - El elemento que est cambiando
FocusChange - El estado del foco que est cambiando
HasFocus - El nuevo estado del foco
SelectionChange - La seleccin del elemento que est cambiando
Seleccionado - El nuevo estado de la seleccin
OtherChange - En otro cambio que afecta al artculo
ItemChanging - Se activa cuando algo en el elemento est en el proceso de cambio. Puede
devolver 1 para evitar el cambio. Los mismos parmetros que el evento ItemChanged
estn disponibles.
RightClicked - Se activa cuando el control es clic derecho.
RightDoubleClicked - Se activa cuando el control se hace doble-clic derecho.
Ordenar - Se activa cuando la funcin Sort () se llama utilizando un argumento de
UserDefinedSort!. Para definir su propio criterio de ordenacin de los elementos, es
necesario establecer la propiedad SortType a UserDefinedSort! y luego devolver el
siguiente valor de retorno para los dos parmetros:
Introduccin a la Programacin
en Power Builder
-. Pg. 44.-